algebramix_doc 0.3
|
#include <fft_truncated.hpp>
Definition at line 27 of file fft_truncated.hpp.
typedef implementation<vector_linear,vector_naive> NVec |
Definition at line 29 of file fft_truncated.hpp.
typedef Ffter::R R |
Definition at line 30 of file fft_truncated.hpp.
typedef Ffter::S S |
Definition at line 32 of file fft_truncated.hpp.
typedef Ffter::U U |
Definition at line 31 of file fft_truncated.hpp.
fft_truncated_transformer | ( | nat | s | ) | [inline] |
Definition at line 37 of file fft_truncated.hpp.
References fft_truncated_transformer< C, Ffter >::ffter.
~fft_truncated_transformer | ( | ) | [inline] |
Definition at line 42 of file fft_truncated.hpp.
References fft_truncated_transformer< C, Ffter >::ffter.
{ delete ffter; }
void direct_transform | ( | C * | c | ) | [inline] |
Definition at line 155 of file fft_truncated.hpp.
References fft_truncated_transformer< C, Ffter >::dtft(), fft_truncated_transformer< C, Ffter >::ffter, and fft_truncated_transformer< C, Ffter >::len.
void dtft | ( | C * | c, |
nat | stride, | ||
nat | s, | ||
nat | shift, | ||
nat | steps | ||
) | [inline] |
Definition at line 61 of file fft_truncated.hpp.
References fft_truncated_transformer< C, Ffter >::fft_cross_range(), and fft_truncated_transformer< C, Ffter >::ffter.
Referenced by fft_truncated_transformer< C, Ffter >::direct_transform(), and fft_truncated_transformer< C, Ffter >::dtft().
{ // In place direct tft of c[0], c[stride], ..., c[(s-1) stride] // Roots start at roots + (shift<<1) if (s == 0 || steps == 0) return; nat todo= steps - 1; nat w = (nat) 1 << todo; fft_cross_range (c, c + (stride<<todo), stride, shift>>todo, w); steps--; if (s >= w) { ffter->dfft (c, stride, shift, steps); s -= w; shift += w >> 1; c += stride<<todo; } dtft (c, stride, s, shift, steps); }
void dtft | ( | C * | c, |
nat | stride, | ||
nat | s, | ||
nat | shift | ||
) | [inline] |
Definition at line 147 of file fft_truncated.hpp.
References fft_truncated_transformer< C, Ffter >::dtft(), and fft_truncated_transformer< C, Ffter >::ffter.
Definition at line 46 of file fft_truncated.hpp.
References fft_truncated_transformer< C, Ffter >::ffter.
Referenced by fft_truncated_transformer< C, Ffter >::dtft().
Definition at line 108 of file fft_truncated.hpp.
References fft_truncated_transformer< C, Ffter >::ffter.
Referenced by fft_truncated_transformer< C, Ffter >::itft().
void inverse_transform | ( | C * | c | ) | [inline] |
Definition at line 167 of file fft_truncated.hpp.
References fft_truncated_transformer< C, Ffter >::ffter, mmx::invert(), fft_truncated_transformer< C, Ffter >::itft(), and fft_truncated_transformer< C, Ffter >::len.
void itft | ( | C * | c, |
nat | stride, | ||
nat | s, | ||
nat | shift, | ||
nat | steps | ||
) | [inline] |
Definition at line 123 of file fft_truncated.hpp.
References fft_truncated_transformer< C, Ffter >::ffter, fft_truncated_transformer< C, Ffter >::ifft_cross_range(), fft_truncated_transformer< C, Ffter >::itft_flip_range(), and fft_truncated_transformer< C, Ffter >::tft_cross_range().
Referenced by fft_truncated_transformer< C, Ffter >::inverse_transform(), and fft_truncated_transformer< C, Ffter >::itft().
{ // In place inverse tft of c[0], c[stride], ..., c[(s-1) stride] // Roots start at roots + (shift<<1) if (s == 0 || steps == 0) return; nat todo= steps - 1; nat l = (nat) 1 << steps; nat w = (nat) 1 << todo; if (s < w) { tft_cross_range (c + stride*s, c + stride*(s+w), stride, shift>>todo, w-s); itft (c, stride, s, shift, steps-1); itft_flip_range (c, c + (stride<<todo), stride, shift>>todo, s); } else { ffter->ifft (c, stride, shift, steps-1); itft_flip_range (c + stride*(s-w), c + stride*s, stride, shift>>todo, l-s); if (s == w) return; itft (c + (stride<<todo), stride, s-w, shift + (w>>1), steps-1); ifft_cross_range (c, c + (stride<<todo), stride, shift>>todo, s-w); } }
void itft | ( | C * | c, |
nat | stride, | ||
nat | s, | ||
nat | shift | ||
) | [inline] |
Definition at line 151 of file fft_truncated.hpp.
References fft_truncated_transformer< C, Ffter >::ffter, and fft_truncated_transformer< C, Ffter >::itft().
Definition at line 78 of file fft_truncated.hpp.
References fft_truncated_transformer< C, Ffter >::ffter.
Referenced by fft_truncated_transformer< C, Ffter >::itft().
Definition at line 93 of file fft_truncated.hpp.
References fft_truncated_transformer< C, Ffter >::ffter.
Referenced by fft_truncated_transformer< C, Ffter >::itft().
Ffter* ffter |
Definition at line 34 of file fft_truncated.hpp.
Referenced by fft_truncated_transformer< C, Ffter >::direct_transform(), fft_truncated_transformer< C, Ffter >::dtft(), fft_truncated_transformer< C, Ffter >::fft_cross_range(), fft_truncated_transformer< C, Ffter >::fft_truncated_transformer(), fft_truncated_transformer< C, Ffter >::ifft_cross_range(), fft_truncated_transformer< C, Ffter >::inverse_transform(), fft_truncated_transformer< C, Ffter >::itft(), fft_truncated_transformer< C, Ffter >::itft_flip_range(), fft_truncated_transformer< C, Ffter >::tft_cross_range(), and fft_truncated_transformer< C, Ffter >::~fft_truncated_transformer().
nat len |
Definition at line 33 of file fft_truncated.hpp.
Referenced by fft_truncated_transformer< C, Ffter >::direct_transform(), and fft_truncated_transformer< C, Ffter >::inverse_transform().