📄 rlft3.for
字号:
SUBROUTINE rlft3(data,speq,nn1,nn2,nn3,isign)
INTEGER isign,nn1,nn2,nn3
COMPLEX data(nn1/2,nn2,nn3),speq(nn2,nn3)
CU USES fourn
INTEGER i1,i2,i3,j1,j2,j3,nn(3)
DOUBLE PRECISION theta,wi,wpi,wpr,wr,wtemp
COMPLEX c1,c2,h1,h2,w
c1=cmplx(0.5,0.0)
c2=cmplx(0.0,-0.5*isign)
theta=6.28318530717959d0/dble(isign*nn1)
wpr=-2.0d0*sin(0.5d0*theta)**2
wpi=sin(theta)
nn(1)=nn1/2
nn(2)=nn2
nn(3)=nn3
if(isign.eq.1)then
call fourn(data,nn,3,isign)
do 12 i3=1,nn3
do 11 i2=1,nn2
speq(i2,i3)=data(1,i2,i3)
11 continue
12 continue
endif
do 15 i3=1,nn3
j3=1
if (i3.ne.1) j3=nn3-i3+2
wr=1.0d0
wi=0.0d0
do 14 i1=1,nn1/4+1
j1=nn1/2-i1+2
do 13 i2=1,nn2
j2=1
if (i2.ne.1) j2=nn2-i2+2
if(i1.eq.1)then
h1=c1*(data(1,i2,i3)+conjg(speq(j2,j3)))
h2=c2*(data(1,i2,i3)-conjg(speq(j2,j3)))
data(1,i2,i3)=h1+h2
speq(j2,j3)=conjg(h1-h2)
else
h1=c1*(data(i1,i2,i3)+conjg(data(j1,j2,j3)))
h2=c2*(data(i1,i2,i3)-conjg(data(j1,j2,j3)))
data(i1,i2,i3)=h1+w*h2
data(j1,j2,j3)=conjg(h1-w*h2)
endif
13 continue
wtemp=wr
wr=wr*wpr-wi*wpi+wr
wi=wi*wpr+wtemp*wpi+wi
w=cmplx(sngl(wr),sngl(wi))
14 continue
15 continue
if(isign.eq.-1)then
call fourn(data,nn,3,isign)
endif
return
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -