NFFT  3.4.1
Data Structures | Macros | Functions
Fast Gauss transfrom with complex parameter

Data Structures

struct  fgt_plan
 Structure for the Gauss transform. More...
 

Macros

#define NFFT_PRECISION_DOUBLE
 
#define DGT_PRE_CEXP   (1U<< 0)
 If this flag is set, the whole matrix is precomputed and stored for the discrete Gauss transfrom. More...
 
#define FGT_NDFT   (1U<< 1)
 If this flag is set, the fast Gauss transform uses the discrete instead of the fast Fourier transform. More...
 
#define FGT_APPROX_B   (1U<< 2)
 If this flag is set, the discrete Fourier coefficients of the uniformly sampled Gaussian are used instead of the sampled continuous Fourier transform. More...
 

Functions

static void dgt_trafo (fgt_plan *ths)
 Executes the discrete Gauss transform. More...
 
static void fgt_trafo (fgt_plan *ths)
 Executes the fast Gauss transform. More...
 
static void fgt_init_guru (fgt_plan *ths, int N, int M, NFFT_C sigma, int n, NFFT_R p, int m, unsigned flags)
 Initialisation of a transform plan, guru. More...
 
static void fgt_init (fgt_plan *ths, int N, int M, NFFT_C sigma, NFFT_R eps)
 Initialisation of a transform plan, simple. More...
 
static void fgt_init_node_dependent (fgt_plan *ths)
 Initialisation of a transform plan, depends on source and target nodes. More...
 
static void fgt_finalize (fgt_plan *ths)
 Destroys the transform plan. More...
 
static void fgt_test_init_rand (fgt_plan *ths)
 Random initialisation of a fgt plan. More...
 
static NFFT_R fgt_test_measure_time (fgt_plan *ths, unsigned dgt)
 Compares execution times for the fast and discrete Gauss transform. More...
 
static void fgt_test_simple (int N, int M, NFFT_C sigma, NFFT_R eps)
 Simple example that computes fast and discrete Gauss transforms. More...
 
static void fgt_test_andersson (void)
 Compares accuracy and execution time of the fast Gauss transform with increasing expansion degree. More...
 
static void fgt_test_error (void)
 Compares accuracy of the fast Gauss transform with increasing expansion degree. More...
 
static void fgt_test_error_p (void)
 Compares accuracy of the fast Gauss transform with increasing expansion degree and different periodisation lengths. More...
 
int main (int argc, char **argv)
 Different tests of the fast Gauss transform. More...
 

Detailed Description

Macro Definition Documentation

#define DGT_PRE_CEXP   (1U<< 0)

If this flag is set, the whole matrix is precomputed and stored for the discrete Gauss transfrom.

See Also
fgt_init_node_dependent
fgt_init
Author
Stefan Kunis

Definition at line 42 of file fastgauss.c.

Referenced by dgt_trafo(), fgt_init(), fgt_init_node_dependent(), and fgt_test_andersson().

#define FGT_NDFT   (1U<< 1)

If this flag is set, the fast Gauss transform uses the discrete instead of the fast Fourier transform.

See Also
fgt_init
nfft_trafo_direct
nfft_trafo
Author
Stefan Kunis

Definition at line 53 of file fastgauss.c.

Referenced by fgt_test_andersson(), and fgt_trafo().

#define FGT_APPROX_B   (1U<< 2)

If this flag is set, the discrete Fourier coefficients of the uniformly sampled Gaussian are used instead of the sampled continuous Fourier transform.

See Also
fgt_init
Author
Stefan Kunis

Definition at line 63 of file fastgauss.c.

Referenced by fgt_init_guru().

Function Documentation

static void dgt_trafo ( fgt_plan ths)
static

Executes the discrete Gauss transform.

  • ths The pointer to a fgt plan
Author
Stefan Kunis

Definition at line 101 of file fastgauss.c.

References fgt_plan::alpha, DGT_PRE_CEXP, fgt_plan::f, fgt_plan::flags, fgt_plan::M, fgt_plan::N, fgt_plan::pre_cexp, fgt_plan::sigma, fgt_plan::x, and fgt_plan::y.

Referenced by fgt_test_error(), fgt_test_error_p(), fgt_test_measure_time(), and fgt_test_simple().

static void fgt_trafo ( fgt_plan ths)
static

Executes the fast Gauss transform.

  • ths The pointer to a fgt plan
Author
Stefan Kunis

Definition at line 128 of file fastgauss.c.

References fgt_plan::b, FGT_NDFT, fgt_plan::flags, and fgt_plan::n.

Referenced by fgt_test_error(), fgt_test_error_p(), fgt_test_measure_time(), and fgt_test_simple().

static void fgt_init_guru ( fgt_plan ths,
int  N,
int  M,
NFFT_C  sigma,
int  n,
NFFT_R  p,
int  m,
unsigned  flags 
)
static

Initialisation of a transform plan, guru.

  • ths The pointer to a fpt plan
  • N The number of source nodes
  • M The number of target nodes
  • sigma The parameter of the Gaussian
  • n The polynomial expansion degree
  • p the periodisation length, at least 1
  • m The spatial cut-off of the nfft
  • flags FGT flags to use
Author
Stefan Kunis

Definition at line 166 of file fastgauss.c.

References fgt_plan::alpha, fgt_plan::b, fgt_plan::f, FFTW_INIT, FGT_APPROX_B, fgt_plan::flags, fgt_plan::M, MALLOC_F_HAT, MALLOC_X, fgt_plan::N, fgt_plan::n, fgt_plan::p, PRE_PHI_HUT, PRE_PSI, fgt_plan::sigma, fgt_plan::x, and fgt_plan::y.

Referenced by fgt_init(), fgt_test_andersson(), fgt_test_error(), and fgt_test_error_p().

static void fgt_init ( fgt_plan ths,
int  N,
int  M,
NFFT_C  sigma,
NFFT_R  eps 
)
static

Initialisation of a transform plan, simple.

  • ths The pointer to a fpt plan
  • N The number of source nodes
  • M The number of target nodes
  • sigma The parameter of the Gaussian
  • eps The target accuracy
Author
Stefan Kunis

Definition at line 240 of file fastgauss.c.

References DGT_PRE_CEXP, and fgt_init_guru().

Referenced by fgt_test_simple().

static void fgt_init_node_dependent ( fgt_plan ths)
static

Initialisation of a transform plan, depends on source and target nodes.

  • ths The pointer to a fpt plan
    Author
    Stefan Kunis

Definition at line 261 of file fastgauss.c.

References DGT_PRE_CEXP, fgt_plan::flags, fgt_plan::M, fgt_plan::N, fgt_plan::p, fgt_plan::pre_cexp, PRE_PSI, fgt_plan::sigma, fgt_plan::x, and fgt_plan::y.

Referenced by fgt_test_andersson(), fgt_test_error(), fgt_test_error_p(), and fgt_test_simple().

static void fgt_finalize ( fgt_plan ths)
static

Destroys the transform plan.

  • ths The pointer to the fgt plan
    Author
    Stefan Kunis

Definition at line 292 of file fastgauss.c.

References fgt_plan::alpha, fgt_plan::b, fgt_plan::f, fgt_plan::x, and fgt_plan::y.

Referenced by fgt_test_andersson(), fgt_test_error(), fgt_test_error_p(), and fgt_test_simple().

static void fgt_test_init_rand ( fgt_plan ths)
static

Random initialisation of a fgt plan.

  • ths The pointer to the fgt plan
    Author
    Stefan Kunis

Definition at line 315 of file fastgauss.c.

References fgt_plan::alpha, fgt_plan::M, fgt_plan::N, fgt_plan::x, and fgt_plan::y.

Referenced by fgt_test_andersson(), fgt_test_error(), fgt_test_error_p(), and fgt_test_simple().

static NFFT_R fgt_test_measure_time ( fgt_plan ths,
unsigned  dgt 
)
static

Compares execution times for the fast and discrete Gauss transform.

  • ths The pointer to the fgt plan
  • dgt If this parameter is set dgt_trafo is called as well
Author
Stefan Kunis

Definition at line 338 of file fastgauss.c.

References dgt_trafo(), and fgt_trafo().

Referenced by fgt_test_andersson().

static void fgt_test_simple ( int  N,
int  M,
NFFT_C  sigma,
NFFT_R  eps 
)
static

Simple example that computes fast and discrete Gauss transforms.

  • ths The pointer to the fgt plan
  • sigma The parameter of the Gaussian
  • eps The target accuracy
Author
Stefan Kunis

Definition at line 373 of file fastgauss.c.

References fgt_plan::alpha, dgt_trafo(), fgt_plan::f, fgt_finalize(), fgt_init(), fgt_init_node_dependent(), fgt_test_init_rand(), fgt_trafo(), fgt_plan::M, and fgt_plan::N.

Referenced by main().

static void fgt_test_andersson ( void  )
static

Compares accuracy and execution time of the fast Gauss transform with increasing expansion degree.

Similar to the test in F. Andersson and G. Beylkin. The fast Gauss transform with complex parameters. J. Comput. Physics 203 (2005) 274-286

Author
Stefan Kunis

Definition at line 409 of file fastgauss.c.

References fgt_plan::alpha, DGT_PRE_CEXP, fgt_plan::f, fgt_finalize(), fgt_init_guru(), fgt_init_node_dependent(), FGT_NDFT, fgt_test_init_rand(), fgt_test_measure_time(), fgt_plan::flags, fgt_plan::M, and fgt_plan::N.

Referenced by main().

static void fgt_test_error ( void  )
static

Compares accuracy of the fast Gauss transform with increasing expansion degree.

Author
Stefan Kunis

Definition at line 475 of file fastgauss.c.

References fgt_plan::alpha, dgt_trafo(), fgt_plan::f, fgt_finalize(), fgt_init_guru(), fgt_init_node_dependent(), fgt_test_init_rand(), fgt_trafo(), fgt_plan::M, and fgt_plan::N.

Referenced by main().

static void fgt_test_error_p ( void  )
static

Compares accuracy of the fast Gauss transform with increasing expansion degree and different periodisation lengths.

Author
Stefan Kunis

Definition at line 527 of file fastgauss.c.

References fgt_plan::alpha, dgt_trafo(), fgt_plan::f, fgt_finalize(), fgt_init_guru(), fgt_init_node_dependent(), fgt_test_init_rand(), fgt_trafo(), fgt_plan::M, and fgt_plan::N.

Referenced by main().

int main ( int  argc,
char **  argv 
)

Different tests of the fast Gauss transform.

Author
Stefan Kunis

Definition at line 576 of file fastgauss.c.

References fgt_test_andersson(), fgt_test_error(), fgt_test_error_p(), and fgt_test_simple().