@@ -326,12 +326,13 @@ contains
326
326
#:endfor
327
327
328
328
#:for k1, t1 in INT_KINDS_TYPES
329
+ #:set k2, t2 = REAL_KINDS[-1], REAL_TYPES[-1]
329
330
impure elemental function l_gamma_${t1[0]}$${k1}$(z) result(res)
330
331
!
331
332
! Logarithm of gamma function for integer input
332
333
!
333
334
${t1}$, intent(in) :: z
334
- real :: res
335
+ ${t2}$ :: res
335
336
${t1}$ :: i
336
337
${t1}$, parameter :: zero = 0_${k1}$, one = 1_${k1}$, two = 2_${k1}$
337
338
@@ -350,7 +351,7 @@ contains
350
351
351
352
do i = one, z - one
352
353
353
- res = res + log(real(i))
354
+ res = res + log(real(i,${k2}$ ))
354
355
355
356
end do
356
357
@@ -512,14 +513,15 @@ contains
512
513
513
514
514
515
#:for k1, t1 in INT_KINDS_TYPES
516
+ #:set k2, t2 = REAL_KINDS[-2], REAL_TYPES[-2]
515
517
impure elemental function l_factorial_${t1[0]}$${k1}$(n) result(res)
516
518
!
517
519
! Log(n!)
518
520
!
519
521
${t1}$, intent(in) :: n
520
- real(dp) :: res
522
+ ${t2}$ :: res
521
523
${t1}$, parameter :: zero = 0_${k1}$, one = 1_${k1}$, two = 2_${k1}$
522
- real(dp) , parameter :: zero_dp = 0.0_dp
524
+ ${t2}$ , parameter :: zero_${k2}$ = 0.0_${k2}$, one_${k2}$ = 1.0_${k2}$
523
525
524
526
if(n < zero) call error_stop("Error(l_factorial): Logarithm of" &
525
527
//" factorial function argument must be non-negative")
@@ -528,15 +530,15 @@ contains
528
530
529
531
case (zero)
530
532
531
- res = zero_dp
533
+ res = zero_${k2}$
532
534
533
535
case (one)
534
536
535
- res = zero_dp
537
+ res = zero_${k2}$
536
538
537
539
case (two : )
538
540
539
- res = l_gamma(n + 1, 1.0_dp )
541
+ res = l_gamma(n + 1, one_${k2}$ )
540
542
541
543
end select
542
544
end function l_factorial_${t1[0]}$${k1}$
0 commit comments