📄 fourn.txt
字号:
Sub FOURN(Data(), NN(), NDIM, ISIGN)
NTOT = 1
For IDIM = 1 To NDIM
NTOT = NTOT * NN(IDIM)
Next IDIM
NPREV = 1
For IDIM = 1 To NDIM
N = NN(IDIM)
NREM = NTOT / (N * NPREV)
IP1 = 2 * NPREV
IP2 = IP1 * N
IP3 = IP2 * NREM
I2REV = 1
For I2 = 1 To IP2 Step IP1
If I2 < I2REV Then
For I1 = I2 To I2 + IP1 - 2 Step 2
For I3 = I1 To IP3 Step IP2
I3REV = I2REV + I3 - I2
TEMPR = Data(I3)
TEMPI = Data(I3 + 1)
Data(I3) = Data(I3REV)
Data(I3 + 1) = Data(I3REV + 1)
Data(I3REV) = TEMPR
Data(I3REV + 1) = TEMPI
Next I3
Next I1
End If
IBit = IP2 / 2
1 If IBit >= IP1 And I2REV > IBit Then
I2REV = I2REV - IBit
IBit = IBit / 2
GoTo 1
End If
I2REV = I2REV + IBit
Next I2
IFP1 = IP1
2 If IFP1 < IP2 Then
IFP2 = 2 * IFP1
THETA = ISIGN * 6.28318530717959 / (IFP2 / IP1)
WPR = -2# * (Sin(0.5 * THETA)) ^ 2
WPI = Sin(THETA)
WR = 1#
WI = 0#
For I3 = 1 To IFP1 Step IP1
For I1 = I3 To I3 + IP1 - 2 Step 2
For I2 = I1 To IP3 Step IFP2
K1 = I2
K2 = K1 + IFP1
TEMPR = CSng(WR) * Data(K2) - CSng(WI) * Data(K2 + 1)
TEMPI = CSng(WR) * Data(K2 + 1) + CSng(WI) * Data(K2)
Data(K2) = Data(K1) - TEMPR
Data(K2 + 1) = Data(K1 + 1) - TEMPI
Data(K1) = Data(K1) + TEMPR
Data(K1 + 1) = Data(K1 + 1) + TEMPI
Next I2
Next I1
WTEMP = WR
WR = WR * WPR - WI * WPI + WR
WI = WI * WPR + WTEMP * WPI + WI
Next I3
IFP1 = IFP2
GoTo 2
End If
NPREV = N * NPREV
Next IDIM
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -