|
Packit |
67cb25 |
/* wavelet/daubechies.c
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* Copyright (C) 2004 Ivo Alxneit
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* This program is free software; you can redistribute it and/or modify
|
|
Packit |
67cb25 |
* it under the terms of the GNU General Public License as published by
|
|
Packit |
67cb25 |
* the Free Software Foundation; either version 3 of the License, or (at
|
|
Packit |
67cb25 |
* your option) any later version.
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* This program is distributed in the hope that it will be useful, but
|
|
Packit |
67cb25 |
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
67cb25 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
67cb25 |
* General Public License for more details.
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* You should have received a copy of the GNU General Public License
|
|
Packit |
67cb25 |
* along with this program; if not, write to the Free Software
|
|
Packit |
67cb25 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/*
|
|
Packit |
67cb25 |
* Coefficients for Daubechies wavelets of extremal phase are from
|
|
Packit |
67cb25 |
* I. Daubechies, "Orthonormal Bases of Compactly Supported Wavelets",
|
|
Packit |
67cb25 |
* Communications on Pure and Applied Mathematics, 41 (1988) 909--996
|
|
Packit |
67cb25 |
* (table 1).
|
|
Packit |
67cb25 |
* Additional digits have been obtained using the Mathematica package
|
|
Packit |
67cb25 |
* Daubechies.m by Tong Chen & Meng Xu available at
|
|
Packit |
67cb25 |
* http://www.cwp.mines.edu/wavelets/.
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#include <config.h>
|
|
Packit |
67cb25 |
#include <gsl/gsl_errno.h>
|
|
Packit |
67cb25 |
#include <gsl/gsl_wavelet.h>
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static const double h_4[4] = { 0.48296291314453414337487159986,
|
|
Packit |
67cb25 |
0.83651630373780790557529378092,
|
|
Packit |
67cb25 |
0.22414386804201338102597276224,
|
|
Packit |
67cb25 |
-0.12940952255126038117444941881
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static const double g_4[4] = { -0.12940952255126038117444941881,
|
|
Packit |
67cb25 |
-0.22414386804201338102597276224,
|
|
Packit |
67cb25 |
0.83651630373780790557529378092,
|
|
Packit |
67cb25 |
-0.48296291314453414337487159986
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static const double h_6[6] = { 0.33267055295008261599851158914,
|
|
Packit |
67cb25 |
0.80689150931109257649449360409,
|
|
Packit |
67cb25 |
0.45987750211849157009515194215,
|
|
Packit |
67cb25 |
-0.13501102001025458869638990670,
|
|
Packit |
67cb25 |
-0.08544127388202666169281916918,
|
|
Packit |
67cb25 |
0.03522629188570953660274066472
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static const double g_6[6] = { 0.03522629188570953660274066472,
|
|
Packit |
67cb25 |
0.08544127388202666169281916918,
|
|
Packit |
67cb25 |
-0.13501102001025458869638990670,
|
|
Packit |
67cb25 |
-0.45987750211849157009515194215,
|
|
Packit |
67cb25 |
0.80689150931109257649449360409,
|
|
Packit |
67cb25 |
-0.33267055295008261599851158914
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static const double h_8[8] = { 0.23037781330889650086329118304,
|
|
Packit |
67cb25 |
0.71484657055291564708992195527,
|
|
Packit |
67cb25 |
0.63088076792985890788171633830,
|
|
Packit |
67cb25 |
-0.02798376941685985421141374718,
|
|
Packit |
67cb25 |
-0.18703481171909308407957067279,
|
|
Packit |
67cb25 |
0.03084138183556076362721936253,
|
|
Packit |
67cb25 |
0.03288301166688519973540751355,
|
|
Packit |
67cb25 |
-0.01059740178506903210488320852
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static const double g_8[8] = { -0.01059740178506903210488320852,
|
|
Packit |
67cb25 |
-0.03288301166688519973540751355,
|
|
Packit |
67cb25 |
0.03084138183556076362721936253,
|
|
Packit |
67cb25 |
0.18703481171909308407957067279,
|
|
Packit |
67cb25 |
-0.02798376941685985421141374718,
|
|
Packit |
67cb25 |
-0.63088076792985890788171633830,
|
|
Packit |
67cb25 |
0.71484657055291564708992195527,
|
|
Packit |
67cb25 |
-0.23037781330889650086329118304
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static const double h_10[10] = { 0.16010239797419291448072374802,
|
|
Packit |
67cb25 |
0.60382926979718967054011930653,
|
|
Packit |
67cb25 |
0.72430852843777292772807124410,
|
|
Packit |
67cb25 |
0.13842814590132073150539714634,
|
|
Packit |
67cb25 |
-0.24229488706638203186257137947,
|
|
Packit |
67cb25 |
-0.03224486958463837464847975506,
|
|
Packit |
67cb25 |
0.07757149384004571352313048939,
|
|
Packit |
67cb25 |
-0.00624149021279827427419051911,
|
|
Packit |
67cb25 |
-0.01258075199908199946850973993,
|
|
Packit |
67cb25 |
0.00333572528547377127799818342
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static const double g_10[10] = { 0.00333572528547377127799818342,
|
|
Packit |
67cb25 |
0.01258075199908199946850973993,
|
|
Packit |
67cb25 |
-0.00624149021279827427419051911,
|
|
Packit |
67cb25 |
-0.07757149384004571352313048939,
|
|
Packit |
67cb25 |
-0.03224486958463837464847975506,
|
|
Packit |
67cb25 |
0.24229488706638203186257137947,
|
|
Packit |
67cb25 |
0.13842814590132073150539714634,
|
|
Packit |
67cb25 |
-0.72430852843777292772807124410,
|
|
Packit |
67cb25 |
0.60382926979718967054011930653,
|
|
Packit |
67cb25 |
-0.16010239797419291448072374802
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static const double h_12[12] = { 0.11154074335010946362132391724,
|
|
Packit |
67cb25 |
0.49462389039845308567720417688,
|
|
Packit |
67cb25 |
0.75113390802109535067893449844,
|
|
Packit |
67cb25 |
0.31525035170919762908598965481,
|
|
Packit |
67cb25 |
-0.22626469396543982007631450066,
|
|
Packit |
67cb25 |
-0.12976686756726193556228960588,
|
|
Packit |
67cb25 |
0.09750160558732304910234355254,
|
|
Packit |
67cb25 |
0.02752286553030572862554083950,
|
|
Packit |
67cb25 |
-0.03158203931748602956507908070,
|
|
Packit |
67cb25 |
0.00055384220116149613925191840,
|
|
Packit |
67cb25 |
0.00477725751094551063963597525,
|
|
Packit |
67cb25 |
-0.00107730108530847956485262161
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static const double g_12[12] = { -0.00107730108530847956485262161,
|
|
Packit |
67cb25 |
-0.00477725751094551063963597525,
|
|
Packit |
67cb25 |
0.00055384220116149613925191840,
|
|
Packit |
67cb25 |
0.03158203931748602956507908070,
|
|
Packit |
67cb25 |
0.02752286553030572862554083950,
|
|
Packit |
67cb25 |
-0.09750160558732304910234355254,
|
|
Packit |
67cb25 |
-0.12976686756726193556228960588,
|
|
Packit |
67cb25 |
0.22626469396543982007631450066,
|
|
Packit |
67cb25 |
0.31525035170919762908598965481,
|
|
Packit |
67cb25 |
-0.75113390802109535067893449844,
|
|
Packit |
67cb25 |
0.49462389039845308567720417688,
|
|
Packit |
67cb25 |
-0.11154074335010946362132391724
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static const double h_14[14] = { 0.07785205408500917901996352196,
|
|
Packit |
67cb25 |
0.39653931948191730653900039094,
|
|
Packit |
67cb25 |
0.72913209084623511991694307034,
|
|
Packit |
67cb25 |
0.46978228740519312247159116097,
|
|
Packit |
67cb25 |
-0.14390600392856497540506836221,
|
|
Packit |
67cb25 |
-0.22403618499387498263814042023,
|
|
Packit |
67cb25 |
0.07130921926683026475087657050,
|
|
Packit |
67cb25 |
0.08061260915108307191292248036,
|
|
Packit |
67cb25 |
-0.03802993693501441357959206160,
|
|
Packit |
67cb25 |
-0.01657454163066688065410767489,
|
|
Packit |
67cb25 |
0.01255099855609984061298988603,
|
|
Packit |
67cb25 |
0.00042957797292136652113212912,
|
|
Packit |
67cb25 |
-0.00180164070404749091526826291,
|
|
Packit |
67cb25 |
0.00035371379997452024844629584
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static const double g_14[14] = { 0.00035371379997452024844629584,
|
|
Packit |
67cb25 |
0.00180164070404749091526826291,
|
|
Packit |
67cb25 |
0.00042957797292136652113212912,
|
|
Packit |
67cb25 |
-0.01255099855609984061298988603,
|
|
Packit |
67cb25 |
-0.01657454163066688065410767489,
|
|
Packit |
67cb25 |
0.03802993693501441357959206160,
|
|
Packit |
67cb25 |
0.08061260915108307191292248036,
|
|
Packit |
67cb25 |
-0.07130921926683026475087657050,
|
|
Packit |
67cb25 |
-0.22403618499387498263814042023,
|
|
Packit |
67cb25 |
0.14390600392856497540506836221,
|
|
Packit |
67cb25 |
0.46978228740519312247159116097,
|
|
Packit |
67cb25 |
-0.72913209084623511991694307034,
|
|
Packit |
67cb25 |
0.39653931948191730653900039094,
|
|
Packit |
67cb25 |
-0.07785205408500917901996352196
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static const double h_16[16] = { 0.05441584224310400995500940520,
|
|
Packit |
67cb25 |
0.31287159091429997065916237551,
|
|
Packit |
67cb25 |
0.67563073629728980680780076705,
|
|
Packit |
67cb25 |
0.58535468365420671277126552005,
|
|
Packit |
67cb25 |
-0.01582910525634930566738054788,
|
|
Packit |
67cb25 |
-0.28401554296154692651620313237,
|
|
Packit |
67cb25 |
0.00047248457391328277036059001,
|
|
Packit |
67cb25 |
0.12874742662047845885702928751,
|
|
Packit |
67cb25 |
-0.01736930100180754616961614887,
|
|
Packit |
67cb25 |
-0.04408825393079475150676372324,
|
|
Packit |
67cb25 |
0.01398102791739828164872293057,
|
|
Packit |
67cb25 |
0.00874609404740577671638274325,
|
|
Packit |
67cb25 |
-0.00487035299345157431042218156,
|
|
Packit |
67cb25 |
-0.00039174037337694704629808036,
|
|
Packit |
67cb25 |
0.00067544940645056936636954757,
|
|
Packit |
67cb25 |
-0.00011747678412476953373062823
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static const double g_16[16] = { -0.00011747678412476953373062823,
|
|
Packit |
67cb25 |
-0.00067544940645056936636954757,
|
|
Packit |
67cb25 |
-0.00039174037337694704629808036,
|
|
Packit |
67cb25 |
0.00487035299345157431042218156,
|
|
Packit |
67cb25 |
0.00874609404740577671638274325,
|
|
Packit |
67cb25 |
-0.01398102791739828164872293057,
|
|
Packit |
67cb25 |
-0.04408825393079475150676372324,
|
|
Packit |
67cb25 |
0.01736930100180754616961614887,
|
|
Packit |
67cb25 |
0.12874742662047845885702928751,
|
|
Packit |
67cb25 |
-0.00047248457391328277036059001,
|
|
Packit |
67cb25 |
-0.28401554296154692651620313237,
|
|
Packit |
67cb25 |
0.01582910525634930566738054788,
|
|
Packit |
67cb25 |
0.58535468365420671277126552005,
|
|
Packit |
67cb25 |
-0.67563073629728980680780076705,
|
|
Packit |
67cb25 |
0.31287159091429997065916237551,
|
|
Packit |
67cb25 |
-0.05441584224310400995500940520
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static const double h_18[18] = { 0.03807794736387834658869765888,
|
|
Packit |
67cb25 |
0.24383467461259035373204158165,
|
|
Packit |
67cb25 |
0.60482312369011111190307686743,
|
|
Packit |
67cb25 |
0.65728807805130053807821263905,
|
|
Packit |
67cb25 |
0.13319738582500757619095494590,
|
|
Packit |
67cb25 |
-0.29327378327917490880640319524,
|
|
Packit |
67cb25 |
-0.09684078322297646051350813354,
|
|
Packit |
67cb25 |
0.14854074933810638013507271751,
|
|
Packit |
67cb25 |
0.03072568147933337921231740072,
|
|
Packit |
67cb25 |
-0.06763282906132997367564227483,
|
|
Packit |
67cb25 |
0.00025094711483145195758718975,
|
|
Packit |
67cb25 |
0.02236166212367909720537378270,
|
|
Packit |
67cb25 |
-0.00472320475775139727792570785,
|
|
Packit |
67cb25 |
-0.00428150368246342983449679500,
|
|
Packit |
67cb25 |
0.00184764688305622647661912949,
|
|
Packit |
67cb25 |
0.00023038576352319596720521639,
|
|
Packit |
67cb25 |
-0.00025196318894271013697498868,
|
|
Packit |
67cb25 |
0.00003934732031627159948068988
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static const double g_18[18] = { 0.00003934732031627159948068988,
|
|
Packit |
67cb25 |
0.00025196318894271013697498868,
|
|
Packit |
67cb25 |
0.00023038576352319596720521639,
|
|
Packit |
67cb25 |
-0.00184764688305622647661912949,
|
|
Packit |
67cb25 |
-0.00428150368246342983449679500,
|
|
Packit |
67cb25 |
0.00472320475775139727792570785,
|
|
Packit |
67cb25 |
0.02236166212367909720537378270,
|
|
Packit |
67cb25 |
-0.00025094711483145195758718975,
|
|
Packit |
67cb25 |
-0.06763282906132997367564227483,
|
|
Packit |
67cb25 |
-0.03072568147933337921231740072,
|
|
Packit |
67cb25 |
0.14854074933810638013507271751,
|
|
Packit |
67cb25 |
0.09684078322297646051350813354,
|
|
Packit |
67cb25 |
-0.29327378327917490880640319524,
|
|
Packit |
67cb25 |
-0.13319738582500757619095494590,
|
|
Packit |
67cb25 |
0.65728807805130053807821263905,
|
|
Packit |
67cb25 |
-0.60482312369011111190307686743,
|
|
Packit |
67cb25 |
0.24383467461259035373204158165,
|
|
Packit |
67cb25 |
-0.03807794736387834658869765888
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static const double h_20[20] = { 0.02667005790055555358661744877,
|
|
Packit |
67cb25 |
0.18817680007769148902089297368,
|
|
Packit |
67cb25 |
0.52720118893172558648174482796,
|
|
Packit |
67cb25 |
0.68845903945360356574187178255,
|
|
Packit |
67cb25 |
0.28117234366057746074872699845,
|
|
Packit |
67cb25 |
-0.24984642432731537941610189792,
|
|
Packit |
67cb25 |
-0.19594627437737704350429925432,
|
|
Packit |
67cb25 |
0.12736934033579326008267723320,
|
|
Packit |
67cb25 |
0.09305736460357235116035228984,
|
|
Packit |
67cb25 |
-0.07139414716639708714533609308,
|
|
Packit |
67cb25 |
-0.02945753682187581285828323760,
|
|
Packit |
67cb25 |
0.03321267405934100173976365318,
|
|
Packit |
67cb25 |
0.00360655356695616965542329142,
|
|
Packit |
67cb25 |
-0.01073317548333057504431811411,
|
|
Packit |
67cb25 |
0.00139535174705290116578931845,
|
|
Packit |
67cb25 |
0.00199240529518505611715874224,
|
|
Packit |
67cb25 |
-0.00068585669495971162656137098,
|
|
Packit |
67cb25 |
-0.00011646685512928545095148097,
|
|
Packit |
67cb25 |
0.00009358867032006959133405013,
|
|
Packit |
67cb25 |
-0.00001326420289452124481243668
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static const double g_20[20] = { -0.00001326420289452124481243668,
|
|
Packit |
67cb25 |
-0.00009358867032006959133405013,
|
|
Packit |
67cb25 |
-0.00011646685512928545095148097,
|
|
Packit |
67cb25 |
0.00068585669495971162656137098,
|
|
Packit |
67cb25 |
0.00199240529518505611715874224,
|
|
Packit |
67cb25 |
-0.00139535174705290116578931845,
|
|
Packit |
67cb25 |
-0.01073317548333057504431811411,
|
|
Packit |
67cb25 |
-0.00360655356695616965542329142,
|
|
Packit |
67cb25 |
0.03321267405934100173976365318,
|
|
Packit |
67cb25 |
0.02945753682187581285828323760,
|
|
Packit |
67cb25 |
-0.07139414716639708714533609308,
|
|
Packit |
67cb25 |
-0.09305736460357235116035228984,
|
|
Packit |
67cb25 |
0.12736934033579326008267723320,
|
|
Packit |
67cb25 |
0.19594627437737704350429925432,
|
|
Packit |
67cb25 |
-0.24984642432731537941610189792,
|
|
Packit |
67cb25 |
-0.28117234366057746074872699845,
|
|
Packit |
67cb25 |
0.68845903945360356574187178255,
|
|
Packit |
67cb25 |
-0.52720118893172558648174482796,
|
|
Packit |
67cb25 |
0.18817680007769148902089297368,
|
|
Packit |
67cb25 |
-0.02667005790055555358661744877
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static int
|
|
Packit |
67cb25 |
daubechies_init (const double **h1, const double **g1, const double **h2,
|
|
Packit |
67cb25 |
const double **g2, size_t * nc, size_t * offset,
|
|
Packit |
67cb25 |
size_t member)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
switch (member)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
case 4:
|
|
Packit |
67cb25 |
*h1 = h_4;
|
|
Packit |
67cb25 |
*g1 = g_4;
|
|
Packit |
67cb25 |
*h2 = h_4;
|
|
Packit |
67cb25 |
*g2 = g_4;
|
|
Packit |
67cb25 |
break;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
case 6:
|
|
Packit |
67cb25 |
*h1 = h_6;
|
|
Packit |
67cb25 |
*g1 = g_6;
|
|
Packit |
67cb25 |
*h2 = h_6;
|
|
Packit |
67cb25 |
*g2 = g_6;
|
|
Packit |
67cb25 |
break;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
case 8:
|
|
Packit |
67cb25 |
*h1 = h_8;
|
|
Packit |
67cb25 |
*g1 = g_8;
|
|
Packit |
67cb25 |
*h2 = h_8;
|
|
Packit |
67cb25 |
*g2 = g_8;
|
|
Packit |
67cb25 |
break;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
case 10:
|
|
Packit |
67cb25 |
*h1 = h_10;
|
|
Packit |
67cb25 |
*g1 = g_10;
|
|
Packit |
67cb25 |
*h2 = h_10;
|
|
Packit |
67cb25 |
*g2 = g_10;
|
|
Packit |
67cb25 |
break;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
case 12:
|
|
Packit |
67cb25 |
*h1 = h_12;
|
|
Packit |
67cb25 |
*g1 = g_12;
|
|
Packit |
67cb25 |
*h2 = h_12;
|
|
Packit |
67cb25 |
*g2 = g_12;
|
|
Packit |
67cb25 |
break;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
case 14:
|
|
Packit |
67cb25 |
*h1 = h_14;
|
|
Packit |
67cb25 |
*g1 = g_14;
|
|
Packit |
67cb25 |
*h2 = h_14;
|
|
Packit |
67cb25 |
*g2 = g_14;
|
|
Packit |
67cb25 |
break;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
case 16:
|
|
Packit |
67cb25 |
*h1 = h_16;
|
|
Packit |
67cb25 |
*g1 = g_16;
|
|
Packit |
67cb25 |
*h2 = h_16;
|
|
Packit |
67cb25 |
*g2 = g_16;
|
|
Packit |
67cb25 |
break;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
case 18:
|
|
Packit |
67cb25 |
*h1 = h_18;
|
|
Packit |
67cb25 |
*g1 = g_18;
|
|
Packit |
67cb25 |
*h2 = h_18;
|
|
Packit |
67cb25 |
*g2 = g_18;
|
|
Packit |
67cb25 |
break;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
case 20:
|
|
Packit |
67cb25 |
*h1 = h_20;
|
|
Packit |
67cb25 |
*g1 = g_20;
|
|
Packit |
67cb25 |
*h2 = h_20;
|
|
Packit |
67cb25 |
*g2 = g_20;
|
|
Packit |
67cb25 |
break;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
default:
|
|
Packit |
67cb25 |
return GSL_FAILURE;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
*nc = member;
|
|
Packit |
67cb25 |
*offset = 0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
return GSL_SUCCESS;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static int
|
|
Packit |
67cb25 |
daubechies_centered_init (const double **h1, const double **g1,
|
|
Packit |
67cb25 |
const double **h2, const double **g2, size_t * nc,
|
|
Packit |
67cb25 |
size_t * offset, size_t member)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
switch (member)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
case 4:
|
|
Packit |
67cb25 |
*h1 = h_4;
|
|
Packit |
67cb25 |
*g1 = g_4;
|
|
Packit |
67cb25 |
*h2 = h_4;
|
|
Packit |
67cb25 |
*g2 = g_4;
|
|
Packit |
67cb25 |
break;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
case 6:
|
|
Packit |
67cb25 |
*h1 = h_6;
|
|
Packit |
67cb25 |
*g1 = g_6;
|
|
Packit |
67cb25 |
*h2 = h_6;
|
|
Packit |
67cb25 |
*g2 = g_6;
|
|
Packit |
67cb25 |
break;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
case 8:
|
|
Packit |
67cb25 |
*h1 = h_8;
|
|
Packit |
67cb25 |
*g1 = g_8;
|
|
Packit |
67cb25 |
*h2 = h_8;
|
|
Packit |
67cb25 |
*g2 = g_8;
|
|
Packit |
67cb25 |
break;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
case 10:
|
|
Packit |
67cb25 |
*h1 = h_10;
|
|
Packit |
67cb25 |
*g1 = g_10;
|
|
Packit |
67cb25 |
*h2 = h_10;
|
|
Packit |
67cb25 |
*g2 = g_10;
|
|
Packit |
67cb25 |
break;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
case 12:
|
|
Packit |
67cb25 |
*h1 = h_12;
|
|
Packit |
67cb25 |
*g1 = g_12;
|
|
Packit |
67cb25 |
*h2 = h_12;
|
|
Packit |
67cb25 |
*g2 = g_12;
|
|
Packit |
67cb25 |
break;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
case 14:
|
|
Packit |
67cb25 |
*h1 = h_14;
|
|
Packit |
67cb25 |
*g1 = g_14;
|
|
Packit |
67cb25 |
*h2 = h_14;
|
|
Packit |
67cb25 |
*g2 = g_14;
|
|
Packit |
67cb25 |
break;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
case 16:
|
|
Packit |
67cb25 |
*h1 = h_16;
|
|
Packit |
67cb25 |
*g1 = g_16;
|
|
Packit |
67cb25 |
*h2 = h_16;
|
|
Packit |
67cb25 |
*g2 = g_16;
|
|
Packit |
67cb25 |
break;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
case 18:
|
|
Packit |
67cb25 |
*h1 = h_18;
|
|
Packit |
67cb25 |
*g1 = g_18;
|
|
Packit |
67cb25 |
*h2 = h_18;
|
|
Packit |
67cb25 |
*g2 = g_18;
|
|
Packit |
67cb25 |
break;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
case 20:
|
|
Packit |
67cb25 |
*h1 = h_20;
|
|
Packit |
67cb25 |
*g1 = g_20;
|
|
Packit |
67cb25 |
*h2 = h_20;
|
|
Packit |
67cb25 |
*g2 = g_20;
|
|
Packit |
67cb25 |
break;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
default:
|
|
Packit |
67cb25 |
return GSL_FAILURE;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
*nc = member;
|
|
Packit |
67cb25 |
*offset = (member >> 1);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
return GSL_SUCCESS;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static const gsl_wavelet_type daubechies_type = {
|
|
Packit |
67cb25 |
"daubechies",
|
|
Packit |
67cb25 |
&daubechies_init
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
static const gsl_wavelet_type daubechies_centered_type = {
|
|
Packit |
67cb25 |
"daubechies-centered",
|
|
Packit |
67cb25 |
&daubechies_centered_init
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
const gsl_wavelet_type *gsl_wavelet_daubechies = &daubechies_type;
|
|
Packit |
67cb25 |
const gsl_wavelet_type *gsl_wavelet_daubechies_centered =
|
|
Packit |
67cb25 |
&daubechies_centered_type;
|