📄 fftstp.f90
字号:
s8=zin(2,j,nin8) r=r1 + r5 s=r3 + r7 ap=r + s am=r - s r=r2 + r6 s=r4 + r8 bp=r + s bm=r - s r=s1 + s5 s=s3 + s7 cp=r + s cm=r - s r=s2 + s6 s=s4 + s8 dp=r + s dm=r - s zout(1,j,nout1) = ap + bp zout(2,j,nout1) = cp + dp zout(1,j,nout5) = ap - bp zout(2,j,nout5) = cp - dp zout(1,j,nout3) = am - dm zout(2,j,nout3) = cm + bm zout(1,j,nout7) = am + dm zout(2,j,nout7) = cm - bm r= r1 - r5 s=-s3 + s7 ap=r + s am=r - s r=s1 - s5 s=r7 - r3 bp=r + s bm=r - s r=-s4 + s8 s= r2 - r6 cp=r + s cm=r - s r=-s2 + s6 s= r4 - r8 dp=r + s dm=r - s r = ( cp + dm)*rt2i s = ( cp - dm)*rt2i cp= ( cm + dp)*rt2i dp= ( dp - cm)*rt2i zout(1,j,nout2) = ap + r zout(2,j,nout2) = bm + s zout(1,j,nout6) = ap - r zout(2,j,nout6) = bm - s zout(1,j,nout4) = am + cp zout(2,j,nout4) = bp + dp zout(1,j,nout8) = am - cp zout(2,j,nout8) = bp - dp8121 continue do 8001,ia=2,after 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) itrig=itrig+itt cr6=trig(1,itrig) ci6=trig(2,itrig) itrig=itrig+itt cr7=trig(1,itrig) ci7=trig(2,itrig) itrig=itrig+itt cr8=trig(1,itrig) ci8=trig(2,itrig) nin1=ia-after nout1=ia-atn do 8021,ib=1,before nin1=nin1+after nin2=nin1+atb nin3=nin2+atb nin4=nin3+atb nin5=nin4+atb nin6=nin5+atb nin7=nin6+atb nin8=nin7+atb nout1=nout1+atn nout2=nout1+after nout3=nout2+after nout4=nout3+after nout5=nout4+after nout6=nout5+after nout7=nout6+after nout8=nout7+after do 8021,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 r=zin(1,j,nin6) s=zin(2,j,nin6) r6=r*cr6 - s*ci6 s6=r*ci6 + s*cr6 r=zin(1,j,nin7) s=zin(2,j,nin7) r7=r*cr7 - s*ci7 s7=r*ci7 + s*cr7 r=zin(1,j,nin8) s=zin(2,j,nin8) r8=r*cr8 - s*ci8 s8=r*ci8 + s*cr8 r=r1 + r5 s=r3 + r7 ap=r + s am=r - s r=r2 + r6 s=r4 + r8 bp=r + s bm=r - s r=s1 + s5 s=s3 + s7 cp=r + s cm=r - s r=s2 + s6 s=s4 + s8 dp=r + s dm=r - s zout(1,j,nout1) = ap + bp zout(2,j,nout1) = cp + dp zout(1,j,nout5) = ap - bp zout(2,j,nout5) = cp - dp zout(1,j,nout3) = am - dm zout(2,j,nout3) = cm + bm zout(1,j,nout7) = am + dm zout(2,j,nout7) = cm - bm r= r1 - r5 s=-s3 + s7 ap=r + s am=r - s r=s1 - s5 s=r7 - r3 bp=r + s bm=r - s r=-s4 + s8 s= r2 - r6 cp=r + s cm=r - s r=-s2 + s6 s= r4 - r8 dp=r + s dm=r - s r = ( cp + dm)*rt2i s = ( cp - dm)*rt2i cp= ( cm + dp)*rt2i dp= ( dp - cm)*rt2i zout(1,j,nout2) = ap + r zout(2,j,nout2) = bm + s zout(1,j,nout6) = ap - r zout(2,j,nout6) = bm - s zout(1,j,nout4) = am + cp zout(2,j,nout4) = bp + dp zout(1,j,nout8) = am - cp zout(2,j,nout8) = bp - dp8021 continue8001 continue endif else if (now.eq.3) then ! .5d0*sqrt(3.d0) bb=isign*0.8660254037844387d0 ia=1 nin1=ia-after nout1=ia-atn do 3001,ib=1,before nin1=nin1+after nin2=nin1+atb nin3=nin2+atb nout1=nout1+atn nout2=nout1+after nout3=nout2+after do 3001,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) 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 - r23001 continue do 3000,ia=2,after ias=ia-1 if (4*ias.eq.3*after) then if (isign.eq.1) then nin1=ia-after nout1=ia-atn do 3010,ib=1,before nin1=nin1+after nin2=nin1+atb nin3=nin2+atb nout1=nout1+atn nout2=nout1+after nout3=nout2+after do 3010,j=1,n1dfft r1=zin(1,j,nin1) s1=zin(2,j,nin1) r2=zin(2,j,nin2) s2=zin(1,j,nin2) r3=zin(1,j,nin3) s3=zin(2,j,nin3) r=r3 + r2 s=s2 - s3 zout(1,j,nout1) = r1 - r 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 + r23010 continue else nin1=ia-after nout1=ia-atn do 3020,ib=1,before nin1=nin1+after nin2=nin1+atb nin3=nin2+atb nout1=nout1+atn nout2=nout1+after nout3=nout2+after do 3020,j=1,n1dfft r1=zin(1,j,nin1) s1=zin(2,j,nin1) r2=zin(2,j,nin2) s2=zin(1,j,nin2) r3=zin(1,j,nin3) s3=zin(2,j,nin3) r=r2 - r3 s=s2 + s3 zout(1,j,nout1) = r + r1 zout(2,j,nout1) = s1 - s 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 - r23020 continue endif else if (8*ias.eq.3*after) then if (isign.eq.1) then nin1=ia-after nout1=ia-atn do 3030,ib=1,before nin1=nin1+after nin2=nin1+atb nin3=nin2+atb nout1=nout1+atn nout2=nout1+after nout3=nout2+after do 3030,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=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 - r23030 continue else nin1=ia-after nout1=ia-atn do 3040,ib=1,before nin1=nin1+after nin2=nin1+atb nin3=nin2+atb nout1=nout1+atn nout2=nout1+after nout3=nout2+after do 3040,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=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 - r23040 continue endif else 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) nin1=ia-after nout1=ia-atn do 3090,ib=1,before nin1=nin1+after nin2=nin1+atb nin3=nin2+atb
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -