changeset 60:ba4076cb1be1

* Add wavelet filters from Thomas Wilmering
author cannam
date Thu, 02 Apr 2009 11:17:45 +0000
parents 2cfe2bc35367
children d5b6b88e2025
files dsp/tonal/TonalEstimator.h dsp/wavelet/Wavelet.cpp dsp/wavelet/Wavelet.h qm-dsp.pro
diffstat 4 files changed, 1923 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/dsp/tonal/TonalEstimator.h	Mon Mar 23 18:50:38 2009 +0000
+++ b/dsp/tonal/TonalEstimator.h	Thu Apr 02 11:17:45 2009 +0000
@@ -40,8 +40,8 @@
 		// normalize the chroma vector (L1 norm)
 		double dSum = 0.0;
 	
-		for (size_t i = 0; i < 12; (dSum += std::abs((*this)[i++])));
-		for (size_t i = 0; i < 12; dSum > 0.0000001?((*this)[i] /= dSum):(*this)[i]=0.0, i++);
+		for (size_t i = 0; i < 12; (dSum += std::abs((*this)[i++]))) ;
+		for (size_t i = 0; i < 12; dSum > 0.0000001?((*this)[i] /= dSum):(*this)[i]=0.0, i++) ;
 
 	}
 	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dsp/wavelet/Wavelet.cpp	Thu Apr 02 11:17:45 2009 +0000
@@ -0,0 +1,1844 @@
+/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */
+
+/*
+    QM DSP Library
+
+    Centre for Digital Music, Queen Mary, University of London.
+    This file copyright 2009 Thomas Wilmering.
+    All rights reserved.
+*/
+
+#include "Wavelet.h"
+
+#include <cassert>
+
+std::string
+Wavelet::getWaveletName(Type wavelet)
+{
+    switch (wavelet) {
+        case Haar: return "Haar";
+        case Daubechies_2: return "Daubechies 2";
+        case Daubechies_3: return "Daubechies 3";
+        case Daubechies_4: return "Daubechies 4";
+        case Daubechies_5: return "Daubechies 5";
+        case Daubechies_6: return "Daubechies 6";
+        case Daubechies_7: return "Daubechies 7";
+        case Daubechies_8: return "Daubechies 8";
+        case Daubechies_9: return "Daubechies 9";
+        case Daubechies_10: return "Daubechies 10";
+        case Daubechies_20: return "Daubechies 20";
+        case Daubechies_40: return "Daubechies 40";
+	case Symlet_2: return "Symlet 2";
+	case Symlet_3: return "Symlet 3";
+	case Symlet_4: return "Symlet 4";
+	case Symlet_5: return "Symlet 5";
+	case Symlet_6: return "Symlet 6";
+	case Symlet_7: return "Symlet 7";
+	case Symlet_8: return "Symlet 8";
+	case Symlet_9: return "Symlet 9";
+	case Symlet_10: return "Symlet 10";
+	case Symlet_20: return "Symlet 20";
+	case Symlet_30: return "Symlet 30";
+	case Coiflet_1: return "Coiflet 1";
+	case Coiflet_2: return "Coiflet 2";
+	case Coiflet_3: return "Coiflet 3";
+	case Coiflet_4: return "Coiflet 4";
+	case Coiflet_5: return "Coiflet 5";
+	case Biorthogonal_1_3: return "Biorthogonal 1.3";
+	case Biorthogonal_1_5: return "Biorthogonal 1.5";
+	case Biorthogonal_2_2: return "Biorthogonal 2.2";
+	case Biorthogonal_2_4: return "Biorthogonal 2.4";
+	case Biorthogonal_2_6: return "Biorthogonal 2.6";
+	case Biorthogonal_2_8: return "Biorthogonal 2.8";
+	case Biorthogonal_3_1: return "Biorthogonal 3.1";
+	case Biorthogonal_3_3: return "Biorthogonal 3.3";
+	case Biorthogonal_3_5: return "Biorthogonal 3.5";
+	case Biorthogonal_3_7: return "Biorthogonal 3.7";
+	case Biorthogonal_3_9: return "Biorthogonal 3.9";
+	case Biorthogonal_4_4: return "Biorthogonal 4.4";
+	case Biorthogonal_5_5: return "Biorthogonal 5.5";
+	case Biorthogonal_6_8: return "Biorthogonal 6.8";
+	case Meyer: return "Meyer";
+    }
+
+    return "(unknown)";
+}
+
+void
+Wavelet::createDecompositionFilters(Type wavelet,
+                                    std::vector<float> &lpd,
+                                    std::vector<float> &hpd)
+{
+    lpd.clear();
+    hpd.clear();
+
+    int flength = 0;
+	
+    switch (wavelet) {
+
+    case Haar: 
+        lpd.push_back(0.70710678118655);
+        lpd.push_back(0.70710678118655);
+        hpd.push_back(-0.70710678118655);
+        hpd.push_back(0.70710678118655);
+        flength = 2;
+        break;
+
+    case Daubechies_2:
+        lpd.push_back(-0.12940952255092);
+        lpd.push_back(0.22414386804186);
+        lpd.push_back(0.83651630373747);
+        lpd.push_back(0.48296291314469);
+        hpd.push_back(-0.48296291314469);
+        hpd.push_back(0.83651630373747);
+        hpd.push_back(-0.22414386804186);
+        hpd.push_back(-0.12940952255092);
+        flength = 4;
+        break;		
+
+    case Daubechies_3:
+        lpd.push_back(0.03522629188210);
+        lpd.push_back(-0.08544127388224);
+        lpd.push_back(-0.13501102001039);
+        lpd.push_back(0.45987750211933);
+        lpd.push_back(0.80689150931334);
+        lpd.push_back(0.33267055295096);
+        hpd.push_back(-0.33267055295096);
+        hpd.push_back(0.80689150931334);
+        hpd.push_back(-0.45987750211933);
+        hpd.push_back(-0.13501102001039);
+        hpd.push_back(0.08544127388224);
+        hpd.push_back(0.03522629188210);
+        flength = 6;
+        break;
+
+    case Daubechies_4:
+        lpd.push_back(-0.01059740178500);
+        lpd.push_back(0.03288301166698);
+        lpd.push_back(0.03084138183599);
+        lpd.push_back(-0.18703481171888);
+        lpd.push_back(-0.02798376941698);
+        lpd.push_back(0.63088076792959);
+        lpd.push_back(0.71484657055254);
+        lpd.push_back(0.23037781330886);
+        hpd.push_back(-0.23037781330886);
+        hpd.push_back(0.71484657055254);
+        hpd.push_back(-0.63088076792959);
+        hpd.push_back(-0.02798376941698);
+        hpd.push_back(0.18703481171888);
+        hpd.push_back(0.03084138183599);
+        hpd.push_back(-0.03288301166698);
+        hpd.push_back(-0.01059740178500);
+        flength = 8;
+        break;
+
+    case Daubechies_5:
+        lpd.push_back(0.00333572528500);
+        lpd.push_back(-0.01258075199902);
+        lpd.push_back(-0.00624149021301);
+        lpd.push_back(0.07757149384007);
+        lpd.push_back(-0.03224486958503);
+        lpd.push_back(-0.24229488706619);
+        lpd.push_back(0.13842814590110);
+        lpd.push_back(0.72430852843857);
+        lpd.push_back(0.60382926979747);
+        lpd.push_back(0.16010239797413);
+        hpd.push_back(-0.16010239797413);
+        hpd.push_back(0.60382926979747);
+        hpd.push_back(-0.72430852843857);
+        hpd.push_back(0.13842814590110);
+        hpd.push_back(0.24229488706619);
+        hpd.push_back(-0.03224486958503);
+        hpd.push_back(-0.07757149384007);
+        hpd.push_back(-0.00624149021301);
+        hpd.push_back(0.01258075199902);
+        hpd.push_back(0.00333572528500);
+        flength = 10;
+        break;
+
+    case Daubechies_6:
+        lpd.push_back(-0.00107730108500);
+        lpd.push_back(0.00477725751101);
+        lpd.push_back(0.00055384220099);
+        lpd.push_back(-0.03158203931803);
+        lpd.push_back(0.02752286553002);
+        lpd.push_back(0.09750160558708);
+        lpd.push_back(-0.12976686756710);
+        lpd.push_back(-0.22626469396517);
+        lpd.push_back(0.31525035170924);
+        lpd.push_back(0.75113390802158);
+        lpd.push_back(0.49462389039839);
+        lpd.push_back(0.11154074335008);
+        hpd.push_back(-0.11154074335008);
+        hpd.push_back(0.49462389039839);
+        hpd.push_back(-0.75113390802158);
+        hpd.push_back(0.31525035170924);
+        hpd.push_back(0.22626469396517);
+        hpd.push_back(-0.12976686756710);
+        hpd.push_back(-0.09750160558708);
+        hpd.push_back(0.02752286553002);
+        hpd.push_back(0.03158203931803);
+        hpd.push_back(0.00055384220099);
+        hpd.push_back(-0.00477725751101);
+        hpd.push_back(-0.00107730108500);
+        flength = 12;
+        break;
+
+    case Daubechies_7:
+        lpd.push_back(0.00035371380000);
+        lpd.push_back(-0.00180164070400);
+        lpd.push_back(0.00042957797300);
+        lpd.push_back(0.01255099855601);
+        lpd.push_back(-0.01657454163102);
+        lpd.push_back(-0.03802993693503);
+        lpd.push_back(0.08061260915107);
+        lpd.push_back(0.07130921926705);
+        lpd.push_back(-0.22403618499417);
+        lpd.push_back(-0.14390600392911);
+        lpd.push_back(0.46978228740536);
+        lpd.push_back(0.72913209084656);
+        lpd.push_back(0.39653931948231);
+        lpd.push_back(0.07785205408506);
+        hpd.push_back(-0.07785205408506);
+        hpd.push_back(0.39653931948231);
+        hpd.push_back(-0.72913209084656);
+        hpd.push_back(0.46978228740536);
+        hpd.push_back(0.14390600392911);
+        hpd.push_back(-0.22403618499417);
+        hpd.push_back(-0.07130921926705);
+        hpd.push_back(0.08061260915107);
+        hpd.push_back(0.03802993693503);
+        hpd.push_back(-0.01657454163102);
+        hpd.push_back(-0.01255099855601);
+        hpd.push_back(0.00042957797300);
+        hpd.push_back(0.00180164070400);
+        hpd.push_back(0.00035371380000);
+        flength = 14;
+        break;
+
+    case Daubechies_8:
+        lpd.push_back(-0.00011747678400);
+        lpd.push_back(0.00067544940600);
+        lpd.push_back(-0.00039174037300);
+        lpd.push_back(-0.00487035299301);
+        lpd.push_back(0.00874609404702);
+        lpd.push_back(0.01398102791702);
+        lpd.push_back(-0.04408825393106);
+        lpd.push_back(-0.01736930100202);
+        lpd.push_back(0.12874742662019);
+        lpd.push_back(0.00047248457400);
+        lpd.push_back(-0.28401554296243);
+        lpd.push_back(-0.01582910525602);
+        lpd.push_back(0.58535468365487);
+        lpd.push_back(0.67563073629801);
+        lpd.push_back(0.31287159091447);
+        lpd.push_back(0.05441584224308);
+        hpd.push_back(-0.05441584224308);
+        hpd.push_back(0.31287159091447);
+        hpd.push_back(-0.67563073629801);
+        hpd.push_back(0.58535468365487);
+        hpd.push_back(0.01582910525602);
+        hpd.push_back(-0.28401554296243);
+        hpd.push_back(-0.00047248457400);
+        hpd.push_back(0.12874742662019);
+        hpd.push_back(0.01736930100202);
+        hpd.push_back(-0.04408825393106);
+        hpd.push_back(-0.01398102791702);
+        hpd.push_back(0.00874609404702);
+        hpd.push_back(0.00487035299301);
+        hpd.push_back(-0.00039174037300);
+        hpd.push_back(-0.00067544940600);
+        hpd.push_back(-0.00011747678400);
+        flength = 16;
+        break;
+
+    case Daubechies_9:
+        lpd.push_back(0.00003934732000);
+        lpd.push_back(-0.00025196318900);
+        lpd.push_back(0.00023038576400);
+        lpd.push_back(0.00184764688296);
+        lpd.push_back(-0.00428150368190);
+        lpd.push_back(-0.00472320475789);
+        lpd.push_back(0.02236166212352);
+        lpd.push_back(0.00025094711499);
+        lpd.push_back(-0.06763282905952);
+        lpd.push_back(0.03072568147832);
+        lpd.push_back(0.14854074933476);
+        lpd.push_back(-0.09684078322088);
+        lpd.push_back(-0.29327378327259);
+        lpd.push_back(0.13319738582209);
+        lpd.push_back(0.65728807803664);
+        lpd.push_back(0.60482312367678);
+        lpd.push_back(0.24383467463767);
+        lpd.push_back(0.03807794736317);
+        hpd.push_back(-0.03807794736317);
+        hpd.push_back(0.24383467463767);
+        hpd.push_back(-0.60482312367678);
+        hpd.push_back(0.65728807803664);
+        hpd.push_back(-0.13319738582209);
+        hpd.push_back(-0.29327378327259);
+        hpd.push_back(0.09684078322088);
+        hpd.push_back(0.14854074933476);
+        hpd.push_back(-0.03072568147832);
+        hpd.push_back(-0.06763282905952);
+        hpd.push_back(-0.00025094711499);
+        hpd.push_back(0.02236166212352);
+        hpd.push_back(0.00472320475789);
+        hpd.push_back(-0.00428150368190);
+        hpd.push_back(-0.00184764688296);
+        hpd.push_back(0.00023038576400);
+        hpd.push_back(0.00025196318900);
+        hpd.push_back(0.00003934732000);
+        flength = 18;
+        break;
+
+    case Daubechies_10:
+        lpd.push_back(-0.00001326420300);
+        lpd.push_back(0.00009358867000);
+        lpd.push_back(-0.00011646685499);
+        lpd.push_back(-0.00068585669500);
+        lpd.push_back(0.00199240529499);
+        lpd.push_back(0.00139535174699);
+        lpd.push_back(-0.01073317548298);
+        lpd.push_back(0.00360655356699);
+        lpd.push_back(0.03321267405893);
+        lpd.push_back(-0.02945753682195);
+        lpd.push_back(-0.07139414716586);
+        lpd.push_back(0.09305736460381);
+        lpd.push_back(0.12736934033574);
+        lpd.push_back(-0.19594627437660);
+        lpd.push_back(-0.24984642432649);
+        lpd.push_back(0.28117234366043);
+        lpd.push_back(0.68845903945259);
+        lpd.push_back(0.52720118893092);
+        lpd.push_back(0.18817680007762);
+        lpd.push_back(0.02667005790095);
+        hpd.push_back(-0.02667005790095);
+        hpd.push_back(0.18817680007762);
+        hpd.push_back(-0.52720118893092);
+        hpd.push_back(0.68845903945259);
+        hpd.push_back(-0.28117234366043);
+        hpd.push_back(-0.24984642432649);
+        hpd.push_back(0.19594627437660);
+        hpd.push_back(0.12736934033574);
+        hpd.push_back(-0.09305736460381);
+        hpd.push_back(-0.07139414716586);
+        hpd.push_back(0.02945753682195);
+        hpd.push_back(0.03321267405893);
+        hpd.push_back(-0.00360655356699);
+        hpd.push_back(-0.01073317548298);
+        hpd.push_back(-0.00139535174699);
+        hpd.push_back(0.00199240529499);
+        hpd.push_back(0.00068585669500);
+        hpd.push_back(-0.00011646685499);
+        hpd.push_back(-0.00009358867000);
+        hpd.push_back(-0.00001326420300);
+        flength = 20;
+        break;
+
+    case Daubechies_20:
+        lpd.push_back(-0.00000000029988);
+        lpd.push_back(0.00000000405613);
+        lpd.push_back(-0.00000001814843);
+        lpd.push_back(0.00000000020143);
+        lpd.push_back(0.00000026339242);
+        lpd.push_back(-0.00000068470796);
+        lpd.push_back(-0.00000101199401);
+        lpd.push_back(0.00000724124829);
+        lpd.push_back(-0.00000437614386);
+        lpd.push_back(-0.00003710586183);
+        lpd.push_back(0.00006774280828);
+        lpd.push_back(0.00010153288973);
+        lpd.push_back(-0.00038510474870);
+        lpd.push_back(-0.00005349759845);
+        lpd.push_back(0.00139255961930);
+        lpd.push_back(-0.00083156217284);
+        lpd.push_back(-0.00358149425960);
+        lpd.push_back(0.00442054238705);
+        lpd.push_back(0.00672162730228);
+        lpd.push_back(-0.01381052613705);
+        lpd.push_back(-0.00878932492387);
+        lpd.push_back(0.03229429953057);
+        lpd.push_back(0.00587468181179);
+        lpd.push_back(-0.06172289962416);
+        lpd.push_back(0.00563224685793);
+        lpd.push_back(0.10229171917503);
+        lpd.push_back(-0.02471682733721);
+        lpd.push_back(-0.15545875070532);
+        lpd.push_back(0.03985024645854);
+        lpd.push_back(0.22829105081947);
+        lpd.push_back(-0.01672708830868);
+        lpd.push_back(-0.32678680043239);
+        lpd.push_back(-0.13921208801080);
+        lpd.push_back(0.36150229873767);
+        lpd.push_back(0.61049323893578);
+        lpd.push_back(0.47269618530872);
+        lpd.push_back(0.21994211355038);
+        lpd.push_back(0.06342378045879);
+        lpd.push_back(0.01054939462490);
+        lpd.push_back(0.00077995361366);
+        hpd.push_back(-0.00077995361366);
+        hpd.push_back(0.01054939462490);
+        hpd.push_back(-0.06342378045879);
+        hpd.push_back(0.21994211355038);
+        hpd.push_back(-0.47269618530872);
+        hpd.push_back(0.61049323893578);
+        hpd.push_back(-0.36150229873767);
+        hpd.push_back(-0.13921208801080);
+        hpd.push_back(0.32678680043239);
+        hpd.push_back(-0.01672708830868);
+        hpd.push_back(-0.22829105081947);
+        hpd.push_back(0.03985024645854);
+        hpd.push_back(0.15545875070532);
+        hpd.push_back(-0.02471682733721);
+        hpd.push_back(-0.10229171917503);
+        hpd.push_back(0.00563224685793);
+        hpd.push_back(0.06172289962416);
+        hpd.push_back(0.00587468181179);
+        hpd.push_back(-0.03229429953057);
+        hpd.push_back(-0.00878932492387);
+        hpd.push_back(0.01381052613705);
+        hpd.push_back(0.00672162730228);
+        hpd.push_back(-0.00442054238705);
+        hpd.push_back(-0.00358149425960);
+        hpd.push_back(0.00083156217284);
+        hpd.push_back(0.00139255961930);
+        hpd.push_back(0.00005349759845);
+        hpd.push_back(-0.00038510474870);
+        hpd.push_back(-0.00010153288973);
+        hpd.push_back(0.00006774280828);
+        hpd.push_back(0.00003710586183);
+        hpd.push_back(-0.00000437614386);
+        hpd.push_back(-0.00000724124829);
+        hpd.push_back(-0.00000101199401);
+        hpd.push_back(0.00000068470796);
+        hpd.push_back(0.00000026339242);
+        hpd.push_back(-0.00000000020143);
+        hpd.push_back(-0.00000001814843);
+        hpd.push_back(-0.00000000405613);
+        hpd.push_back(-0.00000000029988);
+        flength = 40;
+        break;
+
+    case Daubechies_40:
+        lpd.push_back(-0.00000000000000);
+        lpd.push_back(0.00000000000000);
+        lpd.push_back(-0.00000000000000);
+        lpd.push_back(0.00000000000000);
+        lpd.push_back(-0.00000000000000);
+        lpd.push_back(-0.00000000000001);
+        lpd.push_back(0.00000000000003);
+        lpd.push_back(-0.00000000000001);
+        lpd.push_back(-0.00000000000037);
+        lpd.push_back(0.00000000000121);
+        lpd.push_back(0.00000000000108);
+        lpd.push_back(-0.00000000001441);
+        lpd.push_back(0.00000000001995);
+        lpd.push_back(0.00000000008134);
+        lpd.push_back(-0.00000000029288);
+        lpd.push_back(-0.00000000009963);
+        lpd.push_back(0.00000000205938);
+        lpd.push_back(-0.00000000227332);
+        lpd.push_back(-0.00000000873967);
+        lpd.push_back(0.00000002288390);
+        lpd.push_back(0.00000001741059);
+        lpd.push_back(-0.00000012745008);
+        lpd.push_back(0.00000005361186);
+        lpd.push_back(0.00000048834273);
+        lpd.push_back(-0.00000066863337);
+        lpd.push_back(-0.00000128043283);
+        lpd.push_back(0.00000350778202);
+        lpd.push_back(0.00000165493877);
+        lpd.push_back(-0.00001288842174);
+        lpd.push_back(0.00000406557792);
+        lpd.push_back(0.00003629399945);
+        lpd.push_back(-0.00003566632371);
+        lpd.push_back(-0.00007878802614);
+        lpd.push_back(0.00014251943335);
+        lpd.push_back(0.00012109867291);
+        lpd.push_back(-0.00041818330353);
+        lpd.push_back(-0.00007088554491);
+        lpd.push_back(0.00099285797789);
+        lpd.push_back(-0.00031193527356);
+        lpd.push_back(-0.00197480748041);
+        lpd.push_back(0.00148388984367);
+        lpd.push_back(0.00332132500594);
+        lpd.push_back(-0.00412431015737);
+        lpd.push_back(-0.00467322831674);
+        lpd.push_back(0.00901902126682);
+        lpd.push_back(0.00524573780794);
+        lpd.push_back(-0.01682072694998);
+        lpd.push_back(-0.00388701203892);
+        lpd.push_back(0.02781129406516);
+        lpd.push_back(-0.00059370667303);
+        lpd.push_back(-0.04179364874023);
+        lpd.push_back(0.00895082555981);
+        lpd.push_back(0.05834125954654);
+        lpd.push_back(-0.02094317414735);
+        lpd.push_back(-0.07729538082012);
+        lpd.push_back(0.03492832601473);
+        lpd.push_back(0.09941959711973);
+        lpd.push_back(-0.04741061635274);
+        lpd.push_back(-0.12673146574763);
+        lpd.push_back(0.05216571236437);
+        lpd.push_back(0.16185493481917);
+        lpd.push_back(-0.03814703831047);
+        lpd.push_back(-0.20452405393126);
+        lpd.push_back(-0.01395065907035);
+        lpd.push_back(0.24017584511066);
+        lpd.push_back(0.13119716231525);
+        lpd.push_back(-0.21027451192673);
+        lpd.push_back(-0.31275608334174);
+        lpd.push_back(-0.02817037418845);
+        lpd.push_back(0.35209361261033);
+        lpd.push_back(0.51902874766301);
+        lpd.push_back(0.43815806016110);
+        lpd.push_back(0.25977619424035);
+        lpd.push_back(0.11476477757177);
+        lpd.push_back(0.03842788992792);
+        lpd.push_back(0.00969841552091);
+        lpd.push_back(0.00179808920458);
+        lpd.push_back(0.00023209364055);
+        lpd.push_back(0.00001869221611);
+        lpd.push_back(0.00000070900603);
+        hpd.push_back(-0.00000070900603);
+        hpd.push_back(0.00001869221611);
+        hpd.push_back(-0.00023209364055);
+        hpd.push_back(0.00179808920458);
+        hpd.push_back(-0.00969841552091);
+        hpd.push_back(0.03842788992792);
+        hpd.push_back(-0.11476477757177);
+        hpd.push_back(0.25977619424035);
+        hpd.push_back(-0.43815806016110);
+        hpd.push_back(0.51902874766301);
+        hpd.push_back(-0.35209361261033);
+        hpd.push_back(-0.02817037418845);
+        hpd.push_back(0.31275608334174);
+        hpd.push_back(-0.21027451192673);
+        hpd.push_back(-0.13119716231525);
+        hpd.push_back(0.24017584511066);
+        hpd.push_back(0.01395065907035);
+        hpd.push_back(-0.20452405393126);
+        hpd.push_back(0.03814703831047);
+        hpd.push_back(0.16185493481917);
+        hpd.push_back(-0.05216571236437);
+        hpd.push_back(-0.12673146574763);
+        hpd.push_back(0.04741061635274);
+        hpd.push_back(0.09941959711973);
+        hpd.push_back(-0.03492832601473);
+        hpd.push_back(-0.07729538082012);
+        hpd.push_back(0.02094317414735);
+        hpd.push_back(0.05834125954654);
+        hpd.push_back(-0.00895082555981);
+        hpd.push_back(-0.04179364874023);
+        hpd.push_back(0.00059370667303);
+        hpd.push_back(0.02781129406516);
+        hpd.push_back(0.00388701203892);
+        hpd.push_back(-0.01682072694998);
+        hpd.push_back(-0.00524573780794);
+        hpd.push_back(0.00901902126682);
+        hpd.push_back(0.00467322831674);
+        hpd.push_back(-0.00412431015737);
+        hpd.push_back(-0.00332132500594);
+        hpd.push_back(0.00148388984367);
+        hpd.push_back(0.00197480748041);
+        hpd.push_back(-0.00031193527356);
+        hpd.push_back(-0.00099285797789);
+        hpd.push_back(-0.00007088554491);
+        hpd.push_back(0.00041818330353);
+        hpd.push_back(0.00012109867291);
+        hpd.push_back(-0.00014251943335);
+        hpd.push_back(-0.00007878802614);
+        hpd.push_back(0.00003566632371);
+        hpd.push_back(0.00003629399945);
+        hpd.push_back(-0.00000406557792);
+        hpd.push_back(-0.00001288842174);
+        hpd.push_back(-0.00000165493877);
+        hpd.push_back(0.00000350778202);
+        hpd.push_back(0.00000128043283);
+        hpd.push_back(-0.00000066863337);
+        hpd.push_back(-0.00000048834273);
+        hpd.push_back(0.00000005361186);
+        hpd.push_back(0.00000012745008);
+        hpd.push_back(0.00000001741059);
+        hpd.push_back(-0.00000002288390);
+        hpd.push_back(-0.00000000873967);
+        hpd.push_back(0.00000000227332);
+        hpd.push_back(0.00000000205938);
+        hpd.push_back(0.00000000009963);
+        hpd.push_back(-0.00000000029288);
+        hpd.push_back(-0.00000000008134);
+        hpd.push_back(0.00000000001995);
+        hpd.push_back(0.00000000001441);
+        hpd.push_back(0.00000000000108);
+        hpd.push_back(-0.00000000000121);
+        hpd.push_back(-0.00000000000037);
+        hpd.push_back(0.00000000000001);
+        hpd.push_back(0.00000000000003);
+        hpd.push_back(0.00000000000001);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        flength = 80;
+        break;
+			
+    case Symlet_2:
+        lpd.push_back(-0.12940952255092);
+        lpd.push_back(0.22414386804186);
+        lpd.push_back(0.83651630373747);
+        lpd.push_back(0.48296291314469);
+        hpd.push_back(-0.48296291314469);
+        hpd.push_back(0.83651630373747);
+        hpd.push_back(-0.22414386804186);
+        hpd.push_back(-0.12940952255092);
+        flength = 4;
+        break;
+
+    case Symlet_3:
+        lpd.push_back(0.03522629188210);
+        lpd.push_back(-0.08544127388224);
+        lpd.push_back(-0.13501102001039);
+        lpd.push_back(0.45987750211933);
+        lpd.push_back(0.80689150931334);
+        lpd.push_back(0.33267055295096);
+        hpd.push_back(-0.33267055295096);
+        hpd.push_back(0.80689150931334);
+        hpd.push_back(-0.45987750211933);
+        hpd.push_back(-0.13501102001039);
+        hpd.push_back(0.08544127388224);
+        hpd.push_back(0.03522629188210);
+        flength = 6;
+        break;
+
+    case Symlet_4:
+        lpd.push_back(-0.07576571478927);
+        lpd.push_back(-0.02963552764600);
+        lpd.push_back(0.49761866763202);
+        lpd.push_back(0.80373875180592);
+        lpd.push_back(0.29785779560528);
+        lpd.push_back(-0.09921954357685);
+        lpd.push_back(-0.01260396726204);
+        lpd.push_back(0.03222310060404);
+        hpd.push_back(-0.03222310060404);
+        hpd.push_back(-0.01260396726204);
+        hpd.push_back(0.09921954357685);
+        hpd.push_back(0.29785779560528);
+        hpd.push_back(-0.80373875180592);
+        hpd.push_back(0.49761866763202);
+        hpd.push_back(0.02963552764600);
+        hpd.push_back(-0.07576571478927);
+        flength = 8;
+        break;
+
+    case Symlet_5:
+        lpd.push_back(0.02733306834508);
+        lpd.push_back(0.02951949092577);
+        lpd.push_back(-0.03913424930238);
+        lpd.push_back(0.19939753397739);
+        lpd.push_back(0.72340769040242);
+        lpd.push_back(0.63397896345821);
+        lpd.push_back(0.01660210576452);
+        lpd.push_back(-0.17532808990845);
+        lpd.push_back(-0.02110183402476);
+        lpd.push_back(0.01953888273529);
+        hpd.push_back(-0.01953888273529);
+        hpd.push_back(-0.02110183402476);
+        hpd.push_back(0.17532808990845);
+        hpd.push_back(0.01660210576452);
+        hpd.push_back(-0.63397896345821);
+        hpd.push_back(0.72340769040242);
+        hpd.push_back(-0.19939753397739);
+        hpd.push_back(-0.03913424930238);
+        hpd.push_back(-0.02951949092577);
+        hpd.push_back(0.02733306834508);
+        flength = 10;
+        break;
+
+    case Symlet_6:
+        lpd.push_back(0.01540410932703);
+        lpd.push_back(0.00349071208422);
+        lpd.push_back(-0.11799011114819);
+        lpd.push_back(-0.04831174258563);
+        lpd.push_back(0.49105594192675);
+        lpd.push_back(0.78764114103019);
+        lpd.push_back(0.33792942172762);
+        lpd.push_back(-0.07263752278646);
+        lpd.push_back(-0.02106029251230);
+        lpd.push_back(0.04472490177067);
+        lpd.push_back(0.00176771186424);
+        lpd.push_back(-0.00780070832503);
+        hpd.push_back(0.00780070832503);
+        hpd.push_back(0.00176771186424);
+        hpd.push_back(-0.04472490177067);
+        hpd.push_back(-0.02106029251230);
+        hpd.push_back(0.07263752278646);
+        hpd.push_back(0.33792942172762);
+        hpd.push_back(-0.78764114103019);
+        hpd.push_back(0.49105594192675);
+        hpd.push_back(0.04831174258563);
+        hpd.push_back(-0.11799011114819);
+        hpd.push_back(-0.00349071208422);
+        hpd.push_back(0.01540410932703);
+        flength = 12;
+        break;
+			
+    case Symlet_7:
+        lpd.push_back(0.00268181456826);
+        lpd.push_back(-0.00104738488868);
+        lpd.push_back(-0.01263630340325);
+        lpd.push_back(0.03051551316596);
+        lpd.push_back(0.06789269350137);
+        lpd.push_back(-0.04955283493713);
+        lpd.push_back(0.01744125508686);
+        lpd.push_back(0.53610191709176);
+        lpd.push_back(0.76776431700316);
+        lpd.push_back(0.28862963175151);
+        lpd.push_back(-0.14004724044296);
+        lpd.push_back(-0.10780823770382);
+        lpd.push_back(0.00401024487153);
+        lpd.push_back(0.01026817670851);
+        hpd.push_back(-0.01026817670851);
+        hpd.push_back(0.00401024487153);
+        hpd.push_back(0.10780823770382);
+        hpd.push_back(-0.14004724044296);
+        hpd.push_back(-0.28862963175151);
+        hpd.push_back(0.76776431700316);
+        hpd.push_back(-0.53610191709176);
+        hpd.push_back(0.01744125508686);
+        hpd.push_back(0.04955283493713);
+        hpd.push_back(0.06789269350137);
+        hpd.push_back(-0.03051551316596);
+        hpd.push_back(-0.01263630340325);
+        hpd.push_back(0.00104738488868);
+        hpd.push_back(0.00268181456826);
+        flength = 14;
+        break;
+
+    case Symlet_8:
+        lpd.push_back(-0.00338241595101);
+        lpd.push_back(-0.00054213233179);
+        lpd.push_back(0.03169508781149);
+        lpd.push_back(0.00760748732492);
+        lpd.push_back(-0.14329423835081);
+        lpd.push_back(-0.06127335906766);
+        lpd.push_back(0.48135965125837);
+        lpd.push_back(0.77718575170052);
+        lpd.push_back(0.36444189483533);
+        lpd.push_back(-0.05194583810771);
+        lpd.push_back(-0.02721902991706);
+        lpd.push_back(0.04913717967361);
+        lpd.push_back(0.00380875201389);
+        lpd.push_back(-0.01495225833705);
+        lpd.push_back(-0.00030292051472);
+        lpd.push_back(0.00188995033276);
+        hpd.push_back(-0.00188995033276);
+        hpd.push_back(-0.00030292051472);
+        hpd.push_back(0.01495225833705);
+        hpd.push_back(0.00380875201389);
+        hpd.push_back(-0.04913717967361);
+        hpd.push_back(-0.02721902991706);
+        hpd.push_back(0.05194583810771);
+        hpd.push_back(0.36444189483533);
+        hpd.push_back(-0.77718575170052);
+        hpd.push_back(0.48135965125837);
+        hpd.push_back(0.06127335906766);
+        hpd.push_back(-0.14329423835081);
+        hpd.push_back(-0.00760748732492);
+        hpd.push_back(0.03169508781149);
+        hpd.push_back(0.00054213233179);
+        hpd.push_back(-0.00338241595101);
+        flength = 16;
+        break;
+
+    case Symlet_9:
+        lpd.push_back(0.00140091552591);
+        lpd.push_back(0.00061978088899);
+        lpd.push_back(-0.01327196778182);
+        lpd.push_back(-0.01152821020768);
+        lpd.push_back(0.03022487885828);
+        lpd.push_back(0.00058346274612);
+        lpd.push_back(-0.05456895843083);
+        lpd.push_back(0.23876091460730);
+        lpd.push_back(0.71789708276441);
+        lpd.push_back(0.61733844914094);
+        lpd.push_back(0.03527248803527);
+        lpd.push_back(-0.19155083129728);
+        lpd.push_back(-0.01823377077940);
+        lpd.push_back(0.06207778930289);
+        lpd.push_back(0.00885926749340);
+        lpd.push_back(-0.01026406402763);
+        lpd.push_back(-0.00047315449868);
+        lpd.push_back(0.00106949003291);
+        hpd.push_back(-0.00106949003291);
+        hpd.push_back(-0.00047315449868);
+        hpd.push_back(0.01026406402763);
+        hpd.push_back(0.00885926749340);
+        hpd.push_back(-0.06207778930289);
+        hpd.push_back(-0.01823377077940);
+        hpd.push_back(0.19155083129728);
+        hpd.push_back(0.03527248803527);
+        hpd.push_back(-0.61733844914094);
+        hpd.push_back(0.71789708276441);
+        hpd.push_back(-0.23876091460730);
+        hpd.push_back(-0.05456895843083);
+        hpd.push_back(-0.00058346274612);
+        hpd.push_back(0.03022487885828);
+        hpd.push_back(0.01152821020768);
+        hpd.push_back(-0.01327196778182);
+        hpd.push_back(-0.00061978088899);
+        hpd.push_back(0.00140091552591);
+        flength = 18;
+        break;
+
+    case Symlet_10:
+        lpd.push_back(0.00077015980911);
+        lpd.push_back(0.00009563267072);
+        lpd.push_back(-0.00864129927702);
+        lpd.push_back(-0.00146538258130);
+        lpd.push_back(0.04592723923109);
+        lpd.push_back(0.01160989390371);
+        lpd.push_back(-0.15949427888491);
+        lpd.push_back(-0.07088053578323);
+        lpd.push_back(0.47169066693845);
+        lpd.push_back(0.76951003702110);
+        lpd.push_back(0.38382676106707);
+        lpd.push_back(-0.03553674047383);
+        lpd.push_back(-0.03199005688243);
+        lpd.push_back(0.04999497207737);
+        lpd.push_back(0.00576491203358);
+        lpd.push_back(-0.02035493981231);
+        lpd.push_back(-0.00080435893202);
+        lpd.push_back(0.00459317358531);
+        lpd.push_back(0.00005703608362);
+        lpd.push_back(-0.00045932942100);
+        hpd.push_back(0.00045932942100);
+        hpd.push_back(0.00005703608362);
+        hpd.push_back(-0.00459317358531);
+        hpd.push_back(-0.00080435893202);
+        hpd.push_back(0.02035493981231);
+        hpd.push_back(0.00576491203358);
+        hpd.push_back(-0.04999497207737);
+        hpd.push_back(-0.03199005688243);
+        hpd.push_back(0.03553674047383);
+        hpd.push_back(0.38382676106707);
+        hpd.push_back(-0.76951003702110);
+        hpd.push_back(0.47169066693845);
+        hpd.push_back(0.07088053578323);
+        hpd.push_back(-0.15949427888491);
+        hpd.push_back(-0.01160989390371);
+        hpd.push_back(0.04592723923109);
+        hpd.push_back(0.00146538258130);
+        hpd.push_back(-0.00864129927702);
+        hpd.push_back(-0.00009563267072);
+        hpd.push_back(0.00077015980911);
+        flength = 20;
+        break;
+
+    case Symlet_20:
+        lpd.push_back(0.00000036955375);
+        lpd.push_back(-0.00000019015676);
+        lpd.push_back(-0.00000791936141);
+        lpd.push_back(0.00000302566606);
+        lpd.push_back(0.00007992967836);
+        lpd.push_back(-0.00001928412301);
+        lpd.push_back(-0.00049473109157);
+        lpd.push_back(0.00007215991188);
+        lpd.push_back(0.00208899470819);
+        lpd.push_back(-0.00030526283181);
+        lpd.push_back(-0.00660658579912);
+        lpd.push_back(0.00142308735944);
+        lpd.push_back(0.01700404902335);
+        lpd.push_back(-0.00331385738375);
+        lpd.push_back(-0.03162943714501);
+        lpd.push_back(0.00812322835637);
+        lpd.push_back(0.02557934951027);
+        lpd.push_back(-0.07899434492693);
+        lpd.push_back(-0.02981936887758);
+        lpd.push_back(0.40583144435233);
+        lpd.push_back(0.75116272842520);
+        lpd.push_back(0.47199147510012);
+        lpd.push_back(-0.05108834292497);
+        lpd.push_back(-0.16057829841831);
+        lpd.push_back(0.03625095165278);
+        lpd.push_back(0.08891966802764);
+        lpd.push_back(-0.00684370196580);
+        lpd.push_back(-0.03537333675714);
+        lpd.push_back(0.00193859706711);
+        lpd.push_back(0.01215704094879);
+        lpd.push_back(-0.00061112638583);
+        lpd.push_back(-0.00347164780287);
+        lpd.push_back(0.00012544091723);
+        lpd.push_back(0.00074761085979);
+        lpd.push_back(-0.00002661555034);
+        lpd.push_back(-0.00011739133516);
+        lpd.push_back(0.00000452542221);
+        lpd.push_back(0.00001228725278);
+        lpd.push_back(-0.00000032567026);
+        lpd.push_back(-0.00000063291290);
+        hpd.push_back(0.00000063291290);
+        hpd.push_back(-0.00000032567026);
+        hpd.push_back(-0.00001228725278);
+        hpd.push_back(0.00000452542221);
+        hpd.push_back(0.00011739133516);
+        hpd.push_back(-0.00002661555034);
+        hpd.push_back(-0.00074761085979);
+        hpd.push_back(0.00012544091723);
+        hpd.push_back(0.00347164780287);
+        hpd.push_back(-0.00061112638583);
+        hpd.push_back(-0.01215704094879);
+        hpd.push_back(0.00193859706711);
+        hpd.push_back(0.03537333675714);
+        hpd.push_back(-0.00684370196580);
+        hpd.push_back(-0.08891966802764);
+        hpd.push_back(0.03625095165278);
+        hpd.push_back(0.16057829841831);
+        hpd.push_back(-0.05108834292497);
+        hpd.push_back(-0.47199147510012);
+        hpd.push_back(0.75116272842520);
+        hpd.push_back(-0.40583144435233);
+        hpd.push_back(-0.02981936887758);
+        hpd.push_back(0.07899434492693);
+        hpd.push_back(0.02557934951027);
+        hpd.push_back(-0.00812322835637);
+        hpd.push_back(-0.03162943714501);
+        hpd.push_back(0.00331385738375);
+        hpd.push_back(0.01700404902335);
+        hpd.push_back(-0.00142308735944);
+        hpd.push_back(-0.00660658579912);
+        hpd.push_back(0.00030526283181);
+        hpd.push_back(0.00208899470819);
+        hpd.push_back(-0.00007215991188);
+        hpd.push_back(-0.00049473109157);
+        hpd.push_back(0.00001928412301);
+        hpd.push_back(0.00007992967836);
+        hpd.push_back(-0.00000302566606);
+        hpd.push_back(-0.00000791936141);
+        hpd.push_back(0.00000019015676);
+        hpd.push_back(0.00000036955375);
+        flength = 40;
+        break;
+
+    case Symlet_30:
+        lpd.push_back(-0.00000000032641);
+        lpd.push_back(0.00000000014934);
+        lpd.push_back(0.00000001014810);
+        lpd.push_back(-0.00000000380480);
+        lpd.push_back(-0.00000014986093);
+        lpd.push_back(0.00000005465704);
+        lpd.push_back(0.00000142300535);
+        lpd.push_back(-0.00000055432777);
+        lpd.push_back(-0.00000989667666);
+        lpd.push_back(0.00000402586608);
+        lpd.push_back(0.00005384705071);
+        lpd.push_back(-0.00002120203482);
+        lpd.push_back(-0.00023724381672);
+        lpd.push_back(0.00008209438737);
+        lpd.push_back(0.00086145325795);
+        lpd.push_back(-0.00023156681831);
+        lpd.push_back(-0.00258964866287);
+        lpd.push_back(0.00046642571155);
+        lpd.push_back(0.00645416706920);
+        lpd.push_back(-0.00051919282891);
+        lpd.push_back(-0.01284118837655);
+        lpd.push_back(0.00037212345706);
+        lpd.push_back(0.01829725025850);
+        lpd.push_back(-0.00795200356952);
+        lpd.push_back(-0.02521794435506);
+        lpd.push_back(0.02965858822312);
+        lpd.push_back(0.02927100294045);
+        lpd.push_back(-0.09630227559219);
+        lpd.push_back(-0.03849155121162);
+        lpd.push_back(0.40072250790936);
+        lpd.push_back(0.74269376814242);
+        lpd.push_back(0.48469805553706);
+        lpd.push_back(-0.02843778080778);
+        lpd.push_back(-0.16204679936904);
+        lpd.push_back(0.02619852204894);
+        lpd.push_back(0.08910160832786);
+        lpd.push_back(-0.01523693234758);
+        lpd.push_back(-0.04889669606591);
+        lpd.push_back(0.00760939409040);
+        lpd.push_back(0.02556854558808);
+        lpd.push_back(-0.00162932098036);
+        lpd.push_back(-0.01038876672659);
+        lpd.push_back(0.00054379809563);
+        lpd.push_back(0.00371380689803);
+        lpd.push_back(-0.00027628401612);
+        lpd.push_back(-0.00119692132405);
+        lpd.push_back(0.00011735865251);
+        lpd.push_back(0.00034385220669);
+        lpd.push_back(-0.00003293175202);
+        lpd.push_back(-0.00008272690387);
+        lpd.push_back(0.00000647382532);
+        lpd.push_back(0.00001589700426);
+        lpd.push_back(-0.00000089828423);
+        lpd.push_back(-0.00000232354967);
+        lpd.push_back(0.00000008995011);
+        lpd.push_back(0.00000024412960);
+        lpd.push_back(-0.00000000612778);
+        lpd.push_back(-0.00000001650488);
+        lpd.push_back(0.00000000025363);
+        lpd.push_back(0.00000000055439);
+        hpd.push_back(-0.00000000055439);
+        hpd.push_back(0.00000000025363);
+        hpd.push_back(0.00000001650488);
+        hpd.push_back(-0.00000000612778);
+        hpd.push_back(-0.00000024412960);
+        hpd.push_back(0.00000008995011);
+        hpd.push_back(0.00000232354967);
+        hpd.push_back(-0.00000089828423);
+        hpd.push_back(-0.00001589700426);
+        hpd.push_back(0.00000647382532);
+        hpd.push_back(0.00008272690387);
+        hpd.push_back(-0.00003293175202);
+        hpd.push_back(-0.00034385220669);
+        hpd.push_back(0.00011735865251);
+        hpd.push_back(0.00119692132405);
+        hpd.push_back(-0.00027628401612);
+        hpd.push_back(-0.00371380689803);
+        hpd.push_back(0.00054379809563);
+        hpd.push_back(0.01038876672659);
+        hpd.push_back(-0.00162932098036);
+        hpd.push_back(-0.02556854558808);
+        hpd.push_back(0.00760939409040);
+        hpd.push_back(0.04889669606591);
+        hpd.push_back(-0.01523693234758);
+        hpd.push_back(-0.08910160832786);
+        hpd.push_back(0.02619852204894);
+        hpd.push_back(0.16204679936904);
+        hpd.push_back(-0.02843778080778);
+        hpd.push_back(-0.48469805553706);
+        hpd.push_back(0.74269376814242);
+        hpd.push_back(-0.40072250790936);
+        hpd.push_back(-0.03849155121162);
+        hpd.push_back(0.09630227559219);
+        hpd.push_back(0.02927100294045);
+        hpd.push_back(-0.02965858822312);
+        hpd.push_back(-0.02521794435506);
+        hpd.push_back(0.00795200356952);
+        hpd.push_back(0.01829725025850);
+        hpd.push_back(-0.00037212345706);
+        hpd.push_back(-0.01284118837655);
+        hpd.push_back(0.00051919282891);
+        hpd.push_back(0.00645416706920);
+        hpd.push_back(-0.00046642571155);
+        hpd.push_back(-0.00258964866287);
+        hpd.push_back(0.00023156681831);
+        hpd.push_back(0.00086145325795);
+        hpd.push_back(-0.00008209438737);
+        hpd.push_back(-0.00023724381672);
+        hpd.push_back(0.00002120203482);
+        hpd.push_back(0.00005384705071);
+        hpd.push_back(-0.00000402586608);
+        hpd.push_back(-0.00000989667666);
+        hpd.push_back(0.00000055432777);
+        hpd.push_back(0.00000142300535);
+        hpd.push_back(-0.00000005465704);
+        hpd.push_back(-0.00000014986093);
+        hpd.push_back(0.00000000380480);
+        hpd.push_back(0.00000001014810);
+        hpd.push_back(-0.00000000014934);
+        hpd.push_back(-0.00000000032641);
+        flength = 60;
+        break;
+
+    case Coiflet_1:
+        lpd.push_back(-0.01565572813546);
+        lpd.push_back(-0.07273261951285);
+        lpd.push_back(0.38486484686420);
+        lpd.push_back(0.85257202021226);
+        lpd.push_back(0.33789766245781);
+        lpd.push_back(-0.07273261951285);
+        hpd.push_back(0.07273261951285);
+        hpd.push_back(0.33789766245781);
+        hpd.push_back(-0.85257202021226);
+        hpd.push_back(0.38486484686420);
+        hpd.push_back(0.07273261951285);
+        hpd.push_back(-0.01565572813546);
+        flength = 6;
+        break;
+
+    case Coiflet_2:
+        lpd.push_back(-0.00072054944536);
+        lpd.push_back(-0.00182320887070);
+        lpd.push_back(0.00561143481939);
+        lpd.push_back(0.02368017194633);
+        lpd.push_back(-0.05943441864646);
+        lpd.push_back(-0.07648859907831);
+        lpd.push_back(0.41700518442169);
+        lpd.push_back(0.81272363544554);
+        lpd.push_back(0.38611006682116);
+        lpd.push_back(-0.06737255472196);
+        lpd.push_back(-0.04146493678176);
+        lpd.push_back(0.01638733646352);
+        hpd.push_back(-0.01638733646352);
+        hpd.push_back(-0.04146493678176);
+        hpd.push_back(0.06737255472196);
+        hpd.push_back(0.38611006682116);
+        hpd.push_back(-0.81272363544554);
+        hpd.push_back(0.41700518442169);
+        hpd.push_back(0.07648859907831);
+        hpd.push_back(-0.05943441864646);
+        hpd.push_back(-0.02368017194633);
+        hpd.push_back(0.00561143481939);
+        hpd.push_back(0.00182320887070);
+        hpd.push_back(-0.00072054944536);
+        flength = 12;
+        break;
+
+    case Coiflet_3:
+        lpd.push_back(-0.00003459977284);
+        lpd.push_back(-0.00007098330314);
+        lpd.push_back(0.00046621696011);
+        lpd.push_back(0.00111751877089);
+        lpd.push_back(-0.00257451768875);
+        lpd.push_back(-0.00900797613666);
+        lpd.push_back(0.01588054486362);
+        lpd.push_back(0.03455502757306);
+        lpd.push_back(-0.08230192710689);
+        lpd.push_back(-0.07179982161931);
+        lpd.push_back(0.42848347637762);
+        lpd.push_back(0.79377722262562);
+        lpd.push_back(0.40517690240962);
+        lpd.push_back(-0.06112339000267);
+        lpd.push_back(-0.06577191128186);
+        lpd.push_back(0.02345269614184);
+        lpd.push_back(0.00778259642733);
+        lpd.push_back(-0.00379351286449);
+        hpd.push_back(0.00379351286449);
+        hpd.push_back(0.00778259642733);
+        hpd.push_back(-0.02345269614184);
+        hpd.push_back(-0.06577191128186);
+        hpd.push_back(0.06112339000267);
+        hpd.push_back(0.40517690240962);
+        hpd.push_back(-0.79377722262562);
+        hpd.push_back(0.42848347637762);
+        hpd.push_back(0.07179982161931);
+        hpd.push_back(-0.08230192710689);
+        hpd.push_back(-0.03455502757306);
+        hpd.push_back(0.01588054486362);
+        hpd.push_back(0.00900797613666);
+        hpd.push_back(-0.00257451768875);
+        hpd.push_back(-0.00111751877089);
+        hpd.push_back(0.00046621696011);
+        hpd.push_back(0.00007098330314);
+        hpd.push_back(-0.00003459977284);
+        flength = 18;
+        break;
+
+    case Coiflet_4:
+        lpd.push_back(-0.00000178498500);
+        lpd.push_back(-0.00000325968024);
+        lpd.push_back(0.00003122987587);
+        lpd.push_back(0.00006233903446);
+        lpd.push_back(-0.00025997455249);
+        lpd.push_back(-0.00058902075624);
+        lpd.push_back(0.00126656192930);
+        lpd.push_back(0.00375143615728);
+        lpd.push_back(-0.00565828668661);
+        lpd.push_back(-0.01521173152795);
+        lpd.push_back(0.02508226184486);
+        lpd.push_back(0.03933442712334);
+        lpd.push_back(-0.09622044203399);
+        lpd.push_back(-0.06662747426343);
+        lpd.push_back(0.43438605649147);
+        lpd.push_back(0.78223893092050);
+        lpd.push_back(0.41530840703043);
+        lpd.push_back(-0.05607731331675);
+        lpd.push_back(-0.08126669968088);
+        lpd.push_back(0.02668230015605);
+        lpd.push_back(0.01606894396478);
+        lpd.push_back(-0.00734616632764);
+        lpd.push_back(-0.00162949201260);
+        lpd.push_back(0.00089231366858);
+        hpd.push_back(-0.00089231366858);
+        hpd.push_back(-0.00162949201260);
+        hpd.push_back(0.00734616632764);
+        hpd.push_back(0.01606894396478);
+        hpd.push_back(-0.02668230015605);
+        hpd.push_back(-0.08126669968088);
+        hpd.push_back(0.05607731331675);
+        hpd.push_back(0.41530840703043);
+        hpd.push_back(-0.78223893092050);
+        hpd.push_back(0.43438605649147);
+        hpd.push_back(0.06662747426343);
+        hpd.push_back(-0.09622044203399);
+        hpd.push_back(-0.03933442712334);
+        hpd.push_back(0.02508226184486);
+        hpd.push_back(0.01521173152795);
+        hpd.push_back(-0.00565828668661);
+        hpd.push_back(-0.00375143615728);
+        hpd.push_back(0.00126656192930);
+        hpd.push_back(0.00058902075624);
+        hpd.push_back(-0.00025997455249);
+        hpd.push_back(-0.00006233903446);
+        hpd.push_back(0.00003122987587);
+        hpd.push_back(0.00000325968024);
+        hpd.push_back(-0.00000178498500);
+        flength = 24;
+        break;
+
+    case Coiflet_5:
+        lpd.push_back(-0.00000009517657);
+        lpd.push_back(-0.00000016744289);
+        lpd.push_back(0.00000206376185);
+        lpd.push_back(0.00000373465518);
+        lpd.push_back(-0.00002131502681);
+        lpd.push_back(-0.00004134043227);
+        lpd.push_back(0.00014054114970);
+        lpd.push_back(0.00030225958181);
+        lpd.push_back(-0.00063813134305);
+        lpd.push_back(-0.00166286370201);
+        lpd.push_back(0.00243337321266);
+        lpd.push_back(0.00676418544805);
+        lpd.push_back(-0.00916423116248);
+        lpd.push_back(-0.01976177894257);
+        lpd.push_back(0.03268357426711);
+        lpd.push_back(0.04128920875018);
+        lpd.push_back(-0.10557420870334);
+        lpd.push_back(-0.06203596396290);
+        lpd.push_back(0.43799162617184);
+        lpd.push_back(0.77428960365296);
+        lpd.push_back(0.42156620669085);
+        lpd.push_back(-0.05204316317624);
+        lpd.push_back(-0.09192001055970);
+        lpd.push_back(0.02816802897094);
+        lpd.push_back(0.02340815678584);
+        lpd.push_back(-0.01013111751985);
+        lpd.push_back(-0.00415935878139);
+        lpd.push_back(0.00217823635811);
+        lpd.push_back(0.00035858968790);
+        lpd.push_back(-0.00021208083980);
+        hpd.push_back(0.00021208083980);
+        hpd.push_back(0.00035858968790);
+        hpd.push_back(-0.00217823635811);
+        hpd.push_back(-0.00415935878139);
+        hpd.push_back(0.01013111751985);
+        hpd.push_back(0.02340815678584);
+        hpd.push_back(-0.02816802897094);
+        hpd.push_back(-0.09192001055970);
+        hpd.push_back(0.05204316317624);
+        hpd.push_back(0.42156620669085);
+        hpd.push_back(-0.77428960365296);
+        hpd.push_back(0.43799162617184);
+        hpd.push_back(0.06203596396290);
+        hpd.push_back(-0.10557420870334);
+        hpd.push_back(-0.04128920875018);
+        hpd.push_back(0.03268357426711);
+        hpd.push_back(0.01976177894257);
+        hpd.push_back(-0.00916423116248);
+        hpd.push_back(-0.00676418544805);
+        hpd.push_back(0.00243337321266);
+        hpd.push_back(0.00166286370201);
+        hpd.push_back(-0.00063813134305);
+        hpd.push_back(-0.00030225958181);
+        hpd.push_back(0.00014054114970);
+        hpd.push_back(0.00004134043227);
+        hpd.push_back(-0.00002131502681);
+        hpd.push_back(-0.00000373465518);
+        hpd.push_back(0.00000206376185);
+        hpd.push_back(0.00000016744289);
+        hpd.push_back(-0.00000009517657);
+        flength = 30;
+        break;
+
+    case Biorthogonal_1_3:
+        lpd.push_back(-0.08838834764832);
+        lpd.push_back(0.08838834764832);
+        lpd.push_back(0.70710678118655);
+        lpd.push_back(0.70710678118655);
+        lpd.push_back(0.08838834764832);
+        lpd.push_back(-0.08838834764832);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.70710678118655);
+        hpd.push_back(0.70710678118655);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        flength = 6;
+        break;
+
+    case Biorthogonal_1_5:
+        lpd.push_back(0.01657281518406);
+        lpd.push_back(-0.01657281518406);
+        lpd.push_back(-0.12153397801644);
+        lpd.push_back(0.12153397801644);
+        lpd.push_back(0.70710678118655);
+        lpd.push_back(0.70710678118655);
+        lpd.push_back(0.12153397801644);
+        lpd.push_back(-0.12153397801644);
+        lpd.push_back(-0.01657281518406);
+        lpd.push_back(0.01657281518406);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.70710678118655);
+        hpd.push_back(0.70710678118655);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        flength = 10;
+        break;
+
+    case Biorthogonal_2_2:
+        lpd.push_back(0.00000000000000);
+        lpd.push_back(-0.17677669529664);
+        lpd.push_back(0.35355339059327);
+        lpd.push_back(1.06066017177982);
+        lpd.push_back(0.35355339059327);
+        lpd.push_back(-0.17677669529664);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.35355339059327);
+        hpd.push_back(-0.70710678118655);
+        hpd.push_back(0.35355339059327);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        flength = 6;
+        break;
+
+    case Biorthogonal_2_4:
+        lpd.push_back(0.00000000000000);
+        lpd.push_back(0.03314563036812);
+        lpd.push_back(-0.06629126073624);
+        lpd.push_back(-0.17677669529664);
+        lpd.push_back(0.41984465132951);
+        lpd.push_back(0.99436891104358);
+        lpd.push_back(0.41984465132951);
+        lpd.push_back(-0.17677669529664);
+        lpd.push_back(-0.06629126073624);
+        lpd.push_back(0.03314563036812);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.35355339059327);
+        hpd.push_back(-0.70710678118655);
+        hpd.push_back(0.35355339059327);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        flength = 10;
+        break;
+
+
+    case Biorthogonal_2_6:
+        lpd.push_back(0.00000000000000);
+        lpd.push_back(-0.00690533966002);
+        lpd.push_back(0.01381067932005);
+        lpd.push_back(0.04695630968817);
+        lpd.push_back(-0.10772329869639);
+        lpd.push_back(-0.16987135563661);
+        lpd.push_back(0.44746600996961);
+        lpd.push_back(0.96674755240348);
+        lpd.push_back(0.44746600996961);
+        lpd.push_back(-0.16987135563661);
+        lpd.push_back(-0.10772329869639);
+        lpd.push_back(0.04695630968817);
+        lpd.push_back(0.01381067932005);
+        lpd.push_back(-0.00690533966002);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.35355339059327);
+        hpd.push_back(-0.70710678118655);
+        hpd.push_back(0.35355339059327);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        flength = 14;
+        break;
+
+    case Biorthogonal_2_8:
+        lpd.push_back(0.00000000000000);
+        lpd.push_back(0.00151054305063);
+        lpd.push_back(-0.00302108610126);
+        lpd.push_back(-0.01294751186255);
+        lpd.push_back(0.02891610982635);
+        lpd.push_back(0.05299848189069);
+        lpd.push_back(-0.13491307360774);
+        lpd.push_back(-0.16382918343409);
+        lpd.push_back(0.46257144047592);
+        lpd.push_back(0.95164212189718);
+        lpd.push_back(0.46257144047592);
+        lpd.push_back(-0.16382918343409);
+        lpd.push_back(-0.13491307360774);
+        lpd.push_back(0.05299848189069);
+        lpd.push_back(0.02891610982635);
+        lpd.push_back(-0.01294751186255);
+        lpd.push_back(-0.00302108610126);
+        lpd.push_back(0.00151054305063);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.35355339059327);
+        hpd.push_back(-0.70710678118655);
+        hpd.push_back(0.35355339059327);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        flength = 18;
+        break;
+
+    case Biorthogonal_3_1:
+        lpd.push_back(-0.35355339059327);
+        lpd.push_back(1.06066017177982);
+        lpd.push_back(1.06066017177982);
+        lpd.push_back(-0.35355339059327);
+        hpd.push_back(-0.17677669529664);
+        hpd.push_back(0.53033008588991);
+        hpd.push_back(-0.53033008588991);
+        hpd.push_back(0.17677669529664);
+        flength = 4;
+        break;
+
+    case Biorthogonal_3_3:
+        lpd.push_back(0.06629126073624);
+        lpd.push_back(-0.19887378220872);
+        lpd.push_back(-0.15467960838456);
+        lpd.push_back(0.99436891104358);
+        lpd.push_back(0.99436891104358);
+        lpd.push_back(-0.15467960838456);
+        lpd.push_back(-0.19887378220872);
+        lpd.push_back(0.06629126073624);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.17677669529664);
+        hpd.push_back(0.53033008588991);
+        hpd.push_back(-0.53033008588991);
+        hpd.push_back(0.17677669529664);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        flength = 8;
+        break;
+
+    case Biorthogonal_3_5:
+        lpd.push_back(-0.01381067932005);
+        lpd.push_back(0.04143203796015);
+        lpd.push_back(0.05248058141619);
+        lpd.push_back(-0.26792717880897);
+        lpd.push_back(-0.07181553246426);
+        lpd.push_back(0.96674755240348);
+        lpd.push_back(0.96674755240348);
+        lpd.push_back(-0.07181553246426);
+        lpd.push_back(-0.26792717880897);
+        lpd.push_back(0.05248058141619);
+        lpd.push_back(0.04143203796015);
+        lpd.push_back(-0.01381067932005);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.17677669529664);
+        hpd.push_back(0.53033008588991);
+        hpd.push_back(-0.53033008588991);
+        hpd.push_back(0.17677669529664);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        flength = 12;
+        break;
+
+    case Biorthogonal_3_7:
+        lpd.push_back(0.00302108610126);
+        lpd.push_back(-0.00906325830378);
+        lpd.push_back(-0.01683176542131);
+        lpd.push_back(0.07466398507402);
+        lpd.push_back(0.03133297870736);
+        lpd.push_back(-0.30115912592284);
+        lpd.push_back(-0.02649924094535);
+        lpd.push_back(0.95164212189718);
+        lpd.push_back(0.95164212189718);
+        lpd.push_back(-0.02649924094535);
+        lpd.push_back(-0.30115912592284);
+        lpd.push_back(0.03133297870736);
+        lpd.push_back(0.07466398507402);
+        lpd.push_back(-0.01683176542131);
+        lpd.push_back(-0.00906325830378);
+        lpd.push_back(0.00302108610126);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.17677669529664);
+        hpd.push_back(0.53033008588991);
+        hpd.push_back(-0.53033008588991);
+        hpd.push_back(0.17677669529664);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        flength = 16;
+        break;
+
+    case Biorthogonal_3_9:
+        lpd.push_back(-0.00067974437278);
+        lpd.push_back(0.00203923311835);
+        lpd.push_back(0.00506031921961);
+        lpd.push_back(-0.02061891264111);
+        lpd.push_back(-0.01411278793018);
+        lpd.push_back(0.09913478249423);
+        lpd.push_back(0.01230013626942);
+        lpd.push_back(-0.32019196836078);
+        lpd.push_back(0.00205002271157);
+        lpd.push_back(0.94212570067821);
+        lpd.push_back(0.94212570067821);
+        lpd.push_back(0.00205002271157);
+        lpd.push_back(-0.32019196836078);
+        lpd.push_back(0.01230013626942);
+        lpd.push_back(0.09913478249423);
+        lpd.push_back(-0.01411278793018);
+        lpd.push_back(-0.02061891264111);
+        lpd.push_back(0.00506031921961);
+        lpd.push_back(0.00203923311835);
+        lpd.push_back(-0.00067974437278);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.17677669529664);
+        hpd.push_back(0.53033008588991);
+        hpd.push_back(-0.53033008588991);
+        hpd.push_back(0.17677669529664);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        flength = 20;
+        break;
+
+    case Biorthogonal_4_4:
+        lpd.push_back(0.00000000000000);
+        lpd.push_back(0.03782845550726);
+        lpd.push_back(-0.02384946501956);
+        lpd.push_back(-0.11062440441844);
+        lpd.push_back(0.37740285561283);
+        lpd.push_back(0.85269867900889);
+        lpd.push_back(0.37740285561283);
+        lpd.push_back(-0.11062440441844);
+        lpd.push_back(-0.02384946501956);
+        lpd.push_back(0.03782845550726);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(-0.06453888262870);
+        hpd.push_back(0.04068941760916);
+        hpd.push_back(0.41809227322162);
+        hpd.push_back(-0.78848561640558);
+        hpd.push_back(0.41809227322162);
+        hpd.push_back(0.04068941760916);
+        hpd.push_back(-0.06453888262870);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        flength = 10;
+        break;
+
+    case Biorthogonal_5_5:
+        lpd.push_back(0.00000000000000);
+        lpd.push_back(0.00000000000000);
+        lpd.push_back(0.03968708834741);
+        lpd.push_back(0.00794810863724);
+        lpd.push_back(-0.05446378846824);
+        lpd.push_back(0.34560528195603);
+        lpd.push_back(0.73666018142821);
+        lpd.push_back(0.34560528195603);
+        lpd.push_back(-0.05446378846824);
+        lpd.push_back(0.00794810863724);
+        lpd.push_back(0.03968708834741);
+        lpd.push_back(0.00000000000000);
+        hpd.push_back(-0.01345670945912);
+        hpd.push_back(-0.00269496688011);
+        hpd.push_back(0.13670658466433);
+        hpd.push_back(-0.09350469740094);
+        hpd.push_back(-0.47680326579848);
+        hpd.push_back(0.89950610974865);
+        hpd.push_back(-0.47680326579848);
+        hpd.push_back(-0.09350469740094);
+        hpd.push_back(0.13670658466433);
+        hpd.push_back(-0.00269496688011);
+        hpd.push_back(-0.01345670945912);
+        hpd.push_back(0.00000000000000);
+        flength = 12;
+        break;
+
+    case Biorthogonal_6_8:
+        lpd.push_back(0.00000000000000);
+        lpd.push_back(0.00190883173648);
+        lpd.push_back(-0.00191428612909);
+        lpd.push_back(-0.01699063986760);
+        lpd.push_back(0.01193456527973);
+        lpd.push_back(0.04973290349094);
+        lpd.push_back(-0.07726317316720);
+        lpd.push_back(-0.09405920349574);
+        lpd.push_back(0.42079628460983);
+        lpd.push_back(0.82592299745840);
+        lpd.push_back(0.42079628460983);
+        lpd.push_back(-0.09405920349574);
+        lpd.push_back(-0.07726317316720);
+        lpd.push_back(0.04973290349094);
+        lpd.push_back(0.01193456527973);
+        lpd.push_back(-0.01699063986760);
+        lpd.push_back(-0.00191428612909);
+        lpd.push_back(0.00190883173648);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(0.01442628250562);
+        hpd.push_back(-0.01446750489679);
+        hpd.push_back(-0.07872200106263);
+        hpd.push_back(0.04036797903034);
+        hpd.push_back(0.41784910915027);
+        hpd.push_back(-0.75890772945365);
+        hpd.push_back(0.41784910915027);
+        hpd.push_back(0.04036797903034);
+        hpd.push_back(-0.07872200106263);
+        hpd.push_back(-0.01446750489679);
+        hpd.push_back(0.01442628250562);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        hpd.push_back(0.00000000000000);
+        hpd.push_back(-0.00000000000000);
+        flength = 18;
+        break;
+
+    case Meyer:
+        lpd.push_back(0.00000000000000);
+        lpd.push_back(-0.00000150974086);
+        lpd.push_back(0.00000127876676);
+        lpd.push_back(0.00000044958556);
+        lpd.push_back(-0.00000209656887);
+        lpd.push_back(0.00000172322355);
+        lpd.push_back(0.00000069808228);
+        lpd.push_back(-0.00000287940803);
+        lpd.push_back(0.00000238314839);
+        lpd.push_back(0.00000098251560);
+        lpd.push_back(-0.00000421778919);
+        lpd.push_back(0.00000335350154);
+        lpd.push_back(0.00000167472186);
+        lpd.push_back(-0.00000603450134);
+        lpd.push_back(0.00000483755580);
+        lpd.push_back(0.00000240228802);
+        lpd.push_back(-0.00000955630985);
+        lpd.push_back(0.00000721652769);
+        lpd.push_back(0.00000484907830);
+        lpd.push_back(-0.00001420692858);
+        lpd.push_back(0.00001050391427);
+        lpd.push_back(0.00000618758030);
+        lpd.push_back(-0.00002443800585);
+        lpd.push_back(0.00002010638769);
+        lpd.push_back(0.00001499352360);
+        lpd.push_back(-0.00004642876428);
+        lpd.push_back(0.00003234131191);
+        lpd.push_back(0.00003740966576);
+        lpd.push_back(-0.00010277900508);
+        lpd.push_back(0.00002446195684);
+        lpd.push_back(0.00014971351539);
+        lpd.push_back(-0.00007559287026);
+        lpd.push_back(-0.00013991314822);
+        lpd.push_back(-0.00009351289388);
+        lpd.push_back(0.00016118981973);
+        lpd.push_back(0.00085950021376);
+        lpd.push_back(-0.00057818579527);
+        lpd.push_back(-0.00270216873394);
+        lpd.push_back(0.00219477533646);
+        lpd.push_back(0.00604551059646);
+        lpd.push_back(-0.00638672861855);
+        lpd.push_back(-0.01104464190054);
+        lpd.push_back(0.01525091315859);
+        lpd.push_back(0.01740388821018);
+        lpd.push_back(-0.03209406335451);
+        lpd.push_back(-0.02432178395952);
+        lpd.push_back(0.06366730088447);
+        lpd.push_back(0.03062124394342);
+        lpd.push_back(-0.13269661535886);
+        lpd.push_back(-0.03504828739060);
+        lpd.push_back(0.44409503076653);
+        lpd.push_back(0.74375100490379);
+        lpd.push_back(0.44409503076653);
+        lpd.push_back(-0.03504828739060);
+        lpd.push_back(-0.13269661535886);
+        lpd.push_back(0.03062124394342);
+        lpd.push_back(0.06366730088447);
+        lpd.push_back(-0.02432178395952);
+        lpd.push_back(-0.03209406335451);
+        lpd.push_back(0.01740388821018);
+        lpd.push_back(0.01525091315859);
+        lpd.push_back(-0.01104464190054);
+        lpd.push_back(-0.00638672861855);
+        lpd.push_back(0.00604551059646);
+        lpd.push_back(0.00219477533646);
+        lpd.push_back(-0.00270216873394);
+        lpd.push_back(-0.00057818579527);
+        lpd.push_back(0.00085950021376);
+        lpd.push_back(0.00016118981973);
+        lpd.push_back(-0.00009351289388);
+        lpd.push_back(-0.00013991314822);
+        lpd.push_back(-0.00007559287026);
+        lpd.push_back(0.00014971351539);
+        lpd.push_back(0.00002446195684);
+        lpd.push_back(-0.00010277900508);
+        lpd.push_back(0.00003740966576);
+        lpd.push_back(0.00003234131191);
+        lpd.push_back(-0.00004642876428);
+        lpd.push_back(0.00001499352360);
+        lpd.push_back(0.00002010638769);
+        lpd.push_back(-0.00002443800585);
+        lpd.push_back(0.00000618758030);
+        lpd.push_back(0.00001050391427);
+        lpd.push_back(-0.00001420692858);
+        lpd.push_back(0.00000484907830);
+        lpd.push_back(0.00000721652769);
+        lpd.push_back(-0.00000955630985);
+        lpd.push_back(0.00000240228802);
+        lpd.push_back(0.00000483755580);
+        lpd.push_back(-0.00000603450134);
+        lpd.push_back(0.00000167472186);
+        lpd.push_back(0.00000335350154);
+        lpd.push_back(-0.00000421778919);
+        lpd.push_back(0.00000098251560);
+        lpd.push_back(0.00000238314839);
+        lpd.push_back(-0.00000287940803);
+        lpd.push_back(0.00000069808228);
+        lpd.push_back(0.00000172322355);
+        lpd.push_back(-0.00000209656887);
+        lpd.push_back(0.00000044958556);
+        lpd.push_back(0.00000127876676);
+        lpd.push_back(-0.00000150974086);
+        hpd.push_back(0.00000150974086);
+        hpd.push_back(0.00000127876676);
+        hpd.push_back(-0.00000044958556);
+        hpd.push_back(-0.00000209656887);
+        hpd.push_back(-0.00000172322355);
+        hpd.push_back(0.00000069808228);
+        hpd.push_back(0.00000287940803);
+        hpd.push_back(0.00000238314839);
+        hpd.push_back(-0.00000098251560);
+        hpd.push_back(-0.00000421778919);
+        hpd.push_back(-0.00000335350154);
+        hpd.push_back(0.00000167472186);
+        hpd.push_back(0.00000603450134);
+        hpd.push_back(0.00000483755580);
+        hpd.push_back(-0.00000240228802);
+        hpd.push_back(-0.00000955630985);
+        hpd.push_back(-0.00000721652769);
+        hpd.push_back(0.00000484907830);
+        hpd.push_back(0.00001420692858);
+        hpd.push_back(0.00001050391427);
+        hpd.push_back(-0.00000618758030);
+        hpd.push_back(-0.00002443800585);
+        hpd.push_back(-0.00002010638769);
+        hpd.push_back(0.00001499352360);
+        hpd.push_back(0.00004642876428);
+        hpd.push_back(0.00003234131191);
+        hpd.push_back(-0.00003740966576);
+        hpd.push_back(-0.00010277900508);
+        hpd.push_back(-0.00002446195684);
+        hpd.push_back(0.00014971351539);
+        hpd.push_back(0.00007559287026);
+        hpd.push_back(-0.00013991314822);
+        hpd.push_back(0.00009351289388);
+        hpd.push_back(0.00016118981973);
+        hpd.push_back(-0.00085950021376);
+        hpd.push_back(-0.00057818579527);
+        hpd.push_back(0.00270216873394);
+        hpd.push_back(0.00219477533646);
+        hpd.push_back(-0.00604551059646);
+        hpd.push_back(-0.00638672861855);
+        hpd.push_back(0.01104464190054);
+        hpd.push_back(0.01525091315859);
+        hpd.push_back(-0.01740388821018);
+        hpd.push_back(-0.03209406335451);
+        hpd.push_back(0.02432178395952);
+        hpd.push_back(0.06366730088447);
+        hpd.push_back(-0.03062124394342);
+        hpd.push_back(-0.13269661535886);
+        hpd.push_back(0.03504828739060);
+        hpd.push_back(0.44409503076653);
+        hpd.push_back(-0.74375100490379);
+        hpd.push_back(0.44409503076653);
+        hpd.push_back(0.03504828739060);
+        hpd.push_back(-0.13269661535886);
+        hpd.push_back(-0.03062124394342);
+        hpd.push_back(0.06366730088447);
+        hpd.push_back(0.02432178395952);
+        hpd.push_back(-0.03209406335451);
+        hpd.push_back(-0.01740388821018);
+        hpd.push_back(0.01525091315859);
+        hpd.push_back(0.01104464190054);
+        hpd.push_back(-0.00638672861855);
+        hpd.push_back(-0.00604551059646);
+        hpd.push_back(0.00219477533646);
+        hpd.push_back(0.00270216873394);
+        hpd.push_back(-0.00057818579527);
+        hpd.push_back(-0.00085950021376);
+        hpd.push_back(0.00016118981973);
+        hpd.push_back(0.00009351289388);
+        hpd.push_back(-0.00013991314822);
+        hpd.push_back(0.00007559287026);
+        hpd.push_back(0.00014971351539);
+        hpd.push_back(-0.00002446195684);
+        hpd.push_back(-0.00010277900508);
+        hpd.push_back(-0.00003740966576);
+        hpd.push_back(0.00003234131191);
+        hpd.push_back(0.00004642876428);
+        hpd.push_back(0.00001499352360);
+        hpd.push_back(-0.00002010638769);
+        hpd.push_back(-0.00002443800585);
+        hpd.push_back(-0.00000618758030);
+        hpd.push_back(0.00001050391427);
+        hpd.push_back(0.00001420692858);
+        hpd.push_back(0.00000484907830);
+        hpd.push_back(-0.00000721652769);
+        hpd.push_back(-0.00000955630985);
+        hpd.push_back(-0.00000240228802);
+        hpd.push_back(0.00000483755580);
+        hpd.push_back(0.00000603450134);
+        hpd.push_back(0.00000167472186);
+        hpd.push_back(-0.00000335350154);
+        hpd.push_back(-0.00000421778919);
+        hpd.push_back(-0.00000098251560);
+        hpd.push_back(0.00000238314839);
+        hpd.push_back(0.00000287940803);
+        hpd.push_back(0.00000069808228);
+        hpd.push_back(-0.00000172322355);
+        hpd.push_back(-0.00000209656887);
+        hpd.push_back(-0.00000044958556);
+        hpd.push_back(0.00000127876676);
+        hpd.push_back(0.00000150974086);
+        hpd.push_back(0.00000000000000);
+        flength = 102;
+        break;
+    }
+
+    assert(flength == lpd.size());
+    assert(flength == hpd.size());
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dsp/wavelet/Wavelet.h	Thu Apr 02 11:17:45 2009 +0000
@@ -0,0 +1,75 @@
+/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */
+
+/*
+    QM DSP Library
+
+    Centre for Digital Music, Queen Mary, University of London.
+    This file copyright 2009 Thomas Wilmering.
+    All rights reserved.
+*/
+
+#ifndef _WAVELET_H_
+#define _WAVELET_H_
+
+#include <string>
+#include <vector>
+
+class Wavelet
+{
+public:
+    enum Type {
+        Haar = 0,
+        Daubechies_2,
+        Daubechies_3,
+        Daubechies_4,
+        Daubechies_5,
+        Daubechies_6,
+        Daubechies_7,
+        Daubechies_8,
+        Daubechies_9,
+        Daubechies_10,
+        Daubechies_20,
+        Daubechies_40,
+	Symlet_2,
+	Symlet_3,
+	Symlet_4,
+	Symlet_5,
+	Symlet_6,
+	Symlet_7,
+	Symlet_8,
+	Symlet_9,
+	Symlet_10,
+	Symlet_20,
+	Symlet_30,
+	Coiflet_1,
+	Coiflet_2,
+	Coiflet_3,
+	Coiflet_4,
+	Coiflet_5,
+	Biorthogonal_1_3,
+	Biorthogonal_1_5,
+	Biorthogonal_2_2,
+	Biorthogonal_2_4,
+	Biorthogonal_2_6,
+	Biorthogonal_2_8,
+	Biorthogonal_3_1,
+	Biorthogonal_3_3,
+	Biorthogonal_3_5,
+	Biorthogonal_3_7,
+	Biorthogonal_3_9,
+	Biorthogonal_4_4,
+	Biorthogonal_5_5,
+	Biorthogonal_6_8,
+	Meyer,
+
+        LastType = Meyer
+    };
+
+    static std::string getWaveletName(Type);
+
+    static void createDecompositionFilters(Type,
+                                           std::vector<float> &lpd,
+                                           std::vector<float> &hpd);
+};
+
+#endif
--- a/qm-dsp.pro	Mon Mar 23 18:50:38 2009 +0000
+++ b/qm-dsp.pro	Thu Apr 02 11:17:45 2009 +0000
@@ -55,6 +55,7 @@
            dsp/tonal/TCSgram.h \
            dsp/tonal/TonalEstimator.h \
            dsp/transforms/FFT.h \
+           dsp/wavelet/Wavelet.h \
            hmm/hmm.h \
            maths/Correlation.h \
            maths/CosineDistance.h \
@@ -91,6 +92,7 @@
            dsp/tonal/TCSgram.cpp \
            dsp/tonal/TonalEstimator.cpp \
            dsp/transforms/FFT.cpp \
+           dsp/wavelet/Wavelet.cpp \
            hmm/hmm.c \
            maths/Correlation.cpp \
            maths/CosineDistance.cpp \