1 /** D bindings for GSL. 2 Authors: Chibisi Chima-Okereke 3 Copyright: Copyright (c) 2016, Chibisi Chima-Okereke. All rights reserved. 4 License: Boost License 1.0 5 */ 6 7 module gsl.wavelet; 8 import gsl.errno; 9 import gsl.vector; 10 import gsl.matrix; 11 import gsl.wavelet; 12 13 extern (C): 14 15 //gsl_wavelet 16 extern __gshared const(gsl_wavelet_type)* gsl_wavelet_daubechies; 17 extern __gshared const(gsl_wavelet_type)* gsl_wavelet_daubechies_centered; 18 extern __gshared const(gsl_wavelet_type)* gsl_wavelet_haar; 19 extern __gshared const(gsl_wavelet_type)* gsl_wavelet_haar_centered; 20 extern __gshared const(gsl_wavelet_type)* gsl_wavelet_bspline; 21 extern __gshared const(gsl_wavelet_type)* gsl_wavelet_bspline_centered; 22 23 enum gsl_wavelet_direction 24 { 25 gsl_wavelet_forward = 1, 26 gsl_wavelet_backward = -1 27 } 28 29 struct gsl_wavelet_type 30 { 31 const(char)* name; 32 int function (const(double*)*, const(double*)*, const(double*)*, const(double*)*, size_t*, size_t*, size_t) init; 33 } 34 35 struct gsl_wavelet 36 { 37 const(gsl_wavelet_type)* type; 38 const(double)* h1; 39 const(double)* g1; 40 const(double)* h2; 41 const(double)* g2; 42 size_t nc; 43 size_t offset; 44 } 45 46 struct gsl_wavelet_workspace 47 { 48 double* scratch; 49 size_t n; 50 } 51 52 gsl_wavelet* gsl_wavelet_alloc (const(gsl_wavelet_type)* T, size_t k); 53 void gsl_wavelet_free (gsl_wavelet* w); 54 const(char)* gsl_wavelet_name (const(gsl_wavelet)* w); 55 gsl_wavelet_workspace* gsl_wavelet_workspace_alloc (size_t n); 56 void gsl_wavelet_workspace_free (gsl_wavelet_workspace* work); 57 int gsl_wavelet_transform (const(gsl_wavelet)* w, double* data, size_t stride, size_t n, gsl_wavelet_direction dir, gsl_wavelet_workspace* work); 58 int gsl_wavelet_transform_forward (const(gsl_wavelet)* w, double* data, size_t stride, size_t n, gsl_wavelet_workspace* work); 59 int gsl_wavelet_transform_inverse (const(gsl_wavelet)* w, double* data, size_t stride, size_t n, gsl_wavelet_workspace* work); 60 61 //gsl_wavelet2d 62 int gsl_wavelet2d_transform (const(gsl_wavelet)* w, double* data, size_t tda, size_t size1, size_t size2, gsl_wavelet_direction dir, gsl_wavelet_workspace* work); 63 int gsl_wavelet2d_transform_forward (const(gsl_wavelet)* w, double* data, size_t tda, size_t size1, size_t size2, gsl_wavelet_workspace* work); 64 int gsl_wavelet2d_transform_inverse (const(gsl_wavelet)* w, double* data, size_t tda, size_t size1, size_t size2, gsl_wavelet_workspace* work); 65 int gsl_wavelet2d_nstransform (const(gsl_wavelet)* w, double* data, size_t tda, size_t size1, size_t size2, gsl_wavelet_direction dir, gsl_wavelet_workspace* work); 66 int gsl_wavelet2d_nstransform_forward (const(gsl_wavelet)* w, double* data, size_t tda, size_t size1, size_t size2, gsl_wavelet_workspace* work); 67 int gsl_wavelet2d_nstransform_inverse (const(gsl_wavelet)* w, double* data, size_t tda, size_t size1, size_t size2, gsl_wavelet_workspace* work); 68 int gsl_wavelet2d_transform_matrix (const(gsl_wavelet)* w, gsl_matrix* a, gsl_wavelet_direction dir, gsl_wavelet_workspace* work); 69 int gsl_wavelet2d_transform_matrix_forward (const(gsl_wavelet)* w, gsl_matrix* a, gsl_wavelet_workspace* work); 70 int gsl_wavelet2d_transform_matrix_inverse (const(gsl_wavelet)* w, gsl_matrix* a, gsl_wavelet_workspace* work); 71 int gsl_wavelet2d_nstransform_matrix (const(gsl_wavelet)* w, gsl_matrix* a, gsl_wavelet_direction dir, gsl_wavelet_workspace* work); 72 int gsl_wavelet2d_nstransform_matrix_forward (const(gsl_wavelet)* w, gsl_matrix* a, gsl_wavelet_workspace* work); 73 int gsl_wavelet2d_nstransform_matrix_inverse (const(gsl_wavelet)* w, gsl_matrix* a, gsl_wavelet_workspace* work);