43 if(ths->
flags & LANDWEBER)
46 if(ths->
flags & STEEPEST_DESCENT)
61 if(ths->
flags & PRECOMPUTE_WEIGHT)
64 if(ths->
flags & PRECOMPUTE_DAMP)
70 solver_init_advanced_complex(ths, mv, CGNR);
83 if((!(ths->
flags & LANDWEBER)) || (ths->
flags & NORMS_FOR_LANDWEBER))
85 if(ths->
flags & PRECOMPUTE_WEIGHT)
93 if(ths->
flags & PRECOMPUTE_WEIGHT)
102 if((!(ths->
flags & LANDWEBER)) || (ths->
flags & NORMS_FOR_LANDWEBER))
104 if(ths->
flags & PRECOMPUTE_DAMP)
112 if(ths->
flags & CGNE)
115 if(ths->
flags & CGNR)
122 if(ths->
flags & PRECOMPUTE_DAMP)
138 if(ths->
flags & NORMS_FOR_LANDWEBER)
140 if(ths->
flags & PRECOMPUTE_WEIGHT)
148 if(ths->
flags & PRECOMPUTE_WEIGHT)
157 if(ths->
flags & NORMS_FOR_LANDWEBER)
159 if(ths->
flags & PRECOMPUTE_DAMP)
171 if(ths->
flags & PRECOMPUTE_DAMP)
181 if(ths->
flags & PRECOMPUTE_WEIGHT)
190 if(ths->
flags & PRECOMPUTE_DAMP)
201 if(ths->
flags & PRECOMPUTE_WEIGHT)
207 if(ths->
flags & PRECOMPUTE_WEIGHT)
216 if(ths->
flags & PRECOMPUTE_DAMP)
226 if(ths->
flags & PRECOMPUTE_DAMP)
236 if(ths->
flags & PRECOMPUTE_WEIGHT)
245 if(ths->
flags & PRECOMPUTE_DAMP)
256 if(ths->
flags & PRECOMPUTE_WEIGHT)
262 if(ths->
flags & PRECOMPUTE_WEIGHT)
272 if(ths->
flags & PRECOMPUTE_DAMP)
292 if(ths->
flags & PRECOMPUTE_DAMP)
300 if(ths->
flags & PRECOMPUTE_DAMP)
312 if(ths->
flags & PRECOMPUTE_WEIGHT)
321 if(ths->
flags & PRECOMPUTE_WEIGHT)
331 if(ths->
flags & PRECOMPUTE_DAMP)
341 if(ths->
flags & LANDWEBER)
344 if(ths->
flags & STEEPEST_DESCENT)
347 if(ths->
flags & CGNR)
350 if(ths->
flags & CGNE)
357 if(ths->
flags & PRECOMPUTE_WEIGHT)
360 if(ths->
flags & PRECOMPUTE_DAMP)
363 if(ths->
flags & CGNR)
369 if(ths->
flags & STEEPEST_DESCENT)
394 if(ths->
flags & LANDWEBER)
397 if(ths->
flags & STEEPEST_DESCENT)
403 if(ths->
flags & CGNR)
409 if(ths->
flags & CGNE)
412 if(ths->
flags & PRECOMPUTE_WEIGHT)
415 if(ths->
flags & PRECOMPUTE_DAMP)
434 if((!(ths->
flags & LANDWEBER)) || (ths->
flags & NORMS_FOR_LANDWEBER))
436 if(ths->
flags & PRECOMPUTE_WEIGHT)
444 if(ths->
flags & PRECOMPUTE_WEIGHT)
453 if((!(ths->
flags & LANDWEBER)) || (ths->
flags & NORMS_FOR_LANDWEBER))
455 if(ths->
flags & PRECOMPUTE_DAMP)
463 if(ths->
flags & CGNE)
466 if(ths->
flags & CGNR)
473 if(ths->
flags & PRECOMPUTE_DAMP)
489 if(ths->
flags & NORMS_FOR_LANDWEBER)
491 if(ths->
flags & PRECOMPUTE_WEIGHT)
499 if(ths->
flags & PRECOMPUTE_WEIGHT)
508 if(ths->
flags & NORMS_FOR_LANDWEBER)
510 if(ths->
flags & PRECOMPUTE_DAMP)
522 if(ths->
flags & PRECOMPUTE_DAMP)
532 if(ths->
flags & PRECOMPUTE_WEIGHT)
541 if(ths->
flags & PRECOMPUTE_DAMP)
552 if(ths->
flags & PRECOMPUTE_WEIGHT)
558 if(ths->
flags & PRECOMPUTE_WEIGHT)
567 if(ths->
flags & PRECOMPUTE_DAMP)
577 if(ths->
flags & PRECOMPUTE_DAMP)
587 if(ths->
flags & PRECOMPUTE_WEIGHT)
596 if(ths->
flags & PRECOMPUTE_DAMP)
607 if(ths->
flags & PRECOMPUTE_WEIGHT)
613 if(ths->
flags & PRECOMPUTE_WEIGHT)
623 if(ths->
flags & PRECOMPUTE_DAMP)
643 if(ths->
flags & PRECOMPUTE_DAMP)
651 if(ths->
flags & PRECOMPUTE_DAMP)
663 if(ths->
flags & PRECOMPUTE_WEIGHT)
672 if(ths->
flags & PRECOMPUTE_WEIGHT)
682 if(ths->
flags & PRECOMPUTE_DAMP)
692 if(ths->
flags & LANDWEBER)
695 if(ths->
flags & STEEPEST_DESCENT)
698 if(ths->
flags & CGNR)
701 if(ths->
flags & CGNE)
708 if(ths->
flags & PRECOMPUTE_WEIGHT)
711 if(ths->
flags & PRECOMPUTE_DAMP)
714 if(ths->
flags & CGNR)
720 if(ths->
flags & STEEPEST_DESCENT)
double dot_p_hat_iter
weighted dotproduct of p_hat_iter
int N_total
Total number of Fourier coefficients.
double dot_p_hat_iter
weighted dotproduct of p_hat_iter
double dot_r_iter_old
previous dot_r_iter
double * r_iter
iterated residual vector
static void solver_loop_one_step_cgnr_complex(solver_plan_complex *ths)
void solver_loop_one_step_cgnr
double * w_hat
damping factors
static void solver_loop_one_step_cgne_double(solver_plan_double *ths)
void solver_loop_one_step_cgne
double beta_iter
step size for search correction
fftw_complex * p_hat_iter
search direction
double dot_z_hat_iter
weighted dotproduct of z_hat_iter
void nfft_cp_complex(fftw_complex *x, fftw_complex *y, int n)
Copies .
double * w
weighting factors
double beta_iter
step size for search correction
unsigned flags
iteration type
void(* mv_trafo)(void *)
Pointer to the own transform.
double * p_hat_iter
search direction
double dot_r_iter
weighted dotproduct of r_iter
static void solver_loop_one_step_cgnr_double(solver_plan_double *ths)
void solver_loop_one_step_cgnr
static void solver_loop_one_step_steepest_descent_double(solver_plan_double *ths)
void solver_loop_one_step_steepest_descent
static void solver_loop_one_step_landweber_double(solver_plan_double *ths)
void solver_loop_one_step_landweber
static void solver_loop_one_step_steepest_descent_complex(solver_plan_complex *ths)
void solver_loop_one_step_steepest_descent
double dot_v_iter
weighted dotproduct of v_iter
void(* mv_adjoint)(void *)
Pointer to the own adjoint.
double alpha_iter
step size for search direction
#define NFFT_SWAP_complex(x, y)
Swapping of two vectors.
double alpha_iter
step size for search direction
double * f
Vector of samples, size is M_total * sizeof( double )
Header file for utility functions used by the nfft3 library.
double * f_hat_iter
iterative solution
void nfft_upd_xpay_complex(fftw_complex *x, double a, fftw_complex *y, int n)
Updates .
double dot_r_iter
weighted dotproduct of r_iter
double dot_r_iter_old
previous dot_r_iter
double * z_hat_iter
residual of normal equation of first kind
fftw_complex * z_hat_iter
residual of normal equation of first kind
int M_total
Total number of samples.
void nfft_cp_double(double *x, double *y, int n)
Copies .
unsigned flags
iteration type
double * f_hat
Vector of Fourier coefficients, size is N_total * sizeof( double )
int M_total
Total number of samples.
static void solver_loop_one_step_landweber_complex(solver_plan_complex *ths)
void solver_loop_one_step_landweber
void nfft_upd_axpy_complex(fftw_complex *x, double a, fftw_complex *y, int n)
Updates .
void nfft_upd_xpawy_complex(fftw_complex *x, double a, double *w, fftw_complex *y, int n)
Updates .
void * nfft_malloc(size_t n)
double nfft_dot_w_complex(fftw_complex *x, double *w, int n)
Computes the weighted inner/dot product .
nfft_mv_plan_complex * mv
matrix vector multiplication
double * w
weighting factors
void nfft_upd_xpawy_double(double *x, double a, double *w, double *y, int n)
Updates .
double dot_z_hat_iter
weighted dotproduct of z_hat_iter
fftw_complex * f_hat
Vector of Fourier coefficients, size is N_total * sizeof( fftw_complex )
void nfft_upd_axpy_double(double *x, double a, double *y, int n)
Updates .
double nfft_dot_complex(fftw_complex *x, int n)
Computes the inner/dot product .
double dot_z_hat_iter_old
previous dot_z_hat_iter
void(* mv_adjoint)(void *)
Pointer to the own adjoint.
double * y
right hand side, samples
void(* mv_trafo)(void *)
Pointer to the own transform.
fftw_complex * y
right hand side, samples
static void solver_loop_one_step_cgne_complex(solver_plan_complex *ths)
void solver_loop_one_step_cgne
static void solver_loop_one_step_double(solver_plan_double *ths)
void solver_loop_one_step
nfft_mv_plan_double * mv
matrix vector multiplication
void nfft_upd_xpay_double(double *x, double a, double *y, int n)
Updates .
double * v_iter
residual vector update
double dot_z_hat_iter_old
previous dot_z_hat_iter
void solver_loop_one_step_complex(solver_plan_complex *ths)
void solver_loop_one_step
double dot_v_iter
weighted dotproduct of v_iter
void solver_init_advanced_double(solver_plan_double *ths, nfft_mv_plan_double *mv, unsigned flags)
void solver_finalize
int N_total
Total number of Fourier coefficients.
void solver_finalize_complex(solver_plan_complex *ths)
void solver_finalize
double nfft_dot_double(double *x, int n)
Computes the inner/dot product .
void nfft_cp_w_double(double *x, double *w, double *y, int n)
Copies .
static void solver_finalize_double(solver_plan_double *ths)
void solver_finalize
fftw_complex * f
Vector of samples, size is M_total * sizeof( fftw_complex )
double * w_hat
damping factors
fftw_complex * r_iter
iterated residual vector
fftw_complex * f_hat_iter
iterative solution
#define NFFT_SWAP_double(x, y)
Swapping of two vectors.
double nfft_dot_w_double(double *x, double *w, int n)
Computes the weighted inner/dot product .
void nfft_cp_w_complex(fftw_complex *x, double *w, fftw_complex *y, int n)
Copies .
fftw_complex * v_iter
residual vector update