|
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().