Compute Euler number En
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | n |
Serial number |
||
| real(kind=wp), | intent(out) | :: | En(0:n) |
|
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