/* * Antisymmetric and symmetric biorthogonal quadrature filter coefficients. * * Copyright (C) 1991--94 Wickerhauser Consulting. All Rights Reserved. * May be freely copied for noncommercial use. See * ``Adapted Wavelet Analysis from Theory to Software'' ISBN 1-56881-041-5 * by Mladen Victor Wickerhauser [AK Peters, Ltd., Wellesley, Mass., 1994] */ #ifndef ASBQFS_HDR_ALREADY_INCLUDED #define ASBQFS_HDR_ALREADY_INCLUDED #include "real.h" /************************************************************************* * Antisymmetric (or symmetric) biorthogonal conjugate quadrature filters. * * Source: * Ingrid Daubechies, "Ten Lectures on Wavelets", p.277 * SIAM Press, Philadelphia, (1992) ISBN 0-89871-274-2 */ #define SQ2 (1.414213562373095) /* sqrt(2.0) */ #define SQ2OVER2E17 (SQ2/131072.0) /* sqrt(2.0)/(1<<17) */ #define SQ2OVER2E15 (SQ2/32768.0) /* sqrt(2.0)/(1<<15) */ #define SQ2OVER2E14 (SQ2/16384.0) /* sqrt(2.0)/(1<<14) */ static real d1hbqf[2] = { (1.0/2.0)*SQ2, (1.0/2.0)*SQ2 }; static int d1halpha = -1, d1homega = 0; static real d1gbqf[2] = { (1.0/2.0)*SQ2, (-1.0/2.0)*SQ2 }; static int d1galpha = -1, d1gomega = 0; static real d1h1bqf[2] = { (1.0/2.0)*SQ2, (1.0/2.0)*SQ2 }; static int d1h1alpha = -1, d1h1omega = 0; static real d1g1bqf[2] = { (1.0/2.0)*SQ2, (-1.0/2.0)*SQ2 }; static int d1g1alpha = -1, d1g1omega = 0; static real d1h3bqf[6] = { (-1.0/16.0)*SQ2, (1.0/16.0)*SQ2, (1.0/2.0)*SQ2, (1.0/2.0)*SQ2, (1.0/16.0)*SQ2, (-1.0/16.0)*SQ2 }; static int d1h3alpha = -3, d1h3omega = 2; static real d1g3bqf[6] = { (-1.0/16.0)*SQ2, (-1.0/16.0)*SQ2, (1.0/2.0)*SQ2, (-1.0/2.0)*SQ2, (1.0/16.0)*SQ2, (1.0/16.0)*SQ2 }; static int d1g3alpha = -3, d1g3omega = 2; static real d1h5bqf[10] = { (3.0/256.0)*SQ2, (-3.0/256.0)*SQ2, (-11.0/128.0)*SQ2, (11.0/128.0)*SQ2, (1.0/2.0)*SQ2, (1.0/2.0)*SQ2, (11.0/128.0)*SQ2, (-11.0/128.0)*SQ2, (-3.0/256.0)*SQ2, (3.0/256.0)*SQ2 }; static int d1h5alpha = -5, d1h5omega = 4; static real d1g5bqf[10] = { (3.0/256.0)*SQ2, (3.0/256.0)*SQ2, (-11.0/128.0)*SQ2, (-11.0/128.0)*SQ2, (1.0/2.0)*SQ2, (-1.0/2.0)*SQ2, (11.0/128.0)*SQ2, (11.0/128.0)*SQ2, (-3.0/256.0)*SQ2, (-3.0/256.0)*SQ2 }; static int d1g5alpha = -5, d1g5omega = 4; static real d2hbqf[3] = { (1.0/4.0)*SQ2, (1.0/2.0)*SQ2, (1.0/4.0)*SQ2 }; static int d2halpha = -1, d2homega = 1; static real d2gbqf[3] = { (-1.0/4.0)*SQ2, (1.0/2.0)*SQ2, (-1.0/4.0)*SQ2 }; static int d2galpha = 0, d2gomega = 2; static real d2h2bqf[5] = { (-1.0/8.0)*SQ2, (1.0/4.0)*SQ2, (3.0/4.0)*SQ2, (1.0/4.0)*SQ2, (-1.0/8.0)*SQ2 }; static int d2h2alpha = -2, d2h2omega = 2; static real d2g2bqf[5] = { (-1.0/8.0)*SQ2, (-1.0/4.0)*SQ2, (3.0/4.0)*SQ2, (-1.0/4.0)*SQ2, (-1.0/8.0)*SQ2 }; static int d2g2alpha = -1, d2g2omega = 3; static real d2h4bqf[9] = { (3.0/128.0)*SQ2, (-3.0/64.0)*SQ2, (-1.0/8.0)*SQ2, (19.0/64.0)*SQ2, (45.0/64.0)*SQ2, (19.0/64.0)*SQ2, (-1.0/8.0)*SQ2, (-3.0/64.0)*SQ2, (3.0/128.0)*SQ2 }; static int d2h4alpha = -4, d2h4omega = 4; static real d2g4bqf[9] = { (3.0/128.0)*SQ2, (3.0/64.0)*SQ2, (-1.0/8.0)*SQ2, (-19.0/64.0)*SQ2, (45.0/64.0)*SQ2, (-19.0/64.0)*SQ2, (-1.0/8.0)*SQ2, (3.0/64.0)*SQ2, (3.0/128.0)*SQ2 }; static int d2g4alpha = -3, d2g4omega = 5; static real d2h6bqf[13] = { (-5.0/1024.0)*SQ2, (5.0/512.0)*SQ2, (17.0/512.0)*SQ2, (-39.0/512.0)*SQ2, (-123.0/1024.0)*SQ2, (81.0/256.0)*SQ2, (175.0/256.0)*SQ2, (81.0/256.0)*SQ2, (-123.0/1024.0)*SQ2, (-39.0/512.0)*SQ2, (17.0/512.0)*SQ2, (5.0/512.0)*SQ2, (-5.0/1024.0)*SQ2 }; static int d2h6alpha = -6, d2h6omega = 6; static real d2g6bqf[13] = { (-5.0/1024.0)*SQ2, (-5.0/512.0)*SQ2, (17.0/512.0)*SQ2, (39.0/512.0)*SQ2, (-123.0/1024.0)*SQ2, (-81.0/256.0)*SQ2, (175.0/256.0)*SQ2, (-81.0/256.0)*SQ2, (-123.0/1024.0)*SQ2, (39.0/512.0)*SQ2, (17.0/512.0)*SQ2, (-5.0/512.0)*SQ2, (-5.0/1024.0)*SQ2 }; static int d2g6alpha = -5, d2g6omega = 7; static real d2h8bqf[17] = { 35.0*SQ2OVER2E15, -70.0*SQ2OVER2E15, -300.0*SQ2OVER2E15, 670.0*SQ2OVER2E15, 1228.0*SQ2OVER2E15, -3126.0*SQ2OVER2E15, -3796.0*SQ2OVER2E15, 10718.0*SQ2OVER2E15, 22050.0*SQ2OVER2E15, 10718.0*SQ2OVER2E15, -3796.0*SQ2OVER2E15, -3126.0*SQ2OVER2E15, 1228.0*SQ2OVER2E15, 670.0*SQ2OVER2E15, -300.0*SQ2OVER2E15, -70.0*SQ2OVER2E15, 35.0*SQ2OVER2E15 }; static int d2h8alpha = -8, d2h8omega = 8; static real d2g8bqf[17] = { 35.0*SQ2OVER2E15, 70.0*SQ2OVER2E15, -300.0*SQ2OVER2E15, -670.0*SQ2OVER2E15, 1228.0*SQ2OVER2E15, 3126.0*SQ2OVER2E15, -3796.0*SQ2OVER2E15, -10718.0*SQ2OVER2E15, 22050.0*SQ2OVER2E15, -10718.0*SQ2OVER2E15, -3796.0*SQ2OVER2E15, 3126.0*SQ2OVER2E15, 1228.0*SQ2OVER2E15, -670.0*SQ2OVER2E15, -300.0*SQ2OVER2E15, 70.0*SQ2OVER2E15, 35.0*SQ2OVER2E15 }; static int d2g8alpha = -7, d2g8omega = 9; static real d3hbqf[4] = { (1.0/8.0)*SQ2, (3.0/8.0)*SQ2, (3.0/8.0)*SQ2, (1.0/8.0)*SQ2 }; static int d3halpha = -2, d3homega = 1; static real d3gbqf[4] = { (-1.0/8.0)*SQ2, (3.0/8.0)*SQ2, (-3.0/8.0)*SQ2, (1.0/8.0)*SQ2 }; static int d3galpha = -2, d3gomega = 1; static real d3h1bqf[4] = { (-1.0/4.0)*SQ2, (3.0/4.0)*SQ2, (3.0/4.0)*SQ2, (-1.0/4.0)*SQ2 }; static int d3h1alpha = -2, d3h1omega = 1; static real d3g1bqf[4] = { (1.0/4.0)*SQ2, (3.0/4.0)*SQ2, (-3.0/4.0)*SQ2, (-1.0/4.0)*SQ2 }; static int d3g1alpha = -2, d3g1omega = 1; static real d3h3bqf[8] = { (3.0/64.0)*SQ2, (-9.0/64.0)*SQ2, (-7.0/64.0)*SQ2, (45.0/64.0)*SQ2, (45.0/64.0)*SQ2, (-7.0/64.0)*SQ2, (-9.0/64.0)*SQ2, (3.0/64.0)*SQ2, }; static int d3h3alpha = -4, d3h3omega = 3; static real d3g3bqf[8] = { (-3.0/64.0)*SQ2, (-9.0/64.0)*SQ2, (7.0/64.0)*SQ2, (45.0/64.0)*SQ2, (-45.0/64.0)*SQ2, (-7.0/64.0)*SQ2, (9.0/64.0)*SQ2, (3.0/64.0)*SQ2, }; static int d3g3alpha = -4, d3g3omega = 3; static real d3h5bqf[12] = { (-5.0/512.0)*SQ2, (15.0/512.0)*SQ2, (19.0/512.0)*SQ2, (-97.0/512.0)*SQ2, (-13.0/256.0)*SQ2, (175.0/256.0)*SQ2, (175.0/256.0)*SQ2, (-13.0/256.0)*SQ2, (-97.0/512.0)*SQ2, (19.0/512.0)*SQ2, (15.0/512.0)*SQ2, (-5.0/512.0)*SQ2 }; static int d3h5alpha = -6, d3h5omega = 5; static real d3g5bqf[12] = { (5.0/512.0)*SQ2, (15.0/512.0)*SQ2, (-19.0/512.0)*SQ2, (-97.0/512.0)*SQ2, (13.0/256.0)*SQ2, (175.0/256.0)*SQ2, (-175.0/256.0)*SQ2, (-13.0/256.0)*SQ2, (97.0/512.0)*SQ2, (19.0/512.0)*SQ2, (-15.0/512.0)*SQ2, (-5.0/512.0)*SQ2 }; static int d3g5alpha = -6, d3g5omega = 5; static real d3h7bqf[16] = { (35.0)*SQ2OVER2E14, (-105.0)*SQ2OVER2E14, (-195.0)*SQ2OVER2E14, (865.0)*SQ2OVER2E14, (363.0)*SQ2OVER2E14, (-3489.0)*SQ2OVER2E14, (-307.0)*SQ2OVER2E14, (11025.0)*SQ2OVER2E14, (11025.0)*SQ2OVER2E14, (-307.0)*SQ2OVER2E14, (-3489.0)*SQ2OVER2E14, (363.0)*SQ2OVER2E14, (865.0)*SQ2OVER2E14, (-195.0)*SQ2OVER2E14, (-105.0)*SQ2OVER2E14, (35.0)*SQ2OVER2E14 }; static int d3h7alpha = -8, d3h7omega = 7; static real d3g7bqf[16] = { (-35.0)*SQ2OVER2E14, (-105.0)*SQ2OVER2E14, (195.0)*SQ2OVER2E14, (865.0)*SQ2OVER2E14, (-363.0)*SQ2OVER2E14, (-3489.0)*SQ2OVER2E14, (307.0)*SQ2OVER2E14, (11025.0)*SQ2OVER2E14, (-11025.0)*SQ2OVER2E14, (-307.0)*SQ2OVER2E14, (3489.0)*SQ2OVER2E14, (363.0)*SQ2OVER2E14, (-865.0)*SQ2OVER2E14, (-195.0)*SQ2OVER2E14, (105.0)*SQ2OVER2E14, (35.0)*SQ2OVER2E14 }; static int d3g7alpha = -8, d3g7omega = 7; static real d3h9bqf[20] = { (-63.0)*SQ2OVER2E17, (189.0)*SQ2OVER2E17, (469.0)*SQ2OVER2E17, (-1911.0)*SQ2OVER2E17, (-1308.0)*SQ2OVER2E17, (9188.0)*SQ2OVER2E17, (1140.0)*SQ2OVER2E17, (-29676.0)*SQ2OVER2E17, (190.0)*SQ2OVER2E17, (87318.0)*SQ2OVER2E17, (87318.0)*SQ2OVER2E17, (190.0)*SQ2OVER2E17, (-29676.0)*SQ2OVER2E17, (1140.0)*SQ2OVER2E17, (9188.0)*SQ2OVER2E17, (-1308.0)*SQ2OVER2E17, (-1911.0)*SQ2OVER2E17, (469.0)*SQ2OVER2E17, (189.0)*SQ2OVER2E17, (-63.0)*SQ2OVER2E17 }; static int d3h9alpha = -10, d3h9omega = 9; static real d3g9bqf[20] = { (63.0)*SQ2OVER2E17, (189.0)*SQ2OVER2E17, (-469.0)*SQ2OVER2E17, (-1911.0)*SQ2OVER2E17, (1308.0)*SQ2OVER2E17, (9188.0)*SQ2OVER2E17, (-1140.0)*SQ2OVER2E17, (-29676.0)*SQ2OVER2E17, (-190.0)*SQ2OVER2E17, (87318.0)*SQ2OVER2E17, (-87318.0)*SQ2OVER2E17, (190.0)*SQ2OVER2E17, (29676.0)*SQ2OVER2E17, (1140.0)*SQ2OVER2E17, (-9188.0)*SQ2OVER2E17, (-1308.0)*SQ2OVER2E17, (1911.0)*SQ2OVER2E17, (469.0)*SQ2OVER2E17, (-189.0)*SQ2OVER2E17, (-63.0)*SQ2OVER2E17 }; static int d3g9alpha = -10, d3g9omega = 9; #undef SQ2 #undef SQ2OVER2E14 #undef SQ2OVER2E15 #undef SQ2OVER2E17 #endif /* ASBQFS_HDR_ALREADY_INCLUDED */