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

accuracy.c

00001 #include <math.h>
00002 #include <stdlib.h>
00003 #include "nfft3.h"
00004 #include "util.h"
00005 
00006 void accuracy(int d)
00007 {
00008   int m,t;                         
00009   nnfft_plan my_plan;                   
00010   double complex *slow;
00011   
00012   int N[d],n[d];
00013   int M_total,N_total;
00014   M_total=10000;N_total=1;
00015   
00016   slow=(double complex*)fftw_malloc(M_total*sizeof(double complex));
00017   
00018   for(t=0; t<d; t++)
00019     {
00020       N[t]=(1<<(12/d));
00021       n[t]=2*N[t];
00022       N_total*=N[t];
00023     }
00024   
00026   for(m=0; m<10; m++)
00027     {
00028       nnfft_init_guru(&my_plan, d, N_total, M_total, N, n, m,
00029           PRE_PSI| PRE_PHI_HUT|
00030           MALLOC_X| MALLOC_V| MALLOC_F_HAT| MALLOC_F);
00031       
00032       
00034       nfft_vrand_shifted_unit_double(my_plan.x, d*my_plan.M_total);
00035       nfft_vrand_shifted_unit_double(my_plan.v, d*my_plan.N_total);
00036       
00038       if(my_plan.nnfft_flags & PRE_PSI)
00039         nnfft_precompute_psi(&my_plan);
00040       
00041       if(my_plan.nnfft_flags & PRE_LIN_PSI)
00042         nnfft_precompute_lin_psi(&my_plan);
00043       
00044       if(my_plan.nnfft_flags & PRE_FULL_PSI)
00045         nnfft_precompute_full_psi(&my_plan);
00046       
00048       if(my_plan.nnfft_flags & PRE_PHI_HUT)
00049         nnfft_precompute_phi_hut(&my_plan);
00050       
00052       nfft_vrand_unit_complex(my_plan.f_hat, my_plan.N_total);
00053       
00055       nndft_trafo(&my_plan);
00056       
00057       NFFT_SWAP_complex(my_plan.f,slow);
00058       
00060       nnfft_trafo(&my_plan);
00061       
00062       printf("%e, %e\n",
00063        nfft_error_l_infty_complex(slow, my_plan.f, M_total),
00064        nfft_error_l_infty_1_complex(slow, my_plan.f, M_total, my_plan.f_hat,
00065              my_plan.N_total));
00066       
00068       nnfft_finalize(&my_plan);
00069     }
00070 }
00071 
00072 int main()
00073 { 
00074   int d;
00075   for(d=1; d<4; d++)
00076     accuracy(d);
00077   
00078   return 1;
00079 }

Generated on 1 Nov 2006 by Doxygen 1.4.4