27#ifndef _FFTEXT_H_INCLUDED_
28#define _FFTEXT_H_INCLUDED_
64 vec<cmplx<char> > &W1_256,
65 vec<cmplx<char> > &W2_256,
72 vec<cmplx<double> > &X,
73 vec<cmplx<double> > &Y
78 vec<cmplx<char> > &W1_256,
79 vec<cmplx<char> > &W2_256,
90 vec<cmplx<char> > &W1_512,
91 vec<cmplx<char> > &W2_512,
98 vec<cmplx<double> > &X,
99 vec<cmplx<double> > &Y
103void MakeTable512W1W2(
104 vec<cmplx<char> > &W1_512,
105 vec<cmplx<char> > &W2_512,
115 vec<cmplx<char> > &W1_1024,
116 vec<cmplx<char> > &W2_1024,
123 vec<cmplx<double> > &X,
124 vec<cmplx<double> > &Y
128void MakeTable1024W1W2(
129 vec<cmplx<char> > &W1_1024,
130 vec<cmplx<char> > &W2_1024,
140 vec<cmplx<char> > &W1_2048,
141 vec<cmplx<char> > &W2_2048,
148 vec<cmplx<double> > &X,
149 vec<cmplx<double> > &Y
153void MakeTable2048W1W2(
154 vec<cmplx<char> > &W1_2048,
155 vec<cmplx<char> > &W2_2048,
161void FFT_Fwd4096_float1(
172 vec<cmplx<char> > &IW1_256,
173 vec<cmplx<char> > &IW2_256,
180 vec<cmplx<double> > &X,
181 vec<cmplx<double> > &Y
185void IMakeTable256W1W2(
186 vec<cmplx<char> > &IW1_256,
187 vec<cmplx<char> > &IW2_256,
197 vec<cmplx<char> > &IW1_512,
198 vec<cmplx<char> > &IW2_512,
205 vec<cmplx<double> > &X,
206 vec<cmplx<double> > &Y
210void IMakeTable512W1W2(
211 vec<cmplx<char> > &IW1_512,
212 vec<cmplx<char> > &IW2_512,
222 vec<cmplx<char> > &IW1_1024,
223 vec<cmplx<char> > &IW2_1024,
230 vec<cmplx<double> > &X,
231 vec<cmplx<double> > &Y
235void IMakeTable1024W1W2(
236 vec<cmplx<char> > &IW1_1024,
237 vec<cmplx<char> > &IW2_1024,
247 vec<cmplx<char> > &IW1_2048,
248 vec<cmplx<char> > &IW2_2048,
255 vec<cmplx<double> > &X,
256 vec<cmplx<double> > &Y
260void IMakeTable2048W1W2(
261 vec<cmplx<char> > &IW1_2048,
262 vec<cmplx<char> > &IW2_2048,
268void FFT_Inv4096_float1(
277 vec<cmplx<double> > &X,
278 vec<cmplx<double> > &Y
282 vec<cmplx<double> > &X,
283 vec<cmplx<double> > &Y
286int FFT256_int_radix2(
288 vec<cmplx<int> > &Y);
290int IFFT256_int_radix2(
296__INLINE__
void CmplxPack8to64(
297 vec<cmplx<char> > &W,
301 ASSERTE(W.size==WRePacked.size*8);
302 ASSERTE(W.size==WImPacked.size*8);
304 __int64 PackageIm=0,PackageRe=0;
305 __int64 ByteMask=0xFF;
306 for(
int i=0,k=0;i<WRePacked.size;i++,k+=8)
308 for(
int j=7;j>=0;j--)
311 PackageRe=PackageRe|(W[k+j].re& ByteMask);
314 PackageIm=PackageIm|(W[k+j].im& ByteMask);
316 WRePacked[i]=PackageRe;
317 WImPacked[i]=PackageIm;
322__INLINE__
void OutTable(
vec<nmint64s > &Table,
char*TableName,
char* Section)
void FFT_Fwd1024(nm32sc *GSrcBuffer, nm32sc *LDstBuffer, void *LBuffer, void *GBuffer, int ShiftR=-1)
Прямое быстрое преобразование Фурье-1024.
void FFT_Fwd2048(nm32sc *GSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, int ShiftR=-1)
Прямое быстрое преобразование Фурье-2048.
void FFT_Fwd256(nm32sc *GSrcBuffer, nm32sc *LDstBuffer, void *LBuffer, void *GBuffer, int ShiftR=-1)
Прямое быстрое преобразование Фурье-256.
void FFT_Fwd512(nm32sc *GSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, void *GBuffer, int ShiftR=-1)
Прямое быстрое преобразование Фурье-512.
void FFT_Inv1024(nm32sc *GSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, void *GBuffer, int ShiftR1=10, int ShiftR2=-1)
Обратное быстрое преобразование Фурье. ОБПФ-1024.
void FFT_Inv2048(nm32sc *GSrcBuffer, nm32sc *LDstBuffer, void *LBuffer, void *GBuffer, int ShiftR1=11, int ShiftR2=-1)
Обратное быстрое преобразование Фурье. ОБПФ-2048.
void FFT_Inv256(nm32sc *GSrcBuffer, nm32sc *GDstBuffer, void *LBuffer, void *GBuffer, int ShiftR1=8, int ShiftR2=-1)
Обратное быстрое преобразование Фурье. ОБПФ-256.
void FFT_Inv512(nm32sc *GSrcBuffer, nm32sc *LDstBuffer, void *LBuffer, void *GBuffer, int ShiftR1=9, int ShiftR2=-1)
Обратное быстрое преобразование Фурье. ОБПФ-512.