NFFT  3.4.0alpha
fpt.h
1 /*
2  * Copyright (c) 2002, 2017 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 #ifndef _FPT_H_
20 #define _FPT_H_
21 
25 typedef struct fpt_step_
26 {
27  bool stable;
30  int Ns;
31  int ts;
32  double **a11,**a12,**a21,**a22;
33  double *g;
34 } fpt_step;
35 
39 typedef struct fpt_data_
40 {
41  fpt_step **steps;
42  int k_start;
43  double *alphaN;
44  double *betaN;
45  double *gammaN;
46  double alpha_0;
47  double beta_0;
48  double gamma_m1;
49  /* Data for direct transform. */
50  double *alpha;
51  double *beta;
52  double *gamma;
53 } fpt_data;
54 
58 typedef struct fpt_set_s_
59 {
60  unsigned int flags;
61  int M;
62  int N;
64  int t;
65  fpt_data *dpt;
66  double **xcvecs;
69  double *xc;
70  double _Complex *temp;
71  double _Complex *work;
72  double _Complex *result;
73  double _Complex *vec3;
74  double _Complex *vec4;
75  double _Complex *z;
76  fftw_plan *plans_dct3;
78  fftw_plan *plans_dct2;
80  fftw_r2r_kind *kinds;
82  fftw_r2r_kind *kindsr;
85  int *lengths;
87  /* Data for slow transforms. */
88  double *xc_slow;
89 } fpt_set_s;
90 
91 #endif /*_FPT_H_*/
Holds data for a single multiplication step in the cascade summation.
Definition: fpt.c:61
double * alpha
< TODO Add comment here.
Definition: fpt.h:50
bool stable
Indicates if the values contained represent a fast or a slow stabilized step.
Definition: fpt.c:63
double * beta
TODO Add comment here.
Definition: fpt.h:51
Holds data for a set of cascade summations.
Definition: fpt.c:94
Holds data for a single cascade summation.
Definition: fpt.c:75
struct fpt_set_s_ fpt_set_s
Holds data for a set of cascade summations.
int Ns
TODO Add comment here.
Definition: fpt.c:66
double ** a22
The matrix components.
Definition: fpt.c:68
unsigned int flags
The flags.
Definition: fpt.h:60
int ts
TODO Add comment here.
Definition: fpt.c:67
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 * gamma
TODO Add comment here.
Definition: fpt.h:52