Skip to content

Commit 079c323

Browse files
committed
cleanup tests
1 parent e23c1e5 commit 079c323

File tree

2 files changed

+46
-69
lines changed

2 files changed

+46
-69
lines changed

src/stdlib_specialfunctions_gamma.fypp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -326,13 +326,12 @@ contains
326326
#:endfor
327327

328328
#:for k1, t1 in INT_KINDS_TYPES
329-
#:set k2, t2 = REAL_KINDS[-1], REAL_TYPES[-1]
330329
impure elemental function l_gamma_${t1[0]}$${k1}$(z) result(res)
331330
!
332331
! Logarithm of gamma function for integer input
333332
!
334333
${t1}$, intent(in) :: z
335-
${t2}$ :: res
334+
real(dp) :: res
336335
${t1}$ :: i
337336
${t1}$, parameter :: zero = 0_${k1}$, one = 1_${k1}$, two = 2_${k1}$
338337

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

352351
do i = one, z - one
353352

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

356355
end do
357356

test/specialfunctions/test_specialfunctions_gamma.fypp

Lines changed: 44 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -82,36 +82,26 @@ contains
8282
#:for k1, t1 in INT_KINDS_TYPES
8383
#:set k2, t2 = REAL_KINDS[-2], REAL_TYPES[-2]
8484
subroutine test_logfact_${t1[0]}$${k1}$(error)
85-
type(error_type), allocatable, intent(out) :: error
86-
integer, parameter :: n = 6
85+
type(error_type), allocatable, intent(out) :: error
8786
integer :: i
88-
89-
#:if k1 == "int8"
90-
91-
${t1}$, parameter :: x(n) = [0_${k1}$, 1_${k1}$, 2_${k1}$, 4_${k1}$, &
92-
5_${k1}$, 100_${k1}$]
93-
${t2}$, parameter :: ans(n) = [0.0_${k2}$, 0.0_${k2}$, 0.69314718055994_${k2}$, 3.17805383034794_${k2}$, &
94-
4.78749174278204_${k2}$, 3.637393755555e2_${k2}$]
95-
96-
#:elif k1 == "int16"
97-
98-
${t1}$, parameter :: x(n) = [0_${k1}$, 1_${k1}$, 2_${k1}$, 4_${k1}$, &
99-
7_${k1}$, 500_${k1}$]
100-
${t2}$, parameter :: ans(n) = [0.0_${k2}$, 0.0_${k2}$, 0.69314718055994_${k2}$, 3.17805383034794_${k2}$, &
101-
8.52516136106541_${k2}$, 2.611330458460e3_${k2}$]
102-
#:elif k1 == "int32"
103-
104-
${t1}$, parameter :: x(n) = [0_${k1}$, 1_${k1}$, 2_${k1}$, 4_${k1}$, &
105-
12_${k1}$, 7000_${k1}$]
106-
${t2}$, parameter :: ans(n) = [0.0_${k2}$, 0.0_${k2}$, 0.69314718055994_${k2}$, 3.17805383034794_${k2}$, &
107-
1.998721449566e1_${k2}$, 5.498100377941e4_${k2}$]
108-
#:elif k1 == "int64"
109-
110-
${t1}$, parameter :: x(n) = [0_${k1}$, 1_${k1}$, 2_${k1}$, 4_${k1}$, &
111-
20_${k1}$, 90000_${k1}$]
112-
${t2}$, parameter :: ans(n) = [0.0_${k2}$, 0.0_${k2}$, 0.69314718055994_${k2}$, 3.17805383034794_${k2}$, &
113-
4.233561646075e1_${k2}$, 9.366874681600e5_${k2}$]
114-
#:endif
87+
88+
integer, parameter :: xtest(*) = [0,1,2,4,5,7,12,20,100,500,7000,90000]
89+
${t2}$, parameter :: res(*) = [0.0_${k2}$, &
90+
0.0_${k2}$, &
91+
0.69314718055994_${k2}$, &
92+
3.17805383034794_${k2}$, &
93+
4.78749174278204_${k2}$, &
94+
8.52516136106541_${k2}$, &
95+
1.998721449566e1_${k2}$, &
96+
4.233561646075e1_${k2}$, &
97+
3.637393755555e2_${k2}$, &
98+
2.611330458460e3_${k2}$, &
99+
5.498100377941e4_${k2}$, &
100+
9.366874681600e5_${k2}$]
101+
102+
${t1}$, parameter :: x(*) = pack(xtest, xtest<huge(0_${k1}$))
103+
${t2}$, parameter :: ans(*) = pack(res , xtest<huge(0_${k1}$))
104+
integer, parameter :: n = size(x)
115105

116106
do i = 1, n
117107
call check(error, log_factorial(x(i)), ans(i), "Integer kind " &
@@ -199,60 +189,48 @@ contains
199189

200190

201191

202-
#:set k2, t2 = REAL_KINDS[-1], REAL_TYPES[-1]
203192
subroutine test_loggamma_${t1[0]}$${k1}$(error)
204193
type(error_type), allocatable, intent(out) :: error
205-
integer, parameter :: n = 4
206194
integer :: i
207195
type(state_type) :: err
196+
197+
#:if t1[0] == "i"
198+
199+
integer, parameter :: xtest(*) = [1,2,10,47,111,541,2021,42031]
200+
${t2}$, parameter :: res(*) = [0.0_${k2}$, &
201+
0.0_${k2}$, &
202+
1.28018274e1_dp, &
203+
1.32952575e2_dp, &
204+
4.10322777e2_dp, &
205+
2.86151221e3_dp, &
206+
1.33586470e4_dp, &
207+
4.05433461e5_dp]
208+
209+
integer, parameter :: x(*) = pack(xtest,xtest<huge(0_${k1}$))
210+
${t2}$, parameter :: ans(*) = pack(res,xtest<huge(0_${k1}$))
211+
integer, parameter :: n = size(x)
208212

209-
#:if k1 == "int8"
210-
211-
${t1}$, parameter :: x(n) = [1_${k1}$, 2_${k1}$, 10_${k1}$, 47_${k1}$]
212-
${t2}$, parameter :: ans(n) = [0.0_${k2}$, 0.0_${k2}$, 1.28018274e1_${k2}$, 1.32952575e2_${k2}$]
213-
214-
#:elif k1 == "int16"
215-
216-
${t1}$, parameter :: x(n) = [1_${k1}$, 2_${k1}$, 111_${k1}$, 541_${k1}$]
217-
${t2}$, parameter :: ans(n) = [0.0_${k2}$, 0.0_${k2}$, 4.10322777e2_${k2}$, 2.86151221e3_${k2}$]
218-
219-
#:elif k1 == "int32"
220-
221-
${t1}$, parameter :: x(n) = [1_${k1}$, 2_${k1}$, 2021_${k1}$, &
222-
42031_${k1}$]
223-
${t2}$, parameter :: ans(n) = [0.0_${k2}$, 0.0_${k2}$, 1.33586470e4_${k2}$, 4.05433461e5_${k2}$]
224-
225-
#:elif k1 == "int64"
213+
do i = 1, n
214+
print *, 'log ',log_gamma(x(i)),' ans=',ans(i),' tol=',tol_dp
215+
call check(error, log_gamma(x(i)), ans(i), "Integer kind ${k1}$ " &
216+
//"failed", thr = tol_dp, rel = .true.)
226217

227-
${t1}$, parameter :: x(n) = [1_${k1}$, 2_${k1}$, 2021_${k1}$, &
228-
42031_${k1}$]
229-
${t2}$, parameter :: ans(n) = [0.0_${k2}$, 0.0_${k2}$, 1.33586470e4_${k2}$, 4.05433461e5_${k2}$]
218+
end do
230219

231220
#:elif t1[0] == "c"
232221

233-
${t1}$, parameter :: x(n) = [(0.25_${k1}$, 0.25_${k1}$), &
222+
${t1}$, parameter :: x(*) = [(0.25_${k1}$, 0.25_${k1}$), &
234223
(0.5_${k1}$, -0.5_${k1}$), &
235224
(1.0_${k1}$, 1.0_${k1}$), &
236225
(-1.254e1_${k1}$, -9.87_${k1}$)]
237226

238-
${t1}$, parameter :: ans(n) = &
227+
${t1}$, parameter :: ans(*) = &
239228
[(0.90447450949333889_${k1}$, -0.83887024394321282_${k1}$),&
240229
(0.11238724280962311_${k1}$, 0.75072920212205074_${k1}$), &
241230
(-0.65092319930185634_${k1}$, -0.30164032046753320_${k1}$),&
242231
(-4.7091788015763380e1_${k1}$, 1.4804627819235690e1_${k1}$)]
243-
#:endif
244-
245-
246-
#:if t1[0] == "i"
247-
248-
do i = 1, n
249-
250-
call check(error, log_gamma(x(i)), ans(i), "Integer kind ${k1}$ " &
251-
//"failed", thr = tol_${k2}$, rel = .true.)
252-
253-
end do
254-
255-
#:elif t1[0] == "c"
232+
233+
integer, parameter :: n = size(x)
256234

257235
do i = 1, n
258236

0 commit comments

Comments
 (0)