cfft_1d_forward Subroutine

public subroutine cfft_1d_forward(func)

Arguments

Type IntentOptional Attributes Name
complex(kind=8), intent(inout), dimension(:) :: func

Calls

proc~~cfft_1d_forward~~CallsGraph proc~cfft_1d_forward cfft_1d_forward cfft1f cfft1f proc~cfft_1d_forward->cfft1f cfft1i cfft1i proc~cfft_1d_forward->cfft1i

Called by

proc~~cfft_1d_forward~~CalledByGraph proc~cfft_1d_forward cfft_1d_forward interface~fft fft interface~fft->proc~cfft_1d_forward

Source Code

  subroutine cfft_1d_forward(func)
    complex(8),dimension(:),intent(inout) :: func
    real(8),dimension(:),allocatable      :: wsave,work
    integer                               :: N,lenwrk,lensav,lenc,inc,ier
    N      = size(func)
    lenwrk = 2*N
    lensav = 2*N + int( log(dble(N))/log(2.d0) ) + 4
    lenc   = N
    inc    = 1
    allocate(wsave(lensav))
    allocate(work(lenwrk))
    call cfft1i(N,wsave,lensav,ier)
    if(ier==2)stop "cfft_1d_forward: LENSAV not big enough"
    call cfft1f(N,inc,func,lenc,wsave,lensav,work,lenwrk,ier)
    deallocate(wsave,work)
    select case(ier)
    case (0)
       return
    case (1)
       stop "cfft_1d_forward: LENC not big enough"
    case (2)
       stop "cfft_1d_forward: LENSAV not big enough"
    case (3)
       stop "cfft_1d_forward: LENWRK not big enough"
    case (20)
       stop "cfft_1d_forward: input error returned by lower level routine"
    end select
  end subroutine cfft_1d_forward