00001
00004 #ifndef API_H
00005 #define API_H
00006
00007 #include "config.h"
00008
00009 #include "nfsft_old.h"
00010
00011 #include <stdio.h>
00012 #include <math.h>
00013 #include <string.h>
00014
00015 #include "nfft3.h"
00016
00017
00018 #define BWEXP_MAX 10
00019
00020
00021 #define BW_MAX 1024
00022
00023 #define ROW(k) (k*(BW_MAX+1))
00024 #define ROWK(k) (k*(BW_MAX+1)+k)
00025
00026
00027
00028 #define FIRST_L (int)floor(ntilde/(double)plength)
00029 #define LAST_L (int)ceil((Mtilde+1)/(double)plength)-1
00030
00031 #ifdef LOGFILE
00032 #define LOGFILENAME "nfsft.log"
00033 #define LOGFILENAME2 "nfsft_norms.log"
00034 #endif
00035
00036 #define MYEPS (1E-14)
00037
00045 struct U_type_old
00046 {
00051 int stable;
00053 double *m1,*m2,*m3,*m4;
00054 };
00055
00061 struct nfsft_plan_s_old
00062 {
00064 int flags;
00066 int D;
00068 int M;
00070 int N;
00071 int t;
00073 double *angles;
00075 complex **f_hat;
00077 complex *f;
00079 nfft_plan plan_nfft;
00080 };
00081
00087 struct infsft_plan_s_old
00088 {
00089 nfsft_plan_old direct_plan;
00090 int infsft_flags_old;
00091 complex *given_f;
00092 complex *r_iter;
00093 complex *v_iter;
00094 complex **f_hat_iter;
00095 complex **f_hat_iter_2nd;
00096 complex **p_hat_iter;
00097 complex **z_hat_iter;
00098 double *w;
00099 double **w_hat;
00100 double dot_r_iter;
00101 double dot_r_iter_old;
00102 double dot_v_iter;
00103 double alpha_iter;
00104 double alpha_iter_2nd;
00105 double beta_iter;
00106 double gamma_iter;
00107 double gamma_iter_old;
00108 double dot_alpha_iter;
00109 double dot_z_hat_iter;
00110 double dot_z_hat_iter_old;
00111 double dot_p_hat_iter;
00112 };
00113
00114
00120 struct nfsft_wisdom_old
00121 {
00123 int initialized;
00124 nfsft_precompute_flags_old flags;
00126 int t;
00128 int N;
00130 double *alpha;
00132 double *beta;
00134 double *gamma;
00136 double threshold;
00137
00138 struct U_type_old ****U;
00140 complex *work,*old,*vec1,*vec2,*vec3,*vec4, *a2, *b2;
00142 fftw_plan *plans_dct3;
00144 fftw_plan *plans_dct2;
00146 fftw_r2r_kind *kinds;
00148 fftw_r2r_kind *kindsr;
00150 int *lengths;
00151 complex *ergeb;
00152
00153
00154 double *flft_alpha;
00155 double *flft_beta;
00156 double *flft_gamma;
00157
00158 complex *z;
00159 };
00160 #endif