![]() |
NFFT
3.3.2
|
00001 /* 00002 * Copyright (c) 2002, 2016 Jens Keiner, Stefan Kunis, Daniel Potts 00003 * 00004 * This program is free software; you can redistribute it and/or modify it under 00005 * the terms of the GNU General Public License as published by the Free Software 00006 * Foundation; either version 2 of the License, or (at your option) any later 00007 * version. 00008 * 00009 * This program is distributed in the hope that it will be useful, but WITHOUT 00010 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 00011 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 00012 * details. 00013 * 00014 * You should have received a copy of the GNU General Public License along with 00015 * this program; if not, write to the Free Software Foundation, Inc., 51 00016 * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 00017 */ 00018 00019 #ifndef _FPT_H_ 00020 #define _FPT_H_ 00021 00025 typedef struct fpt_step_ 00026 { 00027 bool stable; 00030 int Ns; 00031 int ts; 00032 double **a11,**a12,**a21,**a22; 00033 double *g; 00034 } fpt_step; 00035 00039 typedef struct fpt_data_ 00040 { 00041 fpt_step **steps; 00042 int k_start; 00043 double *alphaN; 00044 double *betaN; 00045 double *gammaN; 00046 double alpha_0; 00047 double beta_0; 00048 double gamma_m1; 00049 /* Data for direct transform. */ 00050 double *alpha; 00051 double *beta; 00052 double *gamma; 00053 } fpt_data; 00054 00058 typedef struct fpt_set_s_ 00059 { 00060 unsigned int flags; 00061 int M; 00062 int N; 00064 int t; 00065 fpt_data *dpt; 00066 double **xcvecs; 00069 double *xc; 00070 double _Complex *temp; 00071 double _Complex *work; 00072 double _Complex *result; 00073 double _Complex *vec3; 00074 double _Complex *vec4; 00075 double _Complex *z; 00076 fftw_plan *plans_dct3; 00078 fftw_plan *plans_dct2; 00080 fftw_r2r_kind *kinds; 00082 fftw_r2r_kind *kindsr; 00085 int *lengths; 00087 /* Data for slow transforms. */ 00088 double *xc_slow; 00089 } fpt_set_s; 00090 00091 #endif /*_FPT_H_*/