25 #define NFFT_PRECISION_DOUBLE
86 static void simple_test_solver_nfft_1d(
int N,
int M,
int iter)
90 SOLVER(plan_complex) ip;
91 const
char *error_str;
94 NFFT(init_1d)(&p, N, M);
97 NFFT(vrand_shifted_unit_double)(p.x, p.M_total);
101 NFFT(precompute_one_psi)(&p);
104 SOLVER(init_complex)(&ip, (NFFT(mv_plan_complex)*) (&p));
107 NFFT(vrand_unit_complex)(ip.y, p.M_total);
108 NFFT(vpr_complex)(ip.y, p.M_total, "Given data, vector y");
111 for (k = 0; k < p.N_total; k++)
112 ip.f_hat_iter[k] = NFFT_K(0.0);
114 NFFT(vpr_complex)(ip.f_hat_iter, p.N_total,
115 "Initial guess, vector f_hat_iter");
118 error_str = NFFT(check)(&p);
121 printf(
"Error in nfft module: %s\n", error_str);
125 NFFT_CSWAP(ip.f_hat_iter, p.f_hat);
127 NFFT(vpr_complex)(p.f, p.M_total,
"Data fit, vector f");
128 NFFT_CSWAP(ip.f_hat_iter, p.f_hat);
130 SOLVER(before_loop_complex)(&ip);
131 printf(
"\n Residual r=%" NFFT__FES__
"\n", ip.dot_r_iter);
133 for (l = 0; l < iter; l++)
135 printf(
"\n********** Iteration l=%d **********\n", l);
136 SOLVER(loop_one_step_complex)(&ip);
137 NFFT(vpr_complex)(ip.f_hat_iter, p.N_total,
138 "Approximate solution, vector f_hat_iter");
140 NFFT_CSWAP(ip.f_hat_iter, p.f_hat);
142 NFFT(vpr_complex)(p.f, p.M_total,
"Data fit, vector f");
143 NFFT_CSWAP(ip.f_hat_iter, p.f_hat);
145 printf(
"\n Residual r=%" NFFT__FES__
"\n", ip.dot_r_iter);
148 SOLVER(finalize_complex)(&ip);
155 printf(
"\n Computing a one dimensional inverse nfft\n");
157 simple_test_solver_nfft_1d(16, 8, 9);