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