![]() |
3.2.3 |
Data Structures | |
struct | fgt_plan |
Structure for the Gauss transform. More... |
Macros | |
#define | DGT_PRE_CEXP (1U<< 0) |
If this flag is set, the whole matrix is precomputed and stored for the discrete Gauss transfrom. | |
#define | FGT_NDFT (1U<< 1) |
If this flag is set, the fast Gauss transform uses the discrete instead of the fast Fourier transform. | |
#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. |
Functions | |
void | dgt_trafo (fgt_plan *ths) |
Executes the discrete Gauss transform. | |
void | fgt_trafo (fgt_plan *ths) |
Executes the fast Gauss transform. | |
void | fgt_init_guru (fgt_plan *ths, int N, int M, double _Complex sigma, int n, double p, int m, unsigned flags) |
Initialisation of a transform plan, guru. | |
void | fgt_init (fgt_plan *ths, int N, int M, double _Complex sigma, double eps) |
Initialisation of a transform plan, simple. | |
void | fgt_init_node_dependent (fgt_plan *ths) |
Initialisation of a transform plan, depends on source and target nodes. | |
void | fgt_finalize (fgt_plan *ths) |
Destroys the transform plan. | |
void | fgt_test_init_rand (fgt_plan *ths) |
Random initialisation of a fgt plan. | |
double | fgt_test_measure_time (fgt_plan *ths, unsigned dgt) |
Compares execution times for the fast and discrete Gauss transform. | |
void | fgt_test_simple (int N, int M, double _Complex sigma, double eps) |
Simple example that computes fast and discrete Gauss transforms. | |
void | fgt_test_andersson (void) |
Compares accuracy and execution time of the fast Gauss transform with increasing expansion degree. | |
void | fgt_test_error (void) |
Compares accuracy of the fast Gauss transform with increasing expansion degree. | |
void | fgt_test_error_p (void) |
Compares accuracy of the fast Gauss transform with increasing expansion degree and different periodisation lengths. | |
int | main (int argc, char **argv) |
Different tests of the fast Gauss transform. |
#define DGT_PRE_CEXP (1U<< 0) |
If this flag is set, the whole matrix is precomputed and stored for the discrete Gauss transfrom.
Definition at line 48 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.
Definition at line 59 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.
Definition at line 69 of file fastgauss.c.
Referenced by fgt_init_guru().
void dgt_trafo | ( | fgt_plan * | ths | ) |
Executes the discrete Gauss transform.
Definition at line 107 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().
void fgt_trafo | ( | fgt_plan * | ths | ) |
Executes the fast Gauss transform.
Definition at line 132 of file fastgauss.c.
References fgt_plan::b, nfft_plan::f_hat, FGT_NDFT, fgt_plan::flags, fgt_plan::n, nfft_trafo(), fgt_plan::nplan1, and fgt_plan::nplan2.
Referenced by fgt_test_error(), fgt_test_error_p(), fgt_test_measure_time(), and fgt_test_simple().
void fgt_init_guru | ( | fgt_plan * | ths, |
int | N, | ||
int | M, | ||
double _Complex | sigma, | ||
int | n, | ||
double | p, | ||
int | m, | ||
unsigned | flags | ||
) |
Initialisation of a transform plan, guru.
Definition at line 170 of file fastgauss.c.
References fgt_plan::alpha, fgt_plan::b, fgt_plan::f, nfft_plan::f, nfft_plan::f_hat, FGT_APPROX_B, fgt_plan::flags, fgt_plan::M, fgt_plan::N, fgt_plan::n, nfft_fftshift_complex(), nfft_malloc(), fgt_plan::nplan1, fgt_plan::nplan2, fgt_plan::p, PI, 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().
void fgt_init | ( | fgt_plan * | ths, |
int | N, | ||
int | M, | ||
double _Complex | sigma, | ||
double | eps | ||
) |
Initialisation of a transform plan, simple.
Definition at line 240 of file fastgauss.c.
References DGT_PRE_CEXP, fgt_init_guru(), and PI.
Referenced by fgt_test_simple().
void fgt_init_node_dependent | ( | fgt_plan * | ths | ) |
Initialisation of a transform plan, depends on source and target nodes.
Definition at line 263 of file fastgauss.c.
References DGT_PRE_CEXP, fgt_plan::flags, fgt_plan::M, nfft_plan::M_total, fgt_plan::N, nfft_plan::nfft_flags, nfft_malloc(), fgt_plan::nplan1, fgt_plan::nplan2, fgt_plan::p, fgt_plan::pre_cexp, fgt_plan::sigma, fgt_plan::x, nfft_plan::x, and fgt_plan::y.
Referenced by fgt_test_andersson(), fgt_test_error(), fgt_test_error_p(), and fgt_test_simple().
void fgt_finalize | ( | fgt_plan * | ths | ) |
Destroys the transform plan.
Definition at line 295 of file fastgauss.c.
References fgt_plan::alpha, fgt_plan::b, fgt_plan::f, nfft_free(), fgt_plan::nplan1, fgt_plan::nplan2, fgt_plan::x, and fgt_plan::y.
Referenced by fgt_test_andersson(), fgt_test_error(), fgt_test_error_p(), and fgt_test_simple().
void fgt_test_init_rand | ( | fgt_plan * | ths | ) |
Random initialisation of a fgt plan.
Definition at line 318 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().
double fgt_test_measure_time | ( | fgt_plan * | ths, |
unsigned | dgt | ||
) |
Compares execution times for the fast and discrete Gauss transform.
Definition at line 341 of file fastgauss.c.
References dgt_trafo(), and fgt_trafo().
Referenced by fgt_test_andersson().
void fgt_test_simple | ( | int | N, |
int | M, | ||
double _Complex | sigma, | ||
double | eps | ||
) |
Simple example that computes fast and discrete Gauss transforms.
Definition at line 375 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, fgt_plan::N, nfft_free(), nfft_malloc(), NFFT_SWAP_complex, and nfft_vpr_complex().
Referenced by main().
void fgt_test_andersson | ( | void | ) |
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 double _Complex parameters. J. Comput. Physics 203 (2005) 274-286
Definition at line 410 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, fgt_plan::N, nfft_free(), nfft_malloc(), and NFFT_SWAP_complex.
Referenced by main().
void fgt_test_error | ( | void | ) |
Compares accuracy of the fast Gauss transform with increasing expansion degree.
Definition at line 481 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, fgt_plan::N, nfft_free(), nfft_malloc(), and NFFT_SWAP_complex.
Referenced by main().
void fgt_test_error_p | ( | void | ) |
Compares accuracy of the fast Gauss transform with increasing expansion degree and different periodisation lengths.
Definition at line 532 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, fgt_plan::N, nfft_malloc(), and NFFT_SWAP_complex.
Referenced by main().
int main | ( | int | argc, |
char ** | argv | ||
) |
Different tests of the fast Gauss transform.
Definition at line 580 of file fastgauss.c.
References fgt_test_andersson(), fgt_test_error(), fgt_test_error_p(), and fgt_test_simple().