8 subroutine twofft(data1,data2,fft1,fft2,n)
11 double precision data1(n),data2(n)
12 double complex fft1(n),fft2(n),h1,h2,c1,c2
14 intrinsic dcmplx,dreal,dimag,dconjg
22 c2=dcmplx(zero,-0.5d0)
24 fft1(j)=dcmplx(data1(j),data2(j))
27 fft2(1)=dcmplx(dimag(fft1(1)),zero)
28 fft1(1)=dcmplx(dreal(fft1(1)),zero)
31 h1=c1*(fft1(j)+dconjg(fft1(n2-j)))
32 h2=c2*(fft1(j)-dconjg(fft1(n2-j)))
47 subroutine realft(data,n,isign)
49 integer i,i1,i2,i3,i4,isign,n,n2p3
50 double precision c1,c2,h1r,h1i,h2r,h2i,wrs,wis,wr,wi,wpr,wpi,
52 double precision data(2*n)
54 theta=6.28318530717959d0/2.0d0/dble(n)
63 wpr=-2.0d0*dsin(0.5d0*theta)**2
75 h1r=c1*(
data(i1)+
data(i3))
76 h1i=c1*(
data(i2)-
data(i4))
77 h2r=-c2*(
data(i2)+
data(i4))
78 h2i=c2*(
data(i1)-
data(i3))
79 data(i1)=h1r+wrs*h2r-wis*h2i
80 data(i2)=h1i+wrs*h2i+wis*h2r
81 data(i3)=h1r-wrs*h2r+wis*h2i
82 data(i4)=-h1i+wrs*h2i+wis*h2r
85 wi=wi*wpr+wtemp*wpi+wi
93 data(1)=c1*(h1r+
data(2))
94 data(2)=c1*(h1r-
data(2))
106 subroutine four1(data,nn,isign)
108 integer i,istep,j,m,mmax,n,nn,isign
109 double precision wr,wi,wpr,wpi,wtemp,tempi,tempr,theta
110 double precision data(2*nn)
124 1
if ((m.ge.2).and.(j.gt.m))
then
132 2
if (n.gt.mmax)
then
134 theta=6.28318530717959d0/(isign*mmax)
135 wpr=-2.d0*dsin(0.5d0*theta)**2
142 tempr=sngl(wr)*
data(j)-sngl(wi)*
data(j+1)
143 tempi=sngl(wr)*
data(j+1)+sngl(wi)*
data(j)
144 data(j)=
data(i)-tempr
145 data(j+1)=
data(i+1)-tempi
146 data(i)=
data(i)+tempr
147 data(i+1)=
data(i+1)+tempi
151 wi=wi*wpr+wtemp*wpi+wi
subroutine realft(data, n, isign)
subroutine twofft(data1, data2, fft1, fft2, n)
subroutine four1(data, nn, isign)