Skip to content

Commit da2bbac

Browse files
committed
generalize l_gamma, l_factorial kinds
1 parent b4f0fcb commit da2bbac

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

src/stdlib_specialfunctions_gamma.fypp

+9-7
Original file line numberDiff line numberDiff line change
@@ -326,12 +326,13 @@ contains
326326
#:endfor
327327

328328
#:for k1, t1 in INT_KINDS_TYPES
329+
#:set k2, t2 = REAL_KINDS[-1], REAL_TYPES[-1]
329330
impure elemental function l_gamma_${t1[0]}$${k1}$(z) result(res)
330331
!
331332
! Logarithm of gamma function for integer input
332333
!
333334
${t1}$, intent(in) :: z
334-
real :: res
335+
${t2}$ :: res
335336
${t1}$ :: i
336337
${t1}$, parameter :: zero = 0_${k1}$, one = 1_${k1}$, two = 2_${k1}$
337338

@@ -350,7 +351,7 @@ contains
350351

351352
do i = one, z - one
352353

353-
res = res + log(real(i))
354+
res = res + log(real(i,${k2}$))
354355

355356
end do
356357

@@ -512,14 +513,15 @@ contains
512513

513514

514515
#:for k1, t1 in INT_KINDS_TYPES
516+
#:set k2, t2 = REAL_KINDS[-2], REAL_TYPES[-2]
515517
impure elemental function l_factorial_${t1[0]}$${k1}$(n) result(res)
516518
!
517519
! Log(n!)
518520
!
519521
${t1}$, intent(in) :: n
520-
real(dp) :: res
522+
${t2}$ :: res
521523
${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}$
523525

524526
if(n < zero) call error_stop("Error(l_factorial): Logarithm of" &
525527
//" factorial function argument must be non-negative")
@@ -528,15 +530,15 @@ contains
528530

529531
case (zero)
530532

531-
res = zero_dp
533+
res = zero_${k2}$
532534

533535
case (one)
534536

535-
res = zero_dp
537+
res = zero_${k2}$
536538

537539
case (two : )
538540

539-
res = l_gamma(n + 1, 1.0_dp)
541+
res = l_gamma(n + 1, one_${k2}$)
540542

541543
end select
542544
end function l_factorial_${t1[0]}$${k1}$

0 commit comments

Comments
 (0)