NSFFT - Nonequispaced sparse FFT

Direct and fast computation of the nonequispaced FFT on the hyperbolic cross. More...

## Data Structures

struct | nsfft_plan
| data structure for an NSFFT (nonequispaced sparse fast Fourier transform) plan with double precision More...

## Macros

#define | NSDFT (1U<< 12)

## Functions

void | nsfft_trafo (nsfft_plan *ths)
void | nsfft_adjoint (nsfft_plan *ths)
void | nsfft_cp (nsfft_plan *ths, nfft_plan *ths_nfft)
void | nsfft_init_random_nodes_coeffs (nsfft_plan *ths)
void | nsfft_init (nsfft_plan *ths, int d, int J, int M, int m, unsigned flags)
void | nsfft_finalize (nsfft_plan *ths)

## Detailed Description

Direct and fast computation of the nonequispaced FFT on the hyperbolic cross.

## Macro Definition Documentation

#define NSDFT (1U<< 12)

If this flag is set, the member index_sparse_to_full is (de)allocated and initialised for the use in the routine nsfft_direct_trafo and nsdft_adjoint.

See also
  nsfft_init

Author
  Stefan Kunis

Definition at line 476 of file nfft3.h.

Referenced by nsfft_adjoint(), and nsfft_init().

## Function Documentation

void nsfft_trafo | ( | nsfft_plan * | ths | ) |

Executes an NSFFT, computes fast and approximate for :

- ths The pointer to a nsfft plan

Author
  Markus Fenn, Stefan Kunis

Definition at line 1541 of file nsfft.c.

References nsfft_plan::d.

Referenced by nsfft_adjoint().

void nsfft_adjoint | ( | nsfft_plan * | ths | ) |

Executes an adjoint NSFFT, computes fast and approximate for :

- ths The pointer to a nsfft plan

Author
  Stefan Kunis

Definition at line 1549 of file nsfft.c.

References nsfft_plan::act_nfft_plan, nsfft_plan::center_nfft_plan, nsfft_plan::d, nsfft_plan::f, nsfft_plan::f_hat, nfft_plan::fftw_flags, FFTW_INIT, FG_PSI, nfft_plan::flags, nsfft_plan::flags, nfft_plan::g1, nfft_plan::g2, nsfft_plan::index_sparse_to_full, nsfft_plan::J, nfft_plan::K, nsfft_plan::M_total, MALLOC_F, MALLOC_X, nsfft_plan::mv_adjoint, nsfft_plan::mv_trafo, nsfft_plan::N_total, nfft_malloc(), nfft_precompute_one_psi(), NSDFT, nsfft_init(), nsfft_trafo(), PRE_ONE_PSI, nfft_plan::psi, nsfft_plan::set_nfft_plan_1d, nsfft_plan::set_nfft_plan_2d, nsfft_plan::sigma, X, nfft_plan::x, nsfft_plan::x_021, and nsfft_plan::x_transposed.

void nsfft_cp | ( | nsfft_plan * | ths,
|  | nfft_plan * | ths_nfft
| ) |  |

Copy coefficients from nsfft plan to a nfft plan.

- ths Pointers to a nsfft plan and to a nfft plan

Author
  Markus Fenn, Stefan Kunis

Definition at line 599 of file nsfft.c.

References nsfft_plan::act_nfft_plan, nsfft_plan::d, nfft_plan::f_hat, nsfft_plan::f_hat, nsfft_plan::index_sparse_to_full, nsfft_plan::J, nsfft_plan::M_total, nfft_plan::N, nfft_plan::N_total, nsfft_plan::N_total, X, and nfft_plan::x.

void nsfft_init_random_nodes_coeffs | ( | nsfft_plan * | ths | ) |

Initialisation of pseudo random nodes and coefficients.

- ths The pointer to a nsfft plan

Author
  Markus Fenn, Stefan Kunis

Definition at line 723 of file nsfft.c.

References nsfft_plan::act_nfft_plan, nsfft_plan::center_nfft_plan, nsfft_plan::d, nfft_plan::f, nsfft_plan::f, nfft_plan::f_hat, nsfft_plan::f_hat, nsfft_plan::index_sparse_to_full, nsfft_plan::J, nfft_plan::m, nsfft_plan::M_total, nfft_plan::N, nfft_plan::n, nfft_plan::N_total, nfft_plan::n_total, nsfft_plan::N_total, nfft_adjoint(), nfft_trafo(), nfft_vrand_shifted_unit_double(), nfft_vrand_unit_complex(), RSWAP, nsfft_plan::set_nfft_plan_1d, nsfft_plan::set_nfft_plan_2d, nsfft_plan::sigma, X, nfft_plan::x, nsfft_plan::x_021, and nsfft_plan::x_transposed.

void nsfft_init | ( | nsfft_plan * | ths,
|  | int | d,
|  | int | J,
|  | int | M,
|  | int | m,
|  | unsigned | flags
| ) |  |

Initialisation of a transform plan.

- ths The pointer to a nsfft plan
- d The dimension
- J The problem size
- M The number of nodes
- m nfft cut-off parameter
- flags

Author
  Markus Fenn, Stefan Kunis

Definition at line 1778 of file nsfft.c.

References nsfft_plan::act_nfft_plan, nsfft_plan::center_nfft_plan, nsfft_plan::f, nsfft_plan::f_hat, FG_PSI, nfft_plan::flags, nsfft_plan::flags, nsfft_plan::index_sparse_to_full, nsfft_plan::J, nfft_plan::m, nfft_finalize(), nfft_free(), NSDFT, nsfft_plan::set_nfft_plan_1d, nsfft_plan::set_nfft_plan_2d, UNUSED, X, nsfft_plan::x_021, and nsfft_plan::x_transposed.

Referenced by nsfft_adjoint().

void nsfft_finalize | ( | nsfft_plan * | ths | ) |

Destroys a transform plan.

- ths The pointer to a nsfft plan

Author
  Markus Fenn, Stefan Kunis

Definition at line 1885 of file nsfft.c.

References nsfft_plan::d.