NFFT Logo 3.0 API Reference
Main Page | Modules | Data Structures | Directories | File List | Data Fields | Globals

FPT - Fast polynomial transform

This module implements fast polynomial transforms. More...

Defines

#define FPT_NO_FAST_ALGORITHM   (1U << 2)
 If set, TODO complete comment.
#define FPT_NO_DIRECT_ALGORITHM   (1U << 3)
 If set, TODO complete comment.
#define FPT_NO_STABILIZATION   (1U << 0)
 If set, no stabilization will be used.
#define FPT_PERSISTENT_DATA   (1U << 4)
 If set, TODO complete comment.
#define FPT_FUNCTION_VALUES   (1U << 5)
 If set, the output are function values at Chebyshev nodes rather than Chebyshev coefficients.
#define FPT_AL_SYMMETRY   (1U << 6)
 TODO Don't use this flag!

Typedefs

typedef fpt_set_s_fpt_set
 A set of precomputed data for a set of DPT transforms of equal maximum length.

Functions

fpt_set fpt_init (const int M, const int t, const unsigned int flags)
 Initializes a set of precomputed data for DPT transforms of equal length.
void fpt_precompute (fpt_set set, const int m, const double *alpha, const double *beta, const double *gamma, int k_start, const double threshold)
 Computes the data required for a single DPT transform.
void dpt_trafo (fpt_set set, const int m, const double complex *x, double complex *y, const int k_end, const unsigned int flags)
 Computes a single DPT transform.
void fpt_trafo (fpt_set set, const int m, const double complex *x, double complex *y, const int k_end, const unsigned int flags)
 Computes a single DPT transform.
void dpt_transposed (fpt_set set, const int m, double complex *x, double complex *y, const int k_end, const unsigned int flags)
 Computes a single DPT transform.
void fpt_transposed (fpt_set set, const int m, double complex *x, const double complex *y, const int k_end, const unsigned int flags)
 Computes a single DPT transform.
void fpt_finalize (fpt_set set)

Detailed Description

This module implements fast polynomial transforms.

In the following, we abbreviate the term "fast polynomial transforms" by FPT.


Function Documentation

fpt_set fpt_init const int  M,
const int  t,
const unsigned int  flags
 

Initializes a set of precomputed data for DPT transforms of equal length.

Polynomial length

Cascade level

Index m

Allocate memory for auxilliary arrays.

Allocate memory for auxilliary arrays.

Initialize FFTW plans.

Definition at line 586 of file fpt.c.

References fpt_set_s_::dpt, fpt_set_s_::flags, FPT_NO_DIRECT_ALGORITHM, FPT_NO_FAST_ALGORITHM, fpt_set_s_::kinds, fpt_set_s_::kindsr, fpt_set_s_::lengths, fpt_set_s_::M, fpt_set_s_::N, PI, fpt_set_s_::plans_dct2, fpt_set_s_::plans_dct3, fpt_set_s_::result, fpt_data_::steps, fpt_set_s_::t, fpt_set_s_::temp, fpt_set_s_::vec3, fpt_set_s_::vec4, fpt_set_s_::work, fpt_set_s_::xc_slow, fpt_set_s_::xcvecs, and fpt_set_s_::z.

Referenced by nfsft_precompute().

void fpt_precompute fpt_set  set,
const int  m,
const double *  alpha,
const double *  beta,
const double *  gamma,
int  k_start,
const double  threshold
 

Computes the data required for a single DPT transform.

< Cascade level

< Level index

< Length of polynomials for the next level in the cascade

< Degree of polynomials for the current level in the cascade

< First index l for current cascade level

< Last index l for current cascade level and current

< Length of polynomials for the next level in the cascade for stabilization

< Degree of polynomials for the current level in the cascade for stabilization

< Array containing function values of the (1,1)-component of U_k^n.

< Array containing function values of the (1,2)-component of U_k^n.

< Array containing function values of the (2,1)-component of U_k^n.

< Array containing function values of the (2,2)-component of U_k^n.

< Used to indicate that stabilization is neccessary.

Increase polynomial degree to next power of two.

Definition at line 698 of file fpt.c.

References fpt_step_::a11, fpt_step_::a12, fpt_step_::a21, fpt_step_::a22, fpt_data_::alpha, fpt_data_::alpha_0, fpt_data_::alphaN, fpt_data_::beta, fpt_data_::beta_0, fpt_data_::betaN, fpt_set_s_::dpt, eval_clenshaw(), eval_clenshaw_thresh(), FIRST_L, fpt_set_s_::flags, FPT_AL_SYMMETRY, FPT_NO_DIRECT_ALGORITHM, FPT_NO_FAST_ALGORITHM, FPT_NO_STABILIZATION, FPT_PERSISTENT_DATA, fpt_step_::gamma, fpt_data_::gamma, fpt_data_::gamma_m1, fpt_data_::gammaN, IS_SYMMETRIC, fpt_data_::k_start, K_START_TILDE, LAST_L, fpt_set_s_::N, fpt_step_::N_stab, N_TILDE, nfft_next_power_of_2(), nfft_next_power_of_2_exp(), fpt_step_::stable, fpt_data_::steps, fpt_set_s_::t, fpt_step_::t_stab, and fpt_set_s_::xcvecs.

Referenced by nfsft_precompute().

void dpt_trafo fpt_set  set,
const int  m,
const double complex *  x,
double complex *  y,
const int  k_end,
const unsigned int  flags
 

Computes a single DPT transform.

  • set
  • m
  • x
  • y
  • k_end
  • flags

Definition at line 988 of file fpt.c.

References fpt_data_::alpha, fpt_data_::beta, fpt_set_s_::dpt, eval_sum_clenshaw(), fpt_set_s_::flags, FPT_FUNCTION_VALUES, FPT_NO_DIRECT_ALGORITHM, fpt_data_::gamma, fpt_data_::gamma_m1, fpt_data_::k_start, nfft_next_power_of_2_exp(), PI, fpt_set_s_::plans_dct2, fpt_set_s_::result, fpt_set_s_::temp, fpt_set_s_::work, fpt_set_s_::xc_slow, and fpt_set_s_::xcvecs.

Referenced by nfsft_trafo().

void fpt_trafo fpt_set  set,
const int  m,
const double complex *  x,
double complex *  y,
const int  k_end,
const unsigned int  flags
 

Computes a single DPT transform.

Level index $tau$

Index of first block at current level

Index of last block at current level

Block index $l$

Length of polynomial coefficient arrays at next level

Polynomial array length for stabilization

Current matrix $U_{n,tau,l}$

Loop counter

Definition at line 1042 of file fpt.c.

References fpt_step_::a11, fpt_step_::a12, fpt_step_::a21, fpt_step_::a22, fpt_data_::alpha_0, fpt_data_::alphaN, fpt_data_::beta_0, fpt_data_::betaN, fpt_set_s_::dpt, FIRST_L, fpt_set_s_::flags, FPT_AL_SYMMETRY, fpt_do_step(), fpt_do_step_symmetric(), fpt_do_step_symmetric_l(), fpt_do_step_symmetric_u(), FPT_FUNCTION_VALUES, FPT_NO_FAST_ALGORITHM, fpt_step_::gamma, fpt_data_::gamma_m1, fpt_data_::gammaN, IS_SYMMETRIC, K_END_TILDE, fpt_data_::k_start, K_START_TILDE, LAST_L, fpt_step_::N_stab, nfft_next_power_of_2_exp(), fpt_set_s_::result, fpt_step_::stable, fpt_data_::steps, fpt_step_::t_stab, fpt_set_s_::vec3, fpt_set_s_::vec4, and fpt_set_s_::work.

Referenced by nfsft_trafo().

void dpt_transposed fpt_set  set,
const int  m,
double complex *  x,
double complex *  y,
const int  k_end,
const unsigned int  flags
 

Computes a single DPT transform.

  • set
  • m
  • x
  • y
  • k_end
  • flags

Definition at line 1297 of file fpt.c.

References fpt_data_::alpha, fpt_data_::beta, fpt_set_s_::dpt, eval_sum_clenshaw_transposed(), fpt_set_s_::flags, FPT_FUNCTION_VALUES, FPT_NO_DIRECT_ALGORITHM, fpt_data_::gamma, fpt_data_::gamma_m1, fpt_data_::k_start, nfft_next_power_of_2_exp(), PI, fpt_set_s_::plans_dct3, fpt_set_s_::result, fpt_set_s_::temp, fpt_set_s_::work, fpt_set_s_::xc_slow, and fpt_set_s_::xcvecs.

Referenced by nfsft_adjoint().

void fpt_transposed fpt_set  set,
const int  m,
double complex *  x,
const double complex *  y,
const int  k_end,
const unsigned int  flags
 

Computes a single DPT transform.

Level index $tau$

Index of first block at current level

Index of last block at current level

Block index $l$

Length of polynomial coefficient arrays at next level

Polynomial array length for stabilization

Current matrix $U_{n,tau,l}$

Loop counter

Save copy of inpute data for stabilization steps.

Definition at line 1349 of file fpt.c.

References fpt_step_::a11, fpt_step_::a12, fpt_step_::a21, fpt_step_::a22, fpt_data_::alpha_0, fpt_data_::alphaN, fpt_data_::beta_0, fpt_data_::betaN, fpt_set_s_::dpt, FIRST_L, fpt_set_s_::flags, FPT_AL_SYMMETRY, fpt_do_step_transposed(), fpt_do_step_transposed_symmetric(), fpt_do_step_transposed_symmetric_l(), fpt_do_step_transposed_symmetric_u(), FPT_FUNCTION_VALUES, FPT_NO_FAST_ALGORITHM, fpt_step_::gamma, fpt_data_::gamma_m1, fpt_data_::gammaN, IS_SYMMETRIC, K_END_TILDE, fpt_data_::k_start, K_START_TILDE, LAST_L, fpt_step_::N_stab, nfft_next_power_of_2_exp(), fpt_set_s_::result, fpt_step_::stable, fpt_data_::steps, fpt_step_::t_stab, fpt_set_s_::vec3, fpt_set_s_::vec4, and fpt_set_s_::work.

Referenced by nfsft_adjoint().


Generated on 1 Nov 2006 by Doxygen 1.4.4