rfft_1d_backward Subroutine

public subroutine rfft_1d_backward(func)

Arguments

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

Calls

proc~~rfft_1d_backward~2~~CallsGraph proc~rfft_1d_backward~2 rfft_1d_backward rfft1b rfft1b proc~rfft_1d_backward~2->rfft1b rfft1i rfft1i proc~rfft_1d_backward~2->rfft1i

Called by

proc~~rfft_1d_backward~2~~CalledByGraph proc~rfft_1d_backward~2 rfft_1d_backward interface~ifft~2 ifft interface~ifft~2->proc~rfft_1d_backward~2 proc~c_itfft~2 c_itfft proc~c_itfft~2->interface~ifft~2 proc~d_itfft~2 d_itfft proc~d_itfft~2->interface~ifft~2 interface~itfft~2 itfft interface~itfft~2->proc~c_itfft~2 interface~itfft~2->proc~d_itfft~2

Source Code

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