! File: fft5.i90 ! Public domain 2004 James Van Buskirk subroutine fft5(h) ! 30 adds, 14 muls implicit real(wp) (x) complex(wp), intent(inout) :: h(0:4) real(wp), parameter :: a1 = -0.8090169943749474241022934171828191_wp real(wp), parameter :: a2 = 1.118033988749894848204586834365638_wp real(wp), parameter :: a3 = 0.5877852522924731291687059546390728_wp real(wp), parameter :: a4 = -0.9510565162951535721164393333793821_wp xr1_0 = real(h(1))+real(h(4)) xi1_0 = aimag(h(1))+aimag(h(4)) xr1_2 = real(h(1))-real(h(4)) xi1_2 = aimag(h(1))-aimag(h(4)) xr1_1 = real(h(3))+real(h(2)) xi1_1 = aimag(h(3))+aimag(h(2)) xr1_3 = real(h(3))-real(h(2)) xi1_3 = aimag(h(3))-aimag(h(2)) xr000 = xr1_0+xr1_1 xi000 = xi1_0+xi1_1 xr0 = real(h(0))+xr000 xi0 = aimag(h(0))+xi000 xr00 = real(h(0))+a1*xr000 xi00 = aimag(h(0))+a1*xi000 xr2_0 = xr00+a2*xr1_1 xi2_0 = xi00+a2*xi1_1 xr2_1 = xr00+a2*xr1_0 xi2_1 = xi00+a2*xi1_0 h(0) = cmplx(xr0,xi0,wp) xr2_2 = a3*xr1_2-a4*xr1_3 xi2_2 = a3*xi1_2-a4*xi1_3 xr2_3 = a4*xr1_2+a3*xr1_3 xi2_3 = a4*xi1_2+a3*xi1_3 h(2) = cmplx(xr2_0+xi2_2,xi2_0-xr2_2,wp) h(3) = cmplx(xr2_0-xi2_2,xi2_0+xr2_2,wp) h(4) = cmplx(xr2_1+xi2_3,xi2_1-xr2_3,wp) h(1) = cmplx(xr2_1-xi2_3,xi2_1+xr2_3,wp) end subroutine fft5