Beispiel:
Soll mit folgenden Step (2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4) durchlaufen werden..
Delphi-Quellcode:
ie := FFFTSize;
for n := 1
to FFTLog
do
begin
w := Coef[FFTLog - n];
in_ := ie
div 2;
u.r := 1;
u.i := 0;
for j := 0
to (in_ - 1)
do
begin
for i := j
to (FFFTSize - 1)
do
begin
if (i
mod ie) <> 0
then
continue;
io := i + in_;
tp.r := Dat[i].r + Dat[io].r;
tp.i := Dat[i].i + Dat[io].i;
tq.r := Dat[i].r - Dat[io].r;
tq.i := Dat[i].i - Dat[io].i;
Dat[io].r := tq.r * u.r - tq.i * u.i;
Dat[io].i := tq.i * u.r + tq.r * u.i;
Dat[i] :=
tp;
end;
sr := u.r;
u.r := u.r * w.r - u.i * w.i;
u.i := u.i * w.r + sr * w.i;
end;
ie := ie
div 2;
end;
bekomme aber immer einen Gleitkommaüberlauf woran könnte es liegen?
Ich gehe eigentlich davon aus das diese Abfrage genau das tut was ich oben als Beispiel angegeben habe.
Delphi-Quellcode:
if (i mod ie) <> 0 then
continue;
gruss