Initial commit
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
SUBROUTINE drealft(data,n,isign)
|
||||
INTEGER isign,n
|
||||
DOUBLE PRECISION data(n)
|
||||
CU USES dfour1
|
||||
INTEGER i,i1,i2,i3,i4,n2p3
|
||||
DOUBLE PRECISION c1,c2,h1i,h1r,h2i,h2r,wis,wrs
|
||||
DOUBLE PRECISION theta,wi,wpi,wpr,wr,wtemp
|
||||
theta=3.141592653589793d0/dble(n/2)
|
||||
c1=0.5d0
|
||||
if (isign.eq.1) then
|
||||
c2=-0.5d0
|
||||
call dfour1(data,n/2,+1)
|
||||
else
|
||||
c2=0.5d0
|
||||
theta=-theta
|
||||
endif
|
||||
wpr=-2.0d0*sin(0.5d0*theta)**2
|
||||
wpi=sin(theta)
|
||||
wr=1.0d0+wpr
|
||||
wi=wpi
|
||||
n2p3=n+3
|
||||
do 11 i=2,n/4
|
||||
i1=2*i-1
|
||||
i2=i1+1
|
||||
i3=n2p3-i2
|
||||
i4=i3+1
|
||||
wrs=wr
|
||||
wis=wi
|
||||
h1r=c1*(data(i1)+data(i3))
|
||||
h1i=c1*(data(i2)-data(i4))
|
||||
h2r=-c2*(data(i2)+data(i4))
|
||||
h2i=c2*(data(i1)-data(i3))
|
||||
data(i1)=h1r+wrs*h2r-wis*h2i
|
||||
data(i2)=h1i+wrs*h2i+wis*h2r
|
||||
data(i3)=h1r-wrs*h2r+wis*h2i
|
||||
data(i4)=-h1i+wrs*h2i+wis*h2r
|
||||
wtemp=wr
|
||||
wr=wr*wpr-wi*wpi+wr
|
||||
wi=wi*wpr+wtemp*wpi+wi
|
||||
11 continue
|
||||
if (isign.eq.1) then
|
||||
h1r=data(1)
|
||||
data(1)=h1r+data(2)
|
||||
data(2)=h1r-data(2)
|
||||
else
|
||||
h1r=data(1)
|
||||
data(1)=c1*(h1r+data(2))
|
||||
data(2)=c1*(h1r-data(2))
|
||||
call dfour1(data,n/2,-1)
|
||||
endif
|
||||
return
|
||||
END
|
||||
Reference in New Issue
Block a user