dcosqb.f90 Source File


Contents

Source Code


Source Code

      subroutine dcosqb(n, x, wsave)
         use fftpack_kind, only: dp => rk
         implicit none
         integer, intent(in) :: n
         real(dp), intent(in) :: wsave(*)
         real(dp), intent(inout) :: x(*)
         real(dp) :: x1
         real(dp), parameter :: tsqrt2 = 2.0_dp*sqrt(2.0_dp)
         if (n < 2) then
            x(1) = 4.0_dp*x(1)
            return
         elseif (n == 2) then
            x1 = 4.0_dp*(x(1) + x(2))
            x(2) = tsqrt2*(x(1) - x(2))
            x(1) = x1
            return
         else
            call cosqb1(n, x, wsave, wsave(n + 1))
         end if
      end subroutine dcosqb