32 void simple_test_nnfft_1d(
void)
 
   41   nnfft_init(&my_plan, 1, 3, 19, N);
 
   46     my_plan.
x[j]=((double)rand())/((
double)RAND_MAX)-0.5;
 
   51     my_plan.
v[j]=((double)rand())/((
double)RAND_MAX)-0.5;
 
   56     nnfft_precompute_psi(&my_plan);
 
   70     my_plan.
f_hat[k] = ((
double)rand())/((double)RAND_MAX) + _Complex_I*((double)rand())/((
double)RAND_MAX);
 
   72   nfft_vpr_complex(my_plan.f_hat,my_plan.N_total,"given Fourier coefficients, vector f_hat");
 
   75   nnfft_trafo_direct(&my_plan);
 
   79   nnfft_trafo(&my_plan);
 
   83   nnfft_finalize(&my_plan);
 
   86 static 
void simple_test_adjoint_nnfft_1d(
void)
 
   95   nnfft_init(&my_plan, 1, 20, 33, N);
 
  100     my_plan.
x[j]=((double)rand())/((
double)RAND_MAX)-0.5;
 
  105     my_plan.
v[j]=((double)rand())/((
double)RAND_MAX)-0.5;
 
  110     nnfft_precompute_psi(&my_plan);
 
  124     my_plan.
f[j] = ((
double)rand())/((double)RAND_MAX) + _Complex_I*((double)rand())/((
double)RAND_MAX);
 
  129   nnfft_adjoint_direct(&my_plan);
 
  130   nfft_vpr_complex(my_plan.f_hat,my_plan.N_total,"adjoint nndft, vector f_hat");
 
  133   nnfft_adjoint(&my_plan);
 
  134   nfft_vpr_complex(my_plan.f_hat,my_plan.N_total,"adjoint nnfft, vector f_hat");
 
  137   nnfft_finalize(&my_plan);
 
  140 static 
void simple_test_nnfft_2d(
void)
 
  150   nnfft_init(&my_plan, 2,12*14,19, N);
 
  155     my_plan.
x[2*j]=((double)rand())/((
double)RAND_MAX)-0.5;
 
  156     my_plan.
x[2*j+1]=((double)rand())/((
double)RAND_MAX)-0.5;
 
  162     my_plan.
v[2*j]=((double)rand())/((
double)RAND_MAX)-0.5;
 
  163     my_plan.
v[2*j+1]=((double)rand())/((
double)RAND_MAX)-0.5;
 
  168     nnfft_precompute_psi(&my_plan);
 
  182     my_plan.
f_hat[k] = ((
double)rand())/((double)RAND_MAX) + _Complex_I*((double)rand())/((
double)RAND_MAX);
 
  185         "given Fourier coefficients, vector f_hat (first 12 entries)");
 
  188   nnfft_trafo_direct(&my_plan);
 
  192   nnfft_trafo(&my_plan);
 
  196   nnfft_finalize(&my_plan);
 
  199 static 
void simple_test_innfft_1d(
void)
 
  206   nnfft_init(&my_plan,1 ,8 ,8 ,&N);
 
  213     my_plan.
x[j]=((
double)rand())/((double)RAND_MAX)-0.5;
 
  217     my_plan.
v[k]=((
double)rand())/((
double)RAND_MAX)-0.5;
 
  221     nnfft_precompute_psi(&my_plan);
 
  232     my_iplan.
y[j] = ((
double)rand())/((double)RAND_MAX);
 
  241         "approximate solution, vector f_hat_iter");
 
  244   solver_before_loop_complex(&my_iplan);
 
  248     printf(
"iteration l=%d\n",l);
 
  251           "approximate solution, vector f_hat_iter");
 
  260   nnfft_finalize(&my_plan);
 
  263 static void measure_time_nnfft_1d(
void)
 
  271   for(my_N=16; my_N<=16384; my_N*=2)
 
  273     nnfft_init(&my_plan,1,my_N,my_N,&N);
 
  276       my_plan.
x[j]=((
double)rand())/((double)RAND_MAX)-0.5;
 
  279       my_plan.
v[j]=((
double)rand())/((
double)RAND_MAX)-0.5;
 
  282       nnfft_precompute_psi(&my_plan);
 
  291       my_plan.
f_hat[k] = ((
double)rand())/((double)RAND_MAX) + _Complex_I*((double)rand())/((
double)RAND_MAX);
 
  294     nnfft_trafo_direct(&my_plan);
 
  296     t = nfft_elapsed_seconds(t1,t0);
 
  297     printf("t_nndft=%e,\t",t);
 
  300     nnfft_trafo(&my_plan);
 
  302     t = nfft_elapsed_seconds(t1,t0);
 
  303     printf("t_nnfft=%e\t",t);
 
  305     printf("(N=M=%d)\n",my_N);
 
  307     nnfft_finalize(&my_plan);
 
  314   printf(
"1) computing a one dimensional nndft, nnfft\n\n");
 
  315   simple_test_nnfft_1d();
 
  320   printf(
"1a) computing a one dimensional adjoint nndft, nnfft\n\n");
 
  321   simple_test_adjoint_nnfft_1d();
 
  326   printf(
"2) computing a two dimensional nndft, nnfft\n\n");
 
  327   simple_test_nnfft_2d();
 
  332   printf(
"3) computing a one dimensional innfft\n\n");
 
  333   simple_test_innfft_1d();
 
  338   printf(
"4) computing times for one dimensional nnfft\n\n");
 
  339   measure_time_nnfft_1d();