eulerb Subroutine

public subroutine eulerb(n, En)

Compute Euler number En

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n

Serial number

real(kind=wp), intent(out) :: En(0:n)

En


Source Code

   subroutine eulerb(n,En)

      integer,intent(in) :: n !! Serial number
      real(wp),intent(out) :: En(0:n) !! `En`

      real(wp) :: r1 , r2 , s
      integer :: isgn , k , m

      real(wp),parameter :: hpi = 2.0_wp / pi ! 2.0_wp/3.141592653589793d0

      En(0) = 1.0_wp
      En(2) = -1.0_wp
      r1 = -4.0_wp*hpi**3
      do m = 4 , n , 2
         r1 = -r1*(m-1)*m*hpi*hpi
         r2 = 1.0_wp
         isgn = 1.0_wp
         do k = 3 , 1000 , 2
            isgn = -isgn
            s = (1.0_wp/k)**(m+1)
            r2 = r2 + isgn*s
            if ( s<1.0e-15_wp ) exit
         enddo
         En(m) = r1*r2
      enddo

   end subroutine eulerb