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

FPT - Fast polynomial transform


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)
 Save copy of inpute data for stabilization steps.

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.

  • M The maximum DPT transform index $M \in \mathbb{N}_0$. The individual transforms are addressed by and index number $m \in \mathbb{N}_0$ with range $m = 0,\ldots,M$. The total number of transforms is therefore $M+1$.
  • t The exponent $t \in \mathbb{N}, t \ge 2$ of the transform length $N = 2^t \in \mathbb{N}, N \ge 4$
  • flags A bitwise combination of the flags FPT_NO_STABILIZATION,
Author:
Jens Keiner

Definition at line 588 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 main(), and 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.

  • set The set of DPT transform data where the computed data will be stored.
  • m The transform index $m \in \mathbb{N}, 0 \le m \le M$.
  • alpha The three-term recurrence coefficients $\alpha_k \in \mathbb{R}$ for $k=0,\ldots,N$ such that
     alpha[k]
     *      
    $=\alpha_k$.
  • beta The three-term recurrence coefficients $\beta_k \in \mathbb{R}$ for $k=0,\ldots,N$ such that
     beta[k] 
    $=\beta_k$.
  • gamma The three-term recurrence coefficients $\gamma_k \in \mathbb{R}$ for $k=0,\ldots,N$ such that
     gamma[k]
     *            
    $=\gamma_k$.
  • k_start The index $k_{\text{start}} \in \mathbb{N}_0, 0 \le k_{\text{start}} \le N$
  • threshold The treshold $\kappa \in \mathbb{R}, \kappa > 0$.
Author:
Jens Keiner

Definition at line 700 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(), 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, fpt_data_::k_start, K_START_TILDE, LAST_L, fpt_set_s_::N, fpt_step_::N_stab, 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 main(), and 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 1003 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 fpt_trafo(), and 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.

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

Definition at line 1057 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, dpt_trafo(), FIRST_L, fpt_set_s_::flags, FPT_AL_SYMMETRY, 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, 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 1328 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 fpt_transposed(), and 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.

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

Definition at line 1380 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, dpt_transposed(), FIRST_L, fpt_set_s_::flags, FPT_AL_SYMMETRY, 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, 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 main(), and nfsft_adjoint().


Generated on 22 Jan 2007 by Doxygen 1.4.1