ccgsl 2.7.2
C++wrappersforGnuScientificLibrary
wavelet2d.hpp
Go to the documentation of this file.
1/*
2 * $Id: wavelet2d.hpp 220 2012-08-07 16:29:22Z jdl3 $
3 * Copyright (C) 2012 John D Lamb
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or (at
8 * your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 */
19
20#ifndef CCGSL_WAVELET2D_HPP
21#define CCGSL_WAVELET2D_HPP
22
23#include<gsl/gsl_wavelet2d.h>
24#include"wavelet.hpp"
25#include"matrix.hpp"
26
27namespace gsl {
31 class wavelet2d : public wavelet {
32 // Refines random access container
33 // Refines assignable
39 explicit wavelet2d( type& T, size_t const k ) : wavelet( T, k ){}
46 explicit wavelet2d( gsl_wavelet* v ) : wavelet( v ){}
47 // copy constructor
52 wavelet2d( wavelet2d const& v ) : wavelet( v ){}
53 // assignment operator
59 // first, possibly delete anything pointed to by this
60 if( count == 0 or --*count == 0 ){
61 if( ccgsl_pointer != 0 ) gsl_wavelet_free( ccgsl_pointer );
62 delete count;
63 } // Then copy
64 ccgsl_pointer = v.ccgsl_pointer; count = v.count; if( count != 0 ) ++*count; return *this;
65 }
66#ifdef __GXX_EXPERIMENTAL_CXX0X__
72 ccgsl_pointer = v.ccgsl_pointer;
73 count = nullptr;
74 std::swap( count, v.count );
75 v.ccgsl_pointer = nullptr;
76 }
83 wavelet2d( std::move( v ) ).swap( *this );
84 return *this;
85 }
86#endif
87
98 int transform( double* data, size_t tda, size_t size1, size_t size2,
99 gsl_wavelet_direction dir, wavelet::workspace& work ) const {
100 return gsl_wavelet2d_transform( get(), data, tda, size1, size2, dir, work.get() ); }
101
111 int transform_forward( double* data, size_t tda, size_t size1, size_t size2,
112 wavelet::workspace& work ) const {
113 return gsl_wavelet2d_transform_forward( get(), data, tda, size1, size2, work.get() ); }
114
124 int transform_inverse( double* data, size_t tda, size_t size1, size_t size2,
125 wavelet::workspace& work ) const {
126 return gsl_wavelet2d_transform_inverse( get(), data, tda, size1, size2, work.get() ); }
127
138 int nstransform( double* data, size_t tda, size_t size1, size_t size2,
139 gsl_wavelet_direction dir, wavelet::workspace work ) const {
140 return gsl_wavelet2d_nstransform( get(), data, tda, size1, size2, dir, work.get() );
141 }
142
152 int nstransform_forward( double* data, size_t tda, size_t size1, size_t size2,
153 wavelet::workspace& work ) const {
154 return gsl_wavelet2d_nstransform_forward( get(), data, tda, size1, size2, work.get() ); }
155
165 int nstransform_inverse( double* data, size_t tda, size_t size1, size_t size2,
166 wavelet::workspace& work ) const {
167 return gsl_wavelet2d_nstransform_inverse( get(), data, tda, size1, size2, work.get() ); }
168
176 int transform_matrix( matrix& a, gsl_wavelet_direction dir,
177 wavelet::workspace& work ) const {
178 return gsl_wavelet2d_transform_matrix( get(), a.get(), dir, work.get() ); }
179
187 return gsl_wavelet2d_transform_matrix_forward( get(), a.get(), work.get() ); }
188
196 return gsl_wavelet2d_transform_matrix_inverse( get(), a.get(), work.get() ); }
197
205 int nstransform_matrix( matrix& a, gsl_wavelet_direction dir,
206 wavelet::workspace& work ) const {
207 return gsl_wavelet2d_nstransform_matrix( get(), a.get(), dir, work.get() ); }
208
216 return gsl_wavelet2d_nstransform_matrix_forward( get(), a.get(), work.get() ); }
217
225 return gsl_wavelet2d_nstransform_matrix_inverse( get(), a.get(), work.get() ); }
226
227 };
228}
229#endif
This class handles matrix objects as shared handles.
Definition: matrix.hpp:72
Wavelets in two dimensions.
Definition: wavelet2d.hpp:31
wavelet2d(wavelet2d &&v)
Move constructor.
Definition: wavelet2d.hpp:71
wavelet2d & operator=(wavelet2d &&v)
Move operator.
Definition: wavelet2d.hpp:82
int nstransform_matrix(matrix &a, gsl_wavelet_direction dir, wavelet::workspace &work) const
C++ version of gsl_wavelet2d_nstransform_matrix().
Definition: wavelet2d.hpp:205
wavelet2d(gsl_wavelet *v)
Could construct from a gsl_wavelet.
Definition: wavelet2d.hpp:46
wavelet2d & operator=(wavelet2d const &v)
The assignment operator.
Definition: wavelet2d.hpp:58
wavelet2d(type &T, size_t const k)
The default constructor creates a new wavelet2d with n elements.
Definition: wavelet2d.hpp:39
wavelet2d(wavelet2d const &v)
The copy constructor.
Definition: wavelet2d.hpp:52
int nstransform(double *data, size_t tda, size_t size1, size_t size2, gsl_wavelet_direction dir, wavelet::workspace work) const
C++ version of gsl_wavelet2d_nstransform().
Definition: wavelet2d.hpp:138
int nstransform_matrix_inverse(matrix &a, wavelet::workspace &work) const
C++ version of gsl_wavelet2d_nstransform_matrix_inverse().
Definition: wavelet2d.hpp:224
int transform_matrix(matrix &a, gsl_wavelet_direction dir, wavelet::workspace &work) const
C++ version of gsl_wavelet2d_transform_matrix().
Definition: wavelet2d.hpp:176
int transform_matrix_forward(matrix &a, wavelet::workspace &work) const
C++ version of gsl_wavelet2d_transform_matrix_forward().
Definition: wavelet2d.hpp:186
int nstransform_inverse(double *data, size_t tda, size_t size1, size_t size2, wavelet::workspace &work) const
C++ version of gsl_wavelet2d_nstransform_inverse().
Definition: wavelet2d.hpp:165
int nstransform_forward(double *data, size_t tda, size_t size1, size_t size2, wavelet::workspace &work) const
C++ version of gsl_wavelet2d_nstransform_forward().
Definition: wavelet2d.hpp:152
int nstransform_matrix_forward(matrix &a, wavelet::workspace &work) const
C++ version of gsl_wavelet2d_nstransform_matrix_forward().
Definition: wavelet2d.hpp:215
int transform(double *data, size_t tda, size_t size1, size_t size2, gsl_wavelet_direction dir, wavelet::workspace &work) const
C++ version of gsl_wavelet2d_transform().
Definition: wavelet2d.hpp:98
int transform_matrix_inverse(matrix &a, wavelet::workspace &work) const
C++ version of gsl_wavelet2d_transform_matrix_inverse().
Definition: wavelet2d.hpp:195
int transform_forward(double *data, size_t tda, size_t size1, size_t size2, wavelet::workspace &work) const
C++ version of gsl_wavelet2d_transform_forward().
Definition: wavelet2d.hpp:111
int transform_inverse(double *data, size_t tda, size_t size1, size_t size2, wavelet::workspace &work) const
C++ version of gsl_wavelet2d_transform_inverse().
Definition: wavelet2d.hpp:124
Workspace for wavelets.
Definition: wavelet.hpp:271
gsl_wavelet_workspace * get() const
Get the gsl_wavelet_workspace.
Definition: wavelet.hpp:447
Wavelets in one dimension.
Definition: wavelet.hpp:30
gsl_wavelet_type const * type
Define gsl::wavelet::static type.
Definition: wavelet.hpp:35
gsl_wavelet * get() const
Get the gsl_wavelet.
Definition: wavelet.hpp:211
size_t * count
The shared reference count.
Definition: wavelet.hpp:204
gsl_wavelet * ccgsl_pointer
The shared pointer.
Definition: wavelet.hpp:200
double a(int order, double qq)
C++ version of gsl_sf_mathieu_a().
Definition: sf_mathieu.hpp:272
The gsl package creates an interface to the GNU Scientific Library for C++.
Definition: blas.hpp:34