@@ -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