NFFT  3.3.0
fpt.h
1 /*
2  * Copyright (c) 2002, 2015 Jens Keiner, Stefan Kunis, Daniel Potts
3  *
4  * This program is free software; you can redistribute it and/or modify it under
5  * the terms of the GNU General Public License as published by the Free Software
6  * Foundation; either version 2 of the License, or (at your option) any later
7  * version.
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
12  * details.
13  *
14  * You should have received a copy of the GNU General Public License along with
15  * this program; if not, write to the Free Software Foundation, Inc., 51
16  * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  */
18 
19 /* $Id$ */
20 
21 #ifndef _FPT_H_
22 #define _FPT_H_
23 
27 typedef struct fpt_step_
28 {
29  bool stable;
32  int Ns;
33  int ts;
34  double **a11,**a12,**a21,**a22;
35  double *g;
36 } fpt_step;
37 
41 typedef struct fpt_data_
42 {
43  fpt_step **steps;
44  int k_start;
45  double *alphaN;
46  double *betaN;
47  double *gammaN;
48  double alpha_0;
49  double beta_0;
50  double gamma_m1;
51  /* Data for direct transform. */
52  double *alpha;
53  double *beta;
54  double *gamma;
55 } fpt_data;
56 
60 typedef struct fpt_set_s_
61 {
62  unsigned int flags;
63  int M;
64  int N;
66  int t;
67  fpt_data *dpt;
68  double **xcvecs;
71  double *xc;
72  double _Complex *temp;
73  double _Complex *work;
74  double _Complex *result;
75  double _Complex *vec3;
76  double _Complex *vec4;
77  double _Complex *z;
78  fftw_plan *plans_dct3;
80  fftw_plan *plans_dct2;
82  fftw_r2r_kind *kinds;
84  fftw_r2r_kind *kindsr;
87  int *lengths;
89  /* Data for slow transforms. */
90  double *xc_slow;
91 } fpt_set_s;
92 
93 #endif /*_FPT_H_*/
Holds data for a single multiplication step in the cascade summation.
Definition: fpt.c:63
double * xc
Array for Chebychev-nodes.
Definition: fpt.c:107
double * alpha
< TODO Add comment here.
Definition: fpt.h:52
bool stable
Indicates if the values contained represent a fast or a slow stabilized step.
Definition: fpt.c:65
double * alphaN
TODO Add comment here.
Definition: fpt.c:81
int M
The number of DPT transforms.
Definition: fpt.c:99
int * lengths
Transform lengths for fftw library.
Definition: fpt.c:123
double alpha_0
TODO Add comment here.
Definition: fpt.c:84
int t
The exponent of N.
Definition: fpt.c:102
double * beta
TODO Add comment here.
Definition: fpt.h:53
Holds data for a set of cascade summations.
Definition: fpt.c:96
fftw_r2r_kind * kinds
Transform kinds for fftw library.
Definition: fpt.c:118
fpt_data * dpt
The DPT transform data.
Definition: fpt.c:103
fftw_plan * plans_dct3
Transform plans for the fftw library.
Definition: fpt.c:114
double * gammaN
TODO Add comment here.
Definition: fpt.c:83
int N
The transform length.
Definition: fpt.c:100
Holds data for a single cascade summation.
Definition: fpt.c:77
fftw_plan * plans_dct2
Transform plans for the fftw library.
Definition: fpt.c:116
struct fpt_set_s_ fpt_set_s
Holds data for a set of cascade summations.
int Ns
TODO Add comment here.
Definition: fpt.c:68
double beta_0
TODO Add comment here.
Definition: fpt.c:85
double ** a22
The matrix components.
Definition: fpt.c:70
fpt_step ** steps
The cascade summation steps.
Definition: fpt.c:79
unsigned int flags
The flags.
Definition: fpt.h:62
double gamma_m1
TODO Add comment here.
Definition: fpt.c:86
int k_start
TODO Add comment here.
Definition: fpt.c:80
int ts
TODO Add comment here.
Definition: fpt.c:69
double * betaN
TODO Add comment here.
Definition: fpt.c:82
struct fpt_data_ fpt_data
Holds data for a single cascade summation.
struct fpt_step_ fpt_step
Holds data for a single multiplication step in the cascade summation.
double ** xcvecs
Array of pointers to arrays containing the Chebyshev nodes.
Definition: fpt.c:104
double * gamma
TODO Add comment here.
Definition: fpt.h:54
fftw_r2r_kind * kindsr
Transform kinds for fftw library.
Definition: fpt.c:120