! File: fft17.i90 ! Public domain 2004 James Van Buskirk subroutine fft17(h) ! 246 adds, 102 muls implicit real(wp) (x) complex(wp), intent(inout) :: h(0:16) real(wp), parameter :: a1 = -0.3201941016011037843638381159983798_wp real(wp), parameter :: a2 = 0.5153882032022075687276762319967597_wp real(wp), parameter :: a3 = -0.4062317844533314862925279229697164_wp real(wp), parameter :: a4 = -0.3171761928327251155425453834896552_wp real(wp), parameter :: a5 = 0.1237912496751788814777778839812557_wp real(wp), parameter :: a6 = 0.7371997587771015656254636933826678_wp real(wp), parameter :: a7 = -0.2963106852953480231889545083522727_wp real(wp), parameter :: a8 = -0.3597006729243105654677677424081503_wp real(wp), parameter :: a9 = -0.6040126204621633919896464992537821E-01_wp real(wp), parameter :: a10 = 1.220691681376591012571009319772074_wp real(wp), parameter :: a11 = 0.3754399131300301668347407342294479_wp real(wp), parameter :: a12 = 0.4411713187559899971578789333540514_wp real(wp), parameter :: a13 = -0.2159696604122308598729202704047096E-01_wp real(wp), parameter :: a14 = -0.3933286526578454272573498655633091_wp real(wp), parameter :: a15 = 0.7095303898208091475016452794270462_wp real(wp), parameter :: a16 = 1.194348384888448507946249800458656_wp real(wp), parameter :: a17 = 0.4225773141502093364980643785668135_wp real(wp), parameter :: a18 = -0.5654929023896722887779921337246183_wp real(wp), parameter :: a19 = 0.4151785950518634686007984895720901_wp real(wp), parameter :: a20 = -0.9197608155352012275019576647040088_wp real(wp), parameter :: a21 = 1.052213034881594616171844238947018_wp real(wp), parameter :: a22 = 0.7250463714707697863196664206938742_wp real(wp), parameter :: d1 = .7071067811865475244008443621048491_wp xr1_0 = real(h(1))+real(h(16)) xi1_0 = aimag(h(1))+aimag(h(16)) xr1_8 = real(h(1))-real(h(16)) xi1_8 = aimag(h(1))-aimag(h(16)) xr1_1 = real(h(3))+real(h(14)) xi1_1 = aimag(h(3))+aimag(h(14)) xr1_9 = real(h(3))-real(h(14)) xi1_9 = aimag(h(3))-aimag(h(14)) xr1_2 = real(h(9))+real(h(8)) xi1_2 = aimag(h(9))+aimag(h(8)) xr1_10 = real(h(9))-real(h(8)) xi1_10 = aimag(h(9))-aimag(h(8)) xr1_3 = real(h(10))+real(h(7)) xi1_3 = aimag(h(10))+aimag(h(7)) xr1_11 = real(h(10))-real(h(7)) xi1_11 = aimag(h(10))-aimag(h(7)) xr1_4 = real(h(13))+real(h(4)) xi1_4 = aimag(h(13))+aimag(h(4)) xr1_12 = real(h(13))-real(h(4)) xi1_12 = aimag(h(13))-aimag(h(4)) xr1_5 = real(h(5))+real(h(12)) xi1_5 = aimag(h(5))+aimag(h(12)) xr1_13 = real(h(5))-real(h(12)) xi1_13 = aimag(h(5))-aimag(h(12)) xr1_6 = real(h(15))+real(h(2)) xi1_6 = aimag(h(15))+aimag(h(2)) xr1_14 = real(h(15))-real(h(2)) xi1_14 = aimag(h(15))-aimag(h(2)) xr1_7 = real(h(11))+real(h(6)) xi1_7 = aimag(h(11))+aimag(h(6)) xr1_15 = real(h(11))-real(h(6)) xi1_15 = aimag(h(11))-aimag(h(6)) xr2_0 = xr1_0+xr1_4 xi2_0 = xi1_0+xi1_4 xr2_1 = xr1_1+xr1_5 xi2_1 = xi1_1+xi1_5 xr2_2 = xr1_2+xr1_6 xi2_2 = xi1_2+xi1_6 xr2_3 = xr1_3+xr1_7 xi2_3 = xi1_3+xi1_7 xr3_0 = xr2_0+xr2_2 xi3_0 = xi2_0+xi2_2 xr3_1 = xr2_1+xr2_3 xi3_1 = xi2_1+xi2_3 xr3_2 = xr2_0-xr2_2 xi3_2 = xi2_0-xi2_2 xr3_3 = xr2_1-xr2_3 xi3_3 = xi2_1-xi2_3 xr000 = xr3_0+xr3_1 xi000 = xi3_0+xi3_1 xr0 = real(h(0))+xr000 xi0 = aimag(h(0))+xi000 xr00 = real(h(0))+a1*xr000 xi00 = aimag(h(0))+a1*xi000 xr4_0 = xr00+a2*xr3_1 xi4_0 = xi00+a2*xi3_1 xr4_1 = xr00+a2*xr3_0 xi4_1 = xi00+a2*xi3_0 h(0) = cmplx(xr0,xi0,wp) xr4_2 = a3*xr3_2-a4*xr3_3 xi4_2 = a3*xi3_2-a4*xi3_3 xr4_3 = a4*xr3_2+a3*xr3_3 xi4_3 = a4*xi3_2+a3*xi3_3 xr5_0 = xr4_0+xr4_2 xi5_0 = xi4_0+xi4_2 xr5_1 = xr4_1+xr4_3 xi5_1 = xi4_1+xi4_3 xr5_2 = xr4_0-xr4_2 xi5_2 = xi4_0-xi4_2 xr5_3 = xr4_1-xr4_3 xi5_3 = xi4_1-xi4_3 xr2_4 = xr1_0-xr1_4 xi2_4 = xi1_0-xi1_4 xr2_5 = xr1_1-xr1_5 xi2_5 = xi1_1-xi1_5 xr2_6 = xr1_2-xr1_6 xi2_6 = xi1_2-xi1_6 xr2_7 = xr1_3-xr1_7 xi2_7 = xi1_3-xi1_7 xr3_4 = xr2_4+xr2_5 xi3_4 = xi2_4+xi2_5 xr3_5 = xr2_6+xr2_7 xi3_5 = xi2_6+xi2_7 xr4_6 = a5*xr3_4-a8*xr3_5 xi4_6 = a5*xi3_4-a8*xi3_5 xr4_7 = a8*xr3_4+a5*xr3_5 xi4_7 = a8*xi3_4+a5*xi3_5 xr5_4 = xr4_6-a7*xr2_5-a10*xr2_7 xi5_4 = xi4_6-a7*xi2_5-a10*xi2_7 xr5_5 = xr4_6+a6*xr2_4-a9*xr2_6 xi5_5 = xi4_6+a6*xi2_4-a9*xi2_6 xr5_6 = xr4_7+a10*xr2_5-a7*xr2_7 xi5_6 = xi4_7+a10*xi2_5-a7*xi2_7 xr5_7 = xr4_7+a9*xr2_4+a6*xr2_6 xi5_7 = xi4_7+a9*xi2_4+a6*xi2_6 xr6_0 = xr5_0+xr5_4 xi6_0 = xi5_0+xi5_4 xr6_1 = xr5_1+xr5_5 xi6_1 = xi5_1+xi5_5 xr6_2 = xr5_2+xr5_6 xi6_2 = xi5_2+xi5_6 xr6_3 = xr5_3+xr5_7 xi6_3 = xi5_3+xi5_7 xr6_4 = xr5_0-xr5_4 xi6_4 = xi5_0-xi5_4 xr6_5 = xr5_1-xr5_5 xi6_5 = xi5_1-xi5_5 xr6_6 = xr5_2-xr5_6 xi6_6 = xi5_2-xi5_6 xr6_7 = xr5_3-xr5_7 xi6_7 = xi5_3-xi5_7 xr2_8 = d1*(xr1_10-xr1_14) xi2_8 = d1*(xi1_10-xi1_14) xr2_10 = d1*(xr1_10+xr1_14) xi2_10 = d1*(xi1_10+xi1_14) xr3_8 = xr1_8+xr2_8 xi3_8 = xi1_8+xi2_8 xr3_10 = xr1_8-xr2_8 xi3_10 = xi1_8-xi2_8 xr3_12 = xr2_10+xr1_12 xi3_12 = xi2_10+xi1_12 xr3_14 = xr2_10-xr1_12 xi3_14 = xi2_10-xi1_12 xr2_9 = d1*(xr1_11-xr1_15) xi2_9 = d1*(xi1_11-xi1_15) xr2_11 = d1*(xr1_11+xr1_15) xi2_11 = d1*(xi1_11+xi1_15) xr3_9 = xr1_9+xr2_9 xi3_9 = xi1_9+xi2_9 xr3_11 = xr1_9-xr2_9 xi3_11 = xi1_9-xi2_9 xr3_13 = xr2_11+xr1_13 xi3_13 = xi2_11+xi1_13 xr3_15 = xr2_11-xr1_13 xi3_15 = xi2_11-xi1_13 xr4_8 = xr3_8+xr3_9 xi4_8 = xi3_8+xi3_9 xr4_9 = xr3_12+xr3_13 xi4_9 = xi3_12+xi3_13 xr5_12 = a11*xr4_8-a14*xr4_9 xi5_12 = a11*xi4_8-a14*xi4_9 xr5_13 = a14*xr4_8+a11*xr4_9 xi5_13 = a14*xi4_8+a11*xi4_9 xr6_8 = xr5_12+a13*xr3_9-a16*xr3_13 xi6_8 = xi5_12+a13*xi3_9-a16*xi3_13 xr6_9 = xr5_12+a12*xr3_8-a15*xr3_12 xi6_9 = xi5_12+a12*xi3_8-a15*xi3_12 xr6_12 = xr5_13+a16*xr3_9+a13*xr3_13 xi6_12 = xi5_13+a16*xi3_9+a13*xi3_13 xr6_13 = xr5_13+a15*xr3_8+a12*xr3_12 xi6_13 = xi5_13+a15*xi3_8+a12*xi3_12 xr4_10 = xr3_10+xr3_11 xi4_10 = xi3_10+xi3_11 xr4_11 = xr3_14+xr3_15 xi4_11 = xi3_14+xi3_15 xr5_14 = a17*xr4_10-a20*xr4_11 xi5_14 = a17*xi4_10-a20*xi4_11 xr5_15 = a20*xr4_10+a17*xr4_11 xi5_15 = a20*xi4_10+a17*xi4_11 xr6_10 = xr5_14-a19*xr3_11-a22*xr3_15 xi6_10 = xi5_14-a19*xi3_11-a22*xi3_15 xr6_11 = xr5_14+a18*xr3_10-a21*xr3_14 xi6_11 = xi5_14+a18*xi3_10-a21*xi3_14 xr6_14 = xr5_15+a22*xr3_11-a19*xr3_15 xi6_14 = xi5_15+a22*xi3_11-a19*xi3_15 xr6_15 = xr5_15+a21*xr3_10+a18*xr3_14 xi6_15 = xi5_15+a21*xi3_10+a18*xi3_14 xr7_8 = d1*(xr6_8-xr6_10) xi7_8 = d1*(xi6_8-xi6_10) xr7_10 = d1*(xr6_12+xr6_14) xi7_10 = d1*(xi6_12+xi6_14) xr8_8 = xr6_8+xr6_10 xi8_8 = xi6_8+xi6_10 xr8_10 = xr7_10+xr7_8 xi8_10 = xi7_10+xi7_8 xr8_12 = xr6_12-xr6_14 xi8_12 = xi6_12-xi6_14 xr8_14 = xr7_10-xr7_8 xi8_14 = xi7_10-xi7_8 xr7_9 = d1*(xr6_9-xr6_11) xi7_9 = d1*(xi6_9-xi6_11) xr7_11 = d1*(xr6_13+xr6_15) xi7_11 = d1*(xi6_13+xi6_15) xr8_9 = xr6_9+xr6_11 xi8_9 = xi6_9+xi6_11 xr8_11 = xr7_11+xr7_9 xi8_11 = xi7_11+xi7_9 xr8_13 = xr6_13-xr6_15 xi8_13 = xi6_13-xi6_15 xr8_15 = xr7_11-xr7_9 xi8_15 = xi7_11-xi7_9 h(6) = cmplx(xr6_0+xi8_8,xi6_0-xr8_8,wp) h(11) = cmplx(xr6_0-xi8_8,xi6_0+xr8_8,wp) h(2) = cmplx(xr6_1+xi8_9,xi6_1-xr8_9,wp) h(15) = cmplx(xr6_1-xi8_9,xi6_1+xr8_9,wp) h(12) = cmplx(xr6_2+xi8_10,xi6_2-xr8_10,wp) h(5) = cmplx(xr6_2-xi8_10,xi6_2+xr8_10,wp) h(4) = cmplx(xr6_3+xi8_11,xi6_3-xr8_11,wp) h(13) = cmplx(xr6_3-xi8_11,xi6_3+xr8_11,wp) h(7) = cmplx(xr6_4+xi8_12,xi6_4-xr8_12,wp) h(10) = cmplx(xr6_4-xi8_12,xi6_4+xr8_12,wp) h(8) = cmplx(xr6_5+xi8_13,xi6_5-xr8_13,wp) h(9) = cmplx(xr6_5-xi8_13,xi6_5+xr8_13,wp) h(14) = cmplx(xr6_6+xi8_14,xi6_6-xr8_14,wp) h(3) = cmplx(xr6_6-xi8_14,xi6_6+xr8_14,wp) h(16) = cmplx(xr6_7+xi8_15,xi6_7-xr8_15,wp) h(1) = cmplx(xr6_7-xi8_15,xi6_7+xr8_15,wp) end subroutine fft17