Skip to content

Commit e23c1e5

Browse files
committed
generalize log_gamma, log_factorial tests
1 parent da2bbac commit e23c1e5

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

test/specialfunctions/test_specialfunctions_gamma.fypp

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ contains
8080

8181

8282
#:for k1, t1 in INT_KINDS_TYPES
83-
83+
#:set k2, t2 = REAL_KINDS[-2], REAL_TYPES[-2]
8484
subroutine test_logfact_${t1[0]}$${k1}$(error)
8585
type(error_type), allocatable, intent(out) :: error
8686
integer, parameter :: n = 6
@@ -90,32 +90,32 @@ contains
9090

9191
${t1}$, parameter :: x(n) = [0_${k1}$, 1_${k1}$, 2_${k1}$, 4_${k1}$, &
9292
5_${k1}$, 100_${k1}$]
93-
real(dp), parameter :: ans(n) = [0.0_dp, 0.0_dp, 0.69314718055994_dp, 3.17805383034794_dp, &
94-
4.78749174278204_dp, 3.637393755555e2_dp]
93+
${t2}$, parameter :: ans(n) = [0.0_${k2}$, 0.0_${k2}$, 0.69314718055994_${k2}$, 3.17805383034794_${k2}$, &
94+
4.78749174278204_${k2}$, 3.637393755555e2_${k2}$]
9595

9696
#:elif k1 == "int16"
9797

9898
${t1}$, parameter :: x(n) = [0_${k1}$, 1_${k1}$, 2_${k1}$, 4_${k1}$, &
9999
7_${k1}$, 500_${k1}$]
100-
real(dp), parameter :: ans(n) = [0.0_dp, 0.0_dp, 0.69314718055994_dp, 3.17805383034794_dp, &
101-
8.52516136106541_dp, 2.611330458460e3_dp]
100+
${t2}$, parameter :: ans(n) = [0.0_${k2}$, 0.0_${k2}$, 0.69314718055994_${k2}$, 3.17805383034794_${k2}$, &
101+
8.52516136106541_${k2}$, 2.611330458460e3_${k2}$]
102102
#:elif k1 == "int32"
103103

104104
${t1}$, parameter :: x(n) = [0_${k1}$, 1_${k1}$, 2_${k1}$, 4_${k1}$, &
105105
12_${k1}$, 7000_${k1}$]
106-
real(dp), parameter :: ans(n) = [0.0_dp, 0.0_dp, 0.69314718055994_dp, 3.17805383034794_dp, &
107-
1.998721449566e1_dp, 5.498100377941e4_dp]
106+
${t2}$, parameter :: ans(n) = [0.0_${k2}$, 0.0_${k2}$, 0.69314718055994_${k2}$, 3.17805383034794_${k2}$, &
107+
1.998721449566e1_${k2}$, 5.498100377941e4_${k2}$]
108108
#:elif k1 == "int64"
109109

110110
${t1}$, parameter :: x(n) = [0_${k1}$, 1_${k1}$, 2_${k1}$, 4_${k1}$, &
111111
20_${k1}$, 90000_${k1}$]
112-
real(dp), parameter :: ans(n) = [0.0_dp, 0.0_dp, 0.69314718055994_dp, 3.17805383034794_dp, &
113-
4.233561646075e1_dp, 9.366874681600e5_dp]
112+
${t2}$, parameter :: ans(n) = [0.0_${k2}$, 0.0_${k2}$, 0.69314718055994_${k2}$, 3.17805383034794_${k2}$, &
113+
4.233561646075e1_${k2}$, 9.366874681600e5_${k2}$]
114114
#:endif
115115

116116
do i = 1, n
117117
call check(error, log_factorial(x(i)), ans(i), "Integer kind " &
118-
//"${k1}$ failed", thr = tol_dp, rel = .true.)
118+
//"${k1}$ failed", thr = tol_${k2}$, rel = .true.)
119119

120120
end do
121121
end subroutine test_logfact_${t1[0]}$${k1}$
@@ -199,6 +199,7 @@ contains
199199

200200

201201

202+
#:set k2, t2 = REAL_KINDS[-1], REAL_TYPES[-1]
202203
subroutine test_loggamma_${t1[0]}$${k1}$(error)
203204
type(error_type), allocatable, intent(out) :: error
204205
integer, parameter :: n = 4
@@ -208,24 +209,24 @@ contains
208209
#:if k1 == "int8"
209210

210211
${t1}$, parameter :: x(n) = [1_${k1}$, 2_${k1}$, 10_${k1}$, 47_${k1}$]
211-
real(sp), parameter :: ans(n) = [0.0, 0.0, 1.28018274e1, 1.32952575e2]
212+
${t2}$, parameter :: ans(n) = [0.0_${k2}$, 0.0_${k2}$, 1.28018274e1_${k2}$, 1.32952575e2_${k2}$]
212213

213214
#:elif k1 == "int16"
214215

215216
${t1}$, parameter :: x(n) = [1_${k1}$, 2_${k1}$, 111_${k1}$, 541_${k1}$]
216-
real(sp), parameter :: ans(n) = [0.0, 0.0, 4.10322777e2, 2.86151221e3]
217+
${t2}$, parameter :: ans(n) = [0.0_${k2}$, 0.0_${k2}$, 4.10322777e2_${k2}$, 2.86151221e3_${k2}$]
217218

218219
#:elif k1 == "int32"
219220

220221
${t1}$, parameter :: x(n) = [1_${k1}$, 2_${k1}$, 2021_${k1}$, &
221222
42031_${k1}$]
222-
real(sp), parameter :: ans(n) = [0.0, 0.0, 1.33586470e4, 4.05433461e5]
223+
${t2}$, parameter :: ans(n) = [0.0_${k2}$, 0.0_${k2}$, 1.33586470e4_${k2}$, 4.05433461e5_${k2}$]
223224

224225
#:elif k1 == "int64"
225226

226227
${t1}$, parameter :: x(n) = [1_${k1}$, 2_${k1}$, 2021_${k1}$, &
227228
42031_${k1}$]
228-
real(sp), parameter :: ans(n) = [0.0, 0.0, 1.33586470e4, 4.05433461e5]
229+
${t2}$, parameter :: ans(n) = [0.0_${k2}$, 0.0_${k2}$, 1.33586470e4_${k2}$, 4.05433461e5_${k2}$]
229230

230231
#:elif t1[0] == "c"
231232

@@ -247,7 +248,7 @@ contains
247248
do i = 1, n
248249

249250
call check(error, log_gamma(x(i)), ans(i), "Integer kind ${k1}$ " &
250-
//"failed", thr = tol_sp, rel = .true.)
251+
//"failed", thr = tol_${k2}$, rel = .true.)
251252

252253
end do
253254

0 commit comments

Comments
 (0)