Sub Ex_Cfft1()
Const N = 5
Dim Wsave() As Double, C(N - 1) As Complex, C0(N - 1) As Complex
Dim LWsave As Long, Info As Long, I As Long
'-- Initialization
LWsave = 2 * N + Log(N) / Log(2) + 4
ReDim Wsave(LWsave - 1)
Call Cfft1i(N, Wsave, Info)
If Info <> 0 Then GoTo Err
'-- Generate test data
For I = 0 To N - 1
C(I) = Cmplx(Rnd(), Rnd())
C0(I) = Cmplx(Creal(C(I)), Cimag(C(I)))
Next
'-- Forward transform
Call Cfft1f(N, C(), Wsave(), Info)
If Info <> 0 Then GoTo Err
'-- Backward transform
Call Cfft1b(N, C(), Wsave(), Info)
If Info <> 0 Then GoTo Err
'-- Print result
For I = 0 To N - 1
Debug.Print "(" & CStr(Creal(C0(I))) & ", " & CStr(Cimag(C0(I))) & ")", "(" & CStr(Creal(C(I))) & ", " & CStr(Cimag(C(I))) & ")", Cabs(Csub(C(I), C0(I)))
Next
Exit Sub
Err:
Debug.Print "Error in Cfft1i/Cfft1f/Cfft1b: Info =", Info
End Sub