! File: fft11t.i90 ! Public domain 2004 James Van Buskirk subroutine fft11t(h) ! 138 adds, 58 muls complex(wp), intent(inout) :: h(0:10) real(wp) xr1, xi1, xr2, xi2, xr3, xi3, xr4, xi4, xr5, xi5 real(wp) xr6, xi6 real(wp) yr1, yi1, yr2, yi2, yr3, yi3, yr4, yi4, yr5, yi5 real(wp) pr1, pi1, pr2, pi2, pr3, pi3, pr4, pi4 real(wp) pr12, pi12, pr34, pi34, pr1234, pi1234 real(wp) sr2345, si2345, sr23, si23, sr2, si2, sr3, si3 real(wp) sr45, si45, sr4, si4, sr5, si5 real(wp) sr16, si16, sr1, si1, sr6, si6 real(wp) qr1, qi1, qr2, qi2, qr3, qi3, qr4, qi4 real(wp) qr12, qi12, qr34, qi34, qr1234, qi1234 real(wp) tr1234, ti1234, tr12, ti12, tr1, ti1, tr2, ti2 real(wp) tr34, ti34, tr3, ti3, tr4, ti4 real(wp) tr5, ti5 real(wp), parameter :: dc1 = 0.84125353283118116886181164891936774_wp real(wp), parameter :: dc2 = -0.98356837110446630930560431753573734_wp real(wp), parameter :: dc3 = -0.42583851982929474333253749968974467_wp real(wp), parameter :: dc4 = -1.8007465064456785587521797059856955_wp real(wp), parameter :: dc5 = -1.4961142667764662329187367213856611_wp real(wp), parameter :: dc6 = -0.55772985127517156597306681784599267_wp real(wp), parameter :: dc7 = -1.3749079866163838154196422062959507_wp real(wp), parameter :: dc8 = 0.30463223966921232583344298460003419_wp real(wp), parameter :: dc9 = -0.50000000000000000000000000000000000_wp real(wp), parameter :: ds1 = 0.54064081745559758210763595431869167_wp real(wp), parameter :: ds2 = 0.44918062442533515026845608345802716_wp real(wp), parameter :: ds3 = -1.4502728128101159535193513373977203_wp real(wp), parameter :: ds4 = -0.25890826061416788439621803897207469_wp real(wp), parameter :: ds5 = 0.21510875689866070166639988965365271_wp real(wp), parameter :: ds6 = 1.8994534372354511037878074208557473_wp real(wp), parameter :: ds7 = 1.1913645521959480691231332984256455_wp real(wp), parameter :: ds8 = 0.47401701751282858606261792862572741_wp real(wp), parameter :: ds9 = 1.6583123951776999245574663683353434_wp xr1 = real(h(0)) xi1 = aimag(h(0)) xr2 = real(h(1))+real(h(10)) xi2 = aimag(h(1))+aimag(h(10)) xr3 = real(h(3))+real(h(8)) xi3 = aimag(h(3))+aimag(h(8)) xr4 = real(h(9))+real(h(2)) xi4 = aimag(h(9))+aimag(h(2)) xr5 = real(h(5))+real(h(6)) xi5 = aimag(h(5))+aimag(h(6)) xr6 = real(h(4))+real(h(7)) xi6 = aimag(h(4))+aimag(h(7)) yr1 = real(h(1))-real(h(10)) yi1 = aimag(h(1))-aimag(h(10)) yr2 = real(h(3))-real(h(8)) yi2 = aimag(h(3))-aimag(h(8)) yr3 = real(h(9))-real(h(2)) yi3 = aimag(h(9))-aimag(h(2)) yr4 = real(h(5))-real(h(6)) yi4 = aimag(h(5))-aimag(h(6)) yr5 = real(h(4))-real(h(7)) yi5 = aimag(h(4))-aimag(h(7)) pr1 = xr2-xr6 pi1 = xi2-xi6 pr2 = xr3-xr6 pi2 = xi3-xi6 pr3 = xr4-xr6 pi3 = xi4-xi6 pr4 = xr5-xr6 pi4 = xi5-xi6 pr12 = pr1+pr2 pi12 = pi1+pi2 pr34 = pr3+pr4 pi34 = pi3+pi4 pr1234 = pr12+pr34 pi1234 = pi12+pi34 sr2345 = xr1+dc9*xr6+dc1*pr1234 si2345 = xi1+dc9*xi6+dc1*pi1234 sr23 = sr2345+dc3*pr34 si23 = si2345+dc3*pi34 sr2 = sr23+dc2*pr2+dc7*pr4 si2 = si23+dc2*pi2+dc7*pi4 sr3 = sr23+dc5*pr1+dc6*pr3 si3 = si23+dc5*pi1+dc6*pi3 sr45 = sr2345+dc4*pr12 si45 = si2345+dc4*pi12 sr4 = sr45+dc8*pr2+dc2*pr4 si4 = si45+dc8*pi2+dc2*pi4 sr5 = sr45-dc7*pr1+dc5*pr3 si5 = si45-dc7*pi1+dc5*pi3 sr16 = pr1234+5*xr6 si16 = pi1234+5*xi6 sr1 = sr16+xr1 si1 = si16+xi1 sr6 = dc9*sr16-(sr2+sr3+sr4+sr5)+5*xr1 si6 = dc9*si16-(si2+si3+si4+si5)+5*xi1 qr1 = yr1-yr5 qi1 = yi1-yi5 qr2 = yr2-yr5 qi2 = yi2-yi5 qr3 = yr3-yr5 qi3 = yi3-yi5 qr4 = yr4-yr5 qi4 = yi4-yi5 qr12 = qr1+qr2 qi12 = qi1+qi2 qr34 = qr3+qr4 qi34 = qi3+qi4 qr1234 = qr12+qr34 qi1234 = qi12+qi34 tr1234 = ds9*yr5+ds1*qr1234 ti1234 = ds9*yi5+ds1*qi1234 tr12 = tr1234+ds3*qr34 ti12 = ti1234+ds3*qi34 tr1 = tr12+ds2*qr2+ds7*qr4 ti1 = ti12+ds2*qi2+ds7*qi4 tr2 = tr12+ds5*qr1+ds6*qr3 ti2 = ti12+ds5*qi1+ds6*qi3 tr34 = tr1234+ds4*qr12 ti34 = ti1234+ds4*qi12 tr3 = tr34+ds8*qr2+ds2*qr4 ti3 = ti34+ds8*qi2+ds2*qi4 tr4 = tr34-ds7*qr1+ds5*qr3 ti4 = ti34-ds7*qi1+ds5*qi3 tr5 = ds9*(qr1234+5*yr5)-(tr1+tr2+tr3+tr4) ti5 = ds9*(qi1234+5*yi5)-(ti1+ti2+ti3+ti4) h(0) = cmplx(sr1,si1,wp) h(1) = cmplx(sr2+ti1,si2-tr1,wp) h(2) = cmplx(sr5-ti4,si5+tr4,wp) h(3) = cmplx(sr6+ti5,si6-tr5,wp) h(4) = cmplx(sr3+ti2,si3-tr2,wp) h(5) = cmplx(sr4+ti3,si4-tr3,wp) h(6) = cmplx(sr4-ti3,si4+tr3,wp) h(7) = cmplx(sr3-ti2,si3+tr2,wp) h(8) = cmplx(sr6-ti5,si6+tr5,wp) h(9) = cmplx(sr5+ti4,si5-tr4,wp) h(10) = cmplx(sr2-ti1,si2+tr1,wp) end subroutine fft11t