23 #define NFFT_PRECISION_DOUBLE
27 static void simple_test_nfft_1d(
void)
34 const
char *error_str;
37 NFFT(init_1d)(&p, N, M);
40 NFFT(vrand_shifted_unit_double)(p.x, p.M_total);
44 NFFT(precompute_one_psi)(&p);
47 NFFT(vrand_unit_complex)(p.f_hat,p.N_total);
48 NFFT(vpr_complex)(p.f_hat, p.N_total, "given Fourier coefficients, vector f_hat");
51 error_str = NFFT(check)(&p);
54 printf(
"Error in nfft module: %s\n", error_str);
59 NFFT(trafo_direct)(&p);
60 NFFT(vpr_complex)(p.f,p.M_total,
"ndft, vector f");
64 NFFT(vpr_complex)(p.f,p.M_total,
"nfft, vector f");
67 NFFT(adjoint_direct)(&p);
68 NFFT(vpr_complex)(p.f_hat,p.N_total,
"adjoint ndft, vector f_hat");
72 NFFT(vpr_complex)(p.f_hat,p.N_total,
"adjoint nfft, vector f_hat");
78 static void simple_test_nfft_2d(
void)
85 const
char *error_str;
92 t0 = NFFT(clock_gettime_seconds)();
94 NFFT(init_guru)(&p, 2, N, M, n, 7,
97 FFTW_ESTIMATE| FFTW_DESTROY_INPUT);
100 NFFT(vrand_shifted_unit_double)(p.x, p.d * p.M_total);
104 NFFT(precompute_one_psi)(&p);
107 NFFT(vrand_unit_complex)(p.f_hat, p.N_total);
109 t1 = NFFT(clock_gettime_seconds)();
110 NFFT(vpr_complex)(p.f_hat,K, "given Fourier coefficients, vector f_hat (first few entries)");
111 printf(" ... initialisation took %.2" NFFT__FES__ " seconds.\n",t1-t0);
114 error_str = NFFT(check)(&p);
117 printf(
"Error in nfft module: %s\n", error_str);
122 t0 = NFFT(clock_gettime_seconds)();
123 NFFT(trafo_direct)(&p);
124 t1 = NFFT(clock_gettime_seconds)();
125 NFFT(vpr_complex)(p.f, K,
"ndft, vector f (first few entries)");
126 printf(
" took %.2" NFFT__FES__
" seconds.\n",t1-t0);
129 t0 = NFFT(clock_gettime_seconds)();
131 t1 = NFFT(clock_gettime_seconds)();
132 NFFT(vpr_complex)(p.f, K,
"nfft, vector f (first few entries)");
133 printf(
" took %.2" NFFT__FES__
" seconds.\n",t1-t0);
136 t0 = NFFT(clock_gettime_seconds)();
137 NFFT(adjoint_direct)(&p);
138 t1 = NFFT(clock_gettime_seconds)();
139 NFFT(vpr_complex)(p.f_hat, K,
"adjoint ndft, vector f_hat (first few entries)");
140 printf(
" took %.2" NFFT__FES__
" seconds.\n",t1-t0);
143 t0 = NFFT(clock_gettime_seconds)();
145 t1 = NFFT(clock_gettime_seconds)();
146 NFFT(vpr_complex)(p.f_hat, K,
"adjoint nfft, vector f_hat (first few entries)");
147 printf(
" took %.2" NFFT__FES__
" seconds.\n",t1-t0);
155 printf(
"1) computing a one dimensional ndft, nfft and an adjoint nfft\n\n");
156 simple_test_nfft_1d();
160 printf(
"2) computing a two dimensional ndft, nfft and an adjoint nfft\n\n");
161 simple_test_nfft_2d();