NFFT Logo 3.0 API Reference
Main Page | Modules | Data Structures | Directories | File List | Data Fields | Globals

util.h

Go to the documentation of this file.
00001 
00004 #ifndef utils_h_inc
00005 #define utils_h_inc
00006 
00008 #include <complex.h>
00009 
00010 /*###########################################################################*/
00011 /*###########################################################################*/
00012 /*###########################################################################*/
00013 
00027 #define NFFT_SWAP_complex(x,y) {double complex* temp; temp=(x); (x)=(y); (y)=temp;}
00028 
00031 #define NFFT_SWAP_double(x,y) {double* temp; temp=(x); (x)=(y); (y)=temp;}
00032 
00035 #define PI 3.1415926535897932384
00036 
00039 #define NFFT_MAX(a,b) ((a)>(b)? (a) : (b))
00040 
00043 #define NFFT_MIN(a,b) ((a)<(b)? (a) : (b))
00044 
00045 /* ######################################################################### */
00046 /* ########## Little helpers ############################################### */
00047 /* ######################################################################### */
00048 
00051 double nfft_second();
00052 
00055 int nfft_total_used_memory();
00056 
00059 int nfft_ld(int m);
00060 
00063 int nfft_int_2_pow(int a);
00064 
00067 int nfft_next_power_of_2(int N);
00068 
00071 void nfft_next_power_of_2_exp(int N, int *N2, int *t);
00072 
00073 /* ######################################################################### */
00074 /* ########## Window function related ###################################### */
00075 /* ######################################################################### */
00076 
00079 double nfft_sinc(double x);
00080 
00083 double nfft_bspline_old(int k,double x,double *A);
00084 
00088 double nfft_bspline(int k, double x, double *scratch);
00089 
00093 double nfft_i0(double x);
00094 
00095 /* ######################################################################### */
00096 /* ########## Vector routines ############################################## */
00097 /* ######################################################################### */
00098 
00101 int nfft_prod_int(int *vec, int d);
00102 
00105 int nfct_prod_int(int *vec, int d);
00106 
00109 int nfst_prod_minus_a_int(int *vec, int a, int d);
00110 
00113 int nfft_plain_loop(int *idx,int *N,int d);
00114 
00117 double nfft_prod_real(double *vec,int d);
00118 
00121 double nfft_dot_complex(double complex* x, int n);
00122 
00125 double nfft_dot_double( double*  x, int n);
00126 
00129 double nfft_dot_w_complex(double complex* x, double* w, int n);
00130 
00133 double nfft_dot_w_double( double*  x, double* w, int n);
00134 
00138 double nfft_dot_w_w2_complex(double complex* x, double* w, double* w2, int n);
00139 
00143 double nfft_dot_w2_complex(double complex* x, double* w2, int n);
00144 
00147 void nfft_cp_complex(double complex* x, double complex* y, int n);
00148 
00151 void nfft_cp_double( double*  x, double*  y, int n);
00152 
00155 void nfft_cp_a_complex(double complex* x, double a, double complex* y, int n);
00156 
00159 void nfft_cp_w_complex(double complex* x, double* w, double complex* y, int n);
00160 
00163 void nfft_cp_w_double( double*  x, double* w, double*  y, int n);
00164 
00167 void nfft_upd_axpy_complex(double complex* x, double a, double complex* y, int n);
00168 
00171 void nfft_upd_axpy_double( double*  x, double a, double*  y, int n);
00172 
00175 void nfft_upd_xpay_complex(double complex* x, double a, double complex* y, int n);
00176 
00179 void nfft_upd_xpay_double( double*  x, double a, double*  y, int n);
00180 
00183 void nfft_upd_axpby_complex(double complex* x, double a, double complex* y, double b, int n);
00184 
00187 void nfft_upd_axpby_double(  double* x, double a, double*  y, double b, int n);
00188 
00191 void nfft_upd_xpawy_complex(double complex* x, double a, double* w, double complex* y, int n);
00192 
00195 void nfft_upd_xpawy_double( double*  x, double a, double* w, double*  y, int n);
00196 
00199 void nfft_upd_axpwy_complex(double complex* x, double a, double* w, double complex* y, int n);
00200 
00203 void nfft_upd_axpwy_double( double*  x, double a, double* w, double*  y, int n);
00204 
00207 void nfft_fftshift_complex(double complex *x, int d, int* N);
00208 
00211 double nfft_error_l_infty_complex(double complex *x, double complex *y, int n);
00212 
00215 double nfft_error_l_infty_double(double *x, double *y, int n);
00216 
00219 double nfft_error_l_infty_1_complex(double complex *x, double complex *y, int n, double complex *z,
00220                                int m);
00221 
00224 double nfft_error_l_infty_1_double(double *x, double *y, int n, double *z,
00225             int m);
00226 
00229 double nfft_error_l_2_complex(double complex *x, double complex *y, int n);
00230 
00233 double  nfft_error_l_2_double(double *x, double *y, int n);
00234 
00237 void nfft_vpr_int(int *x, int n, char *text);
00238 
00241 void nfft_vpr_double(double *x, int n, char *text);
00242 
00245 void nfft_vpr_complex(double complex *x, int n, char *text);
00246 
00249 void nfft_vrand_unit_complex(double complex *x, int n);
00250 
00253 void nfft_vrand_shifted_unit_double(double *x, int n);
00254 
00255 /* ######################################################################### */
00256 /* ########## Helpers for inverse transforms ############################### */
00257 /* ######################################################################### */
00258 
00260 void nfft_voronoi_weights_1d(double *w, double *x, int M);
00261 
00265 double nfft_modified_fejer(int N,int kk);
00266 
00269 double nfft_modified_jackson2(int N,int kk);
00270 
00273 double nfft_modified_jackson4(int N,int kk);
00274 
00277 double nfft_modified_sobolev(double mu,int kk);
00278 
00281 double nfft_modified_multiquadric(double mu,double c,int kk);
00282 
00285 #endif

Generated on 1 Nov 2006 by Doxygen 1.4.4