26 #if ! defined (octave_oct_fftw_h)
27 #define octave_oct_fftw_h 1
29 #include "octave-config.h"
68 static bool instance_ok (
void);
77 ? s_instance->do_create_plan (dir, rank, dims, howmany, stride,
88 ? s_instance->do_create_plan (rank, dims, howmany, stride, dist,
97 return instance_ok () ? s_instance->do_method () : dummy;
104 return instance_ok () ? s_instance->do_method (meth) : dummy;
107 static void threads (
int nt);
111 return instance_ok () ? s_instance->m_nthreads : 0;
119 {
delete s_instance; s_instance =
nullptr; }
122 do_create_plan (
int dir,
const int rank,
const dim_vector& dims,
128 do_create_plan (
const int rank,
const dim_vector& dims,
132 FftwMethod do_method (
void);
134 FftwMethod do_method (FftwMethod meth);
158 bool m_simd_align[2];
215 static bool instance_ok (
void);
223 return instance_ok ()
224 ? s_instance->do_create_plan (dir, rank, dims, howmany, stride,
234 return instance_ok ()
235 ? s_instance->do_create_plan (rank, dims, howmany, stride, dist,
244 return instance_ok () ? s_instance->do_method () : dummy;
251 return instance_ok () ? s_instance->do_method (meth) : dummy;
254 static void threads (
int nt);
258 return instance_ok () ? s_instance->m_nthreads : 0;
266 {
delete s_instance; s_instance =
nullptr; }
269 do_create_plan (
int dir,
const int rank,
const dim_vector& dims,
275 do_create_plan (
const int rank,
const dim_vector& dims,
279 FftwMethod do_method (
void);
281 FftwMethod do_method (FftwMethod meth);
305 bool m_simd_align[2];
347 static int fft (
const double *in,
Complex *out, std::size_t npts,
350 static int fft (
const Complex *in,
Complex *out, std::size_t npts,
353 static int ifft (
const Complex *in,
Complex *out, std::size_t npts,
363 static int fft (
const float *in,
FloatComplex *out, std::size_t npts,
373 static int fftNd (
const float *,
FloatComplex *,
const int,
Vector representing the dimensions (size) of an Array.
static FftwMethod method(FftwMethod meth)
static fftw_planner * s_instance
static void cleanup_instance(void)
static void * create_plan(const int rank, const dim_vector &dims, octave_idx_type howmany, octave_idx_type stride, octave_idx_type dist, const double *in, Complex *out)
static void * create_plan(int dir, const int rank, const dim_vector &dims, octave_idx_type howmany, octave_idx_type stride, octave_idx_type dist, const Complex *in, Complex *out)
static FftwMethod method(void)
fftw_planner(const fftw_planner &)=delete
fftw(const fftw &)=delete
static void * create_plan(const int rank, const dim_vector &dims, octave_idx_type howmany, octave_idx_type stride, octave_idx_type dist, const float *in, FloatComplex *out)
static void cleanup_instance(void)
static FftwMethod method(void)
static void * create_plan(int dir, const int rank, const dim_vector &dims, octave_idx_type howmany, octave_idx_type stride, octave_idx_type dist, const FloatComplex *in, FloatComplex *out)
static FftwMethod method(FftwMethod meth)
float_fftw_planner(const float_fftw_planner &)=delete
static float_fftw_planner * s_instance
OCTAVE_BEGIN_NAMESPACE(octave) static octave_value daspk_fcn
std::complex< double > Complex
std::complex< float > FloatComplex
OCTAVE_API std::string fftw_version(void)
OCTAVE_API std::string fftwf_version(void)