Line data Source code
1 : module m_DoubleFactorial 2 : 3 : implicit none 4 : 5 : 6 : contains 7 : 8 : 9 184069 : real function DoubleFactorial( n_upper, n_lower ) 10 : ! calculates ( 2 * n_upper + 1 ) !! / ( 2 * n_lower + 1 ) !! or just ( 2 * n_upper + 1 ) !!, if n_lower is not present 11 : 12 : integer :: n_upper 13 : integer, optional :: n_lower 14 : integer :: i, i_lower 15 : 16 184069 : i_lower = 1 17 184069 : if( present(n_lower) ) i_lower = n_lower + 1 18 : 19 184069 : DoubleFactorial = 1. 20 1025917 : do i = i_lower, n_upper 21 1025917 : DoubleFactorial = DoubleFactorial * ( 2 * i + 1 ) 22 : end do 23 : 24 184069 : end function DoubleFactorial 25 : 26 : 27 : end module m_DoubleFactorial