25 #define NFFT_PRECISION_DOUBLE
29 static void simple_test_nfft_1d(
void)
36 const
char *error_str;
39 NFFT(init_1d)(&p, N, M);
42 NFFT(vrand_shifted_unit_double)(p.x, p.M_total);
45 if (p.flags & PRE_ONE_PSI)
46 NFFT(precompute_one_psi)(&p);
49 NFFT(vrand_unit_complex)(p.f_hat,p.N_total);
50 NFFT(vpr_complex)(p.f_hat, p.N_total, "given Fourier coefficients, vector f_hat");
53 error_str = NFFT(check)(&p);
56 printf(
"Error in nfft module: %s\n", error_str);
61 NFFT(trafo_direct)(&p);
62 NFFT(vpr_complex)(p.f,p.M_total,
"ndft, vector f");
66 NFFT(vpr_complex)(p.f,p.M_total,
"nfft, vector f");
69 NFFT(adjoint_direct)(&p);
70 NFFT(vpr_complex)(p.f_hat,p.N_total,
"adjoint ndft, vector f_hat");
74 NFFT(vpr_complex)(p.f_hat,p.N_total,
"adjoint nfft, vector f_hat");
80 static void simple_test_nfft_2d(
void)
87 const
char *error_str;
94 t0 = NFFT(clock_gettime_seconds)();
96 NFFT(init_guru)(&p, 2, N, M, n, 7,
97 PRE_PHI_HUT| PRE_FULL_PSI| MALLOC_F_HAT| MALLOC_X| MALLOC_F |
98 FFTW_INIT| FFT_OUT_OF_PLACE,
99 FFTW_ESTIMATE| FFTW_DESTROY_INPUT);
102 NFFT(vrand_shifted_unit_double)(p.x, p.d * p.M_total);
105 if(p.flags & PRE_ONE_PSI)
106 NFFT(precompute_one_psi)(&p);
109 NFFT(vrand_unit_complex)(p.f_hat, p.N_total);
111 t1 = NFFT(clock_gettime_seconds)();
112 NFFT(vpr_complex)(p.f_hat,K, "given Fourier coefficients, vector f_hat (first few entries)");
113 printf(" ... initialisation took %.2" NFFT__FES__ " seconds.\n",t1-t0);
116 error_str = NFFT(check)(&p);
119 printf(
"Error in nfft module: %s\n", error_str);
124 t0 = NFFT(clock_gettime_seconds)();
125 NFFT(trafo_direct)(&p);
126 t1 = NFFT(clock_gettime_seconds)();
127 NFFT(vpr_complex)(p.f, K,
"ndft, vector f (first few entries)");
128 printf(
" took %.2" NFFT__FES__
" seconds.\n",t1-t0);
131 t0 = NFFT(clock_gettime_seconds)();
133 t1 = NFFT(clock_gettime_seconds)();
134 NFFT(vpr_complex)(p.f, K,
"nfft, vector f (first few entries)");
135 printf(
" took %.2" NFFT__FES__
" seconds.\n",t1-t0);
138 t0 = NFFT(clock_gettime_seconds)();
139 NFFT(adjoint_direct)(&p);
140 t1 = NFFT(clock_gettime_seconds)();
141 NFFT(vpr_complex)(p.f_hat, K,
"adjoint ndft, vector f_hat (first few entries)");
142 printf(
" took %.2" NFFT__FES__
" seconds.\n",t1-t0);
145 t0 = NFFT(clock_gettime_seconds)();
147 t1 = NFFT(clock_gettime_seconds)();
148 NFFT(vpr_complex)(p.f_hat, K,
"adjoint nfft, vector f_hat (first few entries)");
149 printf(
" took %.2" NFFT__FES__
" seconds.\n",t1-t0);
157 printf(
"1) computing a one dimensional ndft, nfft and an adjoint nfft\n\n");
158 simple_test_nfft_1d();
162 printf(
"2) computing a two dimensional ndft, nfft and an adjoint nfft\n\n");
163 simple_test_nfft_2d();