📄 fftstp.f90
字号:
nout1=nout1+atn nout2=nout1+after nout3=nout2+after do 3090,j=1,n1dfft r1=zin(1,j,nin1) s1=zin(2,j,nin1) r=zin(1,j,nin2) s=zin(2,j,nin2) r2=r*cr2 - s*ci2 s2=r*ci2 + s*cr2 r=zin(1,j,nin3) s=zin(2,j,nin3) r3=r*cr3 - s*ci3 s3=r*ci3 + s*cr3 r=r2 + r3 s=s2 + s3 zout(1,j,nout1) = r + r1 zout(2,j,nout1) = s + s1 r1=r1 - .5d0*r s1=s1 - .5d0*s r2=bb*(r2-r3) s2=bb*(s2-s3) zout(1,j,nout2) = r1 - s2 zout(2,j,nout2) = s1 + r2 zout(1,j,nout3) = r1 + s2 zout(2,j,nout3) = s1 - r23090 continue endif3000 continue else if (now.eq.5) then! cos(2.d0*pi/5.d0) cos2=0.3090169943749474d0! cos(4.d0*pi/5.d0) cos4=-0.8090169943749474d0! sin(2.d0*pi/5.d0) sin2=isign*0.9510565162951536d0! sin(4.d0*pi/5.d0) sin4=isign*0.5877852522924731d0 ia=1 nin1=ia-after nout1=ia-atn do 5001,ib=1,before nin1=nin1+after nin2=nin1+atb nin3=nin2+atb nin4=nin3+atb nin5=nin4+atb nout1=nout1+atn nout2=nout1+after nout3=nout2+after nout4=nout3+after nout5=nout4+after do 5001,j=1,n1dfft r1=zin(1,j,nin1) s1=zin(2,j,nin1) r2=zin(1,j,nin2) s2=zin(2,j,nin2) r3=zin(1,j,nin3) s3=zin(2,j,nin3) r4=zin(1,j,nin4) s4=zin(2,j,nin4) r5=zin(1,j,nin5) s5=zin(2,j,nin5) r25 = r2 + r5 r34 = r3 + r4 s25 = s2 - s5 s34 = s3 - s4 zout(1,j,nout1) = r1 + r25 + r34 r = r1 + cos2*r25 + cos4*r34 s = sin2*s25 + sin4*s34 zout(1,j,nout2) = r - s zout(1,j,nout5) = r + s r = r1 + cos4*r25 + cos2*r34 s = sin4*s25 - sin2*s34 zout(1,j,nout3) = r - s zout(1,j,nout4) = r + s r25 = r2 - r5 r34 = r3 - r4 s25 = s2 + s5 s34 = s3 + s4 zout(2,j,nout1) = s1 + s25 + s34 r = s1 + cos2*s25 + cos4*s34 s = sin2*r25 + sin4*r34 zout(2,j,nout2) = r + s zout(2,j,nout5) = r - s r = s1 + cos4*s25 + cos2*s34 s = sin4*r25 - sin2*r34 zout(2,j,nout3) = r + s zout(2,j,nout4) = r - s5001 continue do 5000,ia=2,after ias=ia-1 if (8*ias.eq.5*after) then if (isign.eq.1) then nin1=ia-after nout1=ia-atn do 5010,ib=1,before nin1=nin1+after nin2=nin1+atb nin3=nin2+atb nin4=nin3+atb nin5=nin4+atb nout1=nout1+atn nout2=nout1+after nout3=nout2+after nout4=nout3+after nout5=nout4+after do 5010,j=1,n1dfft r1=zin(1,j,nin1) s1=zin(2,j,nin1) r=zin(1,j,nin2) s=zin(2,j,nin2) r2=(r - s)*rt2i s2=(r + s)*rt2i r3=zin(2,j,nin3) s3=zin(1,j,nin3) r=zin(1,j,nin4) s=zin(2,j,nin4) r4=(r + s)*rt2i s4=(r - s)*rt2i r5=zin(1,j,nin5) s5=zin(2,j,nin5) r25 = r2 - r5 r34 = r3 + r4 s25 = s2 + s5 s34 = s3 - s4 zout(1,j,nout1) = r1 + r25 - r34 r = r1 + cos2*r25 - cos4*r34 s = sin2*s25 + sin4*s34 zout(1,j,nout2) = r - s zout(1,j,nout5) = r + s r = r1 + cos4*r25 - cos2*r34 s = sin4*s25 - sin2*s34 zout(1,j,nout3) = r - s zout(1,j,nout4) = r + s r25 = r2 + r5 r34 = r4 - r3 s25 = s2 - s5 s34 = s3 + s4 zout(2,j,nout1) = s1 + s25 + s34 r = s1 + cos2*s25 + cos4*s34 s = sin2*r25 + sin4*r34 zout(2,j,nout2) = r + s zout(2,j,nout5) = r - s r = s1 + cos4*s25 + cos2*s34 s = sin4*r25 - sin2*r34 zout(2,j,nout3) = r + s zout(2,j,nout4) = r - s5010 continue else nin1=ia-after nout1=ia-atn do 5020,ib=1,before nin1=nin1+after nin2=nin1+atb nin3=nin2+atb nin4=nin3+atb nin5=nin4+atb nout1=nout1+atn nout2=nout1+after nout3=nout2+after nout4=nout3+after nout5=nout4+after do 5020,j=1,n1dfft r1=zin(1,j,nin1) s1=zin(2,j,nin1) r=zin(1,j,nin2) s=zin(2,j,nin2) r2=(r + s)*rt2i s2=(s - r)*rt2i r3=zin(2,j,nin3) s3=zin(1,j,nin3) r=zin(1,j,nin4) s=zin(2,j,nin4) r4=(s - r)*rt2i s4=(r + s)*rt2i r5=zin(1,j,nin5) s5=zin(2,j,nin5) r25 = r2 - r5 r34 = r3 + r4 s25 = s2 + s5 s34 = s4 - s3 zout(1,j,nout1) = r1 + r25 + r34 r = r1 + cos2*r25 + cos4*r34 s = sin2*s25 + sin4*s34 zout(1,j,nout2) = r - s zout(1,j,nout5) = r + s r = r1 + cos4*r25 + cos2*r34 s = sin4*s25 - sin2*s34 zout(1,j,nout3) = r - s zout(1,j,nout4) = r + s r25 = r2 + r5 r34 = r3 - r4 s25 = s2 - s5 s34 = s3 + s4 zout(2,j,nout1) = s1 + s25 - s34 r = s1 + cos2*s25 - cos4*s34 s = sin2*r25 + sin4*r34 zout(2,j,nout2) = r + s zout(2,j,nout5) = r - s r = s1 + cos4*s25 - cos2*s34 s = sin4*r25 - sin2*r34 zout(2,j,nout3) = r + s zout(2,j,nout4) = r - s5020 continue endif else ias=ia-1 itt=ias*before itrig=itt+1 cr2=trig(1,itrig) ci2=trig(2,itrig) itrig=itrig+itt cr3=trig(1,itrig) ci3=trig(2,itrig) itrig=itrig+itt cr4=trig(1,itrig) ci4=trig(2,itrig) itrig=itrig+itt cr5=trig(1,itrig) ci5=trig(2,itrig) nin1=ia-after nout1=ia-atn do 5100,ib=1,before nin1=nin1+after nin2=nin1+atb nin3=nin2+atb nin4=nin3+atb nin5=nin4+atb nout1=nout1+atn nout2=nout1+after nout3=nout2+after nout4=nout3+after nout5=nout4+after do 5100,j=1,n1dfft r1=zin(1,j,nin1) s1=zin(2,j,nin1) r=zin(1,j,nin2) s=zin(2,j,nin2) r2=r*cr2 - s*ci2 s2=r*ci2 + s*cr2 r=zin(1,j,nin3) s=zin(2,j,nin3) r3=r*cr3 - s*ci3 s3=r*ci3 + s*cr3 r=zin(1,j,nin4) s=zin(2,j,nin4) r4=r*cr4 - s*ci4 s4=r*ci4 + s*cr4 r=zin(1,j,nin5) s=zin(2,j,nin5) r5=r*cr5 - s*ci5 s5=r*ci5 + s*cr5 r25 = r2 + r5 r34 = r3 + r4 s25 = s2 - s5 s34 = s3 - s4 zout(1,j,nout1) = r1 + r25 + r34 r = r1 + cos2*r25 + cos4*r34 s = sin2*s25 + sin4*s34 zout(1,j,nout2) = r - s zout(1,j,nout5) = r + s r = r1 + cos4*r25 + cos2*r34 s = sin4*s25 - sin2*s34 zout(1,j,nout3) = r - s zout(1,j,nout4) = r + s r25 = r2 - r5 r34 = r3 - r4 s25 = s2 + s5 s34 = s3 + s4 zout(2,j,nout1) = s1 + s25 + s34 r = s1 + cos2*s25 + cos4*s34 s = sin2*r25 + sin4*r34 zout(2,j,nout2) = r + s zout(2,j,nout5) = r - s r = s1 + cos4*s25 + cos2*s34 s = sin4*r25 - sin2*r34 zout(2,j,nout3) = r + s zout(2,j,nout4) = r - s5100 continue endif5000 continue else if (now.eq.6) then! .5d0*sqrt(3.d0) bb=isign*0.8660254037844387d0 ia=1 nin1=ia-after nout1=ia-atn do 6120,ib=1,before nin1=nin1+after nin2=nin1+atb nin3=nin2+atb nin4=nin3+atb nin5=nin4+atb nin6=nin5+atb nout1=nout1+atn nout2=nout1+after nout3=nout2+after nout4=nout3+after nout5=nout4+after nout6=nout5+after do 6120,j=1,n1dfft r2=zin(1,j,nin3) s2=zin(2,j,nin3) r3=zin(1,j,nin5) s3=zin(2,j,nin5) r=r2 + r3 s=s2 + s3 r1=zin(1,j,nin1) s1=zin(2,j,nin1) ur1 = r + r1 ui1 = s + s1 r1=r1 - .5d0*r s1=s1 - .5d0*s r=r2-r3 s=s2-s3 ur2 = r1 - s*bb ui2 = s1 + r*bb ur3 = r1 + s*bb ui3 = s1 - r*bb r2=zin(1,j,nin6) s2=zin(2,j,nin6) r3=zin(1,j,nin2) s3=zin(2,j,nin2) r=r2 + r3 s=s2 + s3 r1=zin(1,j,nin4) s1=zin(2,j,nin4) vr1 = r + r1 vi1 = s + s1 r1=r1 - .5d0*r s1=s1 - .5d0*s r=r2-r3 s=s2-s3 vr2 = r1 - s*bb vi2 = s1 + r*bb vr3 = r1 + s*bb vi3 = s1 - r*bb zout(1,j,nout1)=ur1+vr1 zout(2,j,nout1)=ui1+vi1 zout(1,j,nout5)=ur2+vr2 zout(2,j,nout5)=ui2+vi2 zout(1,j,nout3)=ur3+vr3 zout(2,j,nout3)=ui3+vi3 zout(1,j,nout4)=ur1-vr1 zout(2,j,nout4)=ui1-vi1 zout(1,j,nout2)=ur2-vr2 zout(2,j,nout2)=ui2-vi2 zout(1,j,nout6)=ur3-vr3 zout(2,j,nout6)=ui3-vi36120 continue else stop 'error fftstp' endif return end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -