|
algebramix_doc 0.3
|
#include <fft_naive.hpp>
fft_test.cpp, and tft_test.cpp.
Definition at line 99 of file fft_naive.hpp.
| typedef implementation<vector_linear,vector_naive> NVec |
Definition at line 101 of file fft_naive.hpp.
| typedef V::roots_type R |
Definition at line 102 of file fft_naive.hpp.
| typedef R::S S |
Definition at line 104 of file fft_naive.hpp.
| typedef R::U U |
Definition at line 103 of file fft_naive.hpp.
| fft_naive_transformer | ( | nat | n | ) | [inline] |
Definition at line 111 of file fft_naive.hpp.
References fft_naive_transformer< C, V >::depth.
| ~fft_naive_transformer | ( | ) | [inline] |
Definition at line 115 of file fft_naive.hpp.
References fft_naive_transformer< C, V >::len, and fft_naive_transformer< C, V >::roots.
| void dfft | ( | C * | c, |
| nat | stride, | ||
| nat | shift, | ||
| nat | steps, | ||
| nat | step1, | ||
| nat | step2 | ||
| ) | [inline] |
Definition at line 119 of file fft_naive.hpp.
References mmx::C, and fft_naive_transformer< C, V >::roots.
Referenced by fft_naive_transformer< C, V >::dfft(), and fft_naive_transformer< C, V >::direct_transform().
{
// In place direct fft of c[0], c[stride], ..., c[(2^steps-1) stride]
// Only perform steps from step1 until step2-1
// If shift != 0, then roots start at roots + (shift<<1)
for (nat step= step1; step < step2; step++) {
//mmout << "step " << step << ": " << flush_now;
if (step == 0 && shift == 0) {
nat todo= steps - 1;
C* cc= c;
for (nat k= 0; k < ((nat) 1<<todo); k++) {
R::fft_cross (cc, cc + (stride<<todo));
cc += stride;
}
}
else {
nat todo= steps - 1 - step;
C* cc= c;
U * uu= roots + ((shift >> todo) << 1);
for (nat j= 0; j < ((nat) 1<<step); j++) {
for (nat k= 0; k < ((nat) 1<<todo); k++) {
R::dfft_cross (cc, cc + (stride<<todo), uu);
cc += stride;
}
cc += (stride<<todo);
uu += 2;
}
}
}
}
| void dfft | ( | C * | c, |
| nat | stride, | ||
| nat | shift, | ||
| nat | steps | ||
| ) | [inline] |
Definition at line 181 of file fft_naive.hpp.
References fft_naive_transformer< C, V >::dfft().
| void direct_transform | ( | C * | c | ) | [inline] |
Definition at line 189 of file fft_naive.hpp.
References fft_naive_transformer< C, V >::depth, and fft_naive_transformer< C, V >::dfft().
Referenced by mmx::direct_fft(), and implementation< series_multiply, U, series_fast >::nrelax_mul_series_rep< C, V >::direct_transform().
| void ifft | ( | C * | c, |
| nat | stride, | ||
| nat | shift, | ||
| nat | steps | ||
| ) | [inline] |
Definition at line 185 of file fft_naive.hpp.
References fft_naive_transformer< C, V >::ifft().
| void ifft | ( | C * | c, |
| nat | stride, | ||
| nat | shift, | ||
| nat | steps, | ||
| nat | step1, | ||
| nat | step2 | ||
| ) | [inline] |
Definition at line 150 of file fft_naive.hpp.
References mmx::C, and fft_naive_transformer< C, V >::roots.
Referenced by fft_naive_transformer< C, V >::ifft(), and fft_naive_transformer< C, V >::inverse_transform().
{
// In place inverse fft of c[0], c[stride], ..., c[(2^steps-1) stride]
// Only perform steps from step2-1 until step1
// If shift != 0, then roots start at roots + (shift<<1)
for (int step= step2-1; (int) step >= ((int) step1); step--) {
//mmout << "step " << step << ": " << flush_now;
if (step == 0 && shift == 0) {
nat todo= steps - 1;
C* cc= c;
for (nat k= 0; k < ((nat) 1<<todo); k++) {
R::fft_cross (cc, cc + (stride<<todo));
cc += stride;
}
}
else {
nat todo= steps - 1 - step;
C* cc= c;
U * uu= roots + 1 + ((shift >> todo) << 1);
for (nat j= 0; j < ((nat) 1<<step); j++) {
for (nat k= 0; k < ((nat) 1<<todo); k++) {
R::ifft_cross (cc, cc + (stride<<todo), uu);
cc += stride;
}
cc += (stride<<todo);
uu += 2;
}
}
}
}
| void inverse_transform | ( | C * | c, |
| bool | divide = true |
||
| ) | [inline] |
Definition at line 193 of file fft_naive.hpp.
References fft_naive_transformer< C, V >::depth, fft_naive_transformer< C, V >::ifft(), mmx::invert(), and fft_naive_transformer< C, V >::len.
Referenced by mmx::inverse_fft(), and implementation< series_multiply, U, series_fast >::nrelax_mul_series_rep< C, V >::inverse_transform().
| nat depth |
Definition at line 106 of file fft_naive.hpp.
Referenced by fft_naive_transformer< C, V >::direct_transform(), fft_naive_transformer< C, V >::fft_naive_transformer(), and fft_naive_transformer< C, V >::inverse_transform().
| nat len |
Definition at line 107 of file fft_naive.hpp.
Referenced by fft_naive_transformer< C, V >::inverse_transform(), and fft_naive_transformer< C, V >::~fft_naive_transformer().
Definition at line 108 of file fft_naive.hpp.
Referenced by fft_naive_transformer< C, V >::dfft(), fft_naive_transformer< C, V >::ifft(), and fft_naive_transformer< C, V >::~fft_naive_transformer().