var a,b:
TVec;
begin
CreateIt(a,b);
try //Even
a.SetIt(True,[1,2,3,4]);
b.FFTFromReal(a);
// b = [(10, 0),( -2,2), (-2, 0)]
b.IFFTToReal;
// b = [1, 2, 3, 4, -2, 0)]
//Odd length
a.SetIt(True,[1,2,3,0]);
b.FFTOddLength := True;
//use only Length-1 samples
b.FFTFromReal(a);
// b = [(6,0),( -1.5,0.8660)] //result requires 2 complex (= 4 real numbers)
b.IFFTToReal;
//b = [1, 2, 3, 0.8660]
//Event length
a.SetIt(True,[1,2,3,4, 0,0]);
//allocate two more elements
a.FFTOddLength :=
false;
//use only Length-2 samples
a.FFTFromReal;
// a = [(10, 0),( -2,2), (-2, 0)] //result requires 3 complex (= 6 real numbers)
a.IFFToReal;
// a = [1, 2, 3, 4, -2, 0)]
finally
FreeIt(a,b);
end;
end;