| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| #include <config.h> |
| #include <gsl/gsl_errno.h> |
| #include <gsl/gsl_math.h> |
| #include <gsl/gsl_wavelet.h> |
| |
| static const double ch_2[2] = { M_SQRT1_2, M_SQRT1_2 }; |
| static const double cg_2[2] = { M_SQRT1_2, -(M_SQRT1_2) }; |
| |
| static int |
| haar_init (const double **h1, const double **g1, const double **h2, |
| const double **g2, size_t * nc, size_t * offset, |
| const size_t member) |
| { |
| if (member != 2) |
| { |
| return GSL_FAILURE; |
| } |
| |
| *h1 = ch_2; |
| *g1 = cg_2; |
| *h2 = ch_2; |
| *g2 = cg_2; |
| |
| *nc = 2; |
| *offset = 0; |
| |
| return GSL_SUCCESS; |
| } |
| |
| static int |
| haar_centered_init (const double **h1, const double **g1, const double **h2, |
| const double **g2, size_t * nc, size_t * offset, |
| const size_t member) |
| { |
| if (member != 2) |
| { |
| return GSL_FAILURE; |
| } |
| |
| *h1 = ch_2; |
| *g1 = cg_2; |
| *h2 = ch_2; |
| *g2 = cg_2; |
| |
| *nc = 2; |
| *offset = 1; |
| |
| return GSL_SUCCESS; |
| } |
| |
| static const gsl_wavelet_type haar_type = { |
| "haar", |
| &haar_init |
| }; |
| |
| static const gsl_wavelet_type haar_centered_type = { |
| "haar-centered", |
| &haar_centered_init |
| }; |
| |
| const gsl_wavelet_type *gsl_wavelet_haar = &haar_type; |
| const gsl_wavelet_type *gsl_wavelet_haar_centered = &haar_centered_type; |