@@ -82,36 +82,26 @@ contains
82
82
#:for k1, t1 in INT_KINDS_TYPES
83
83
#:set k2, t2 = REAL_KINDS[-2], REAL_TYPES[-2]
84
84
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
87
86
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)
115
105
116
106
do i = 1, n
117
107
call check(error, log_factorial(x(i)), ans(i), "Integer kind " &
@@ -199,60 +189,48 @@ contains
199
189
200
190
201
191
202
- #:set k2, t2 = REAL_KINDS[-1], REAL_TYPES[-1]
203
192
subroutine test_loggamma_${t1[0]}$${k1}$(error)
204
193
type(error_type), allocatable, intent(out) :: error
205
- integer, parameter :: n = 4
206
194
integer :: i
207
195
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)
208
212
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.)
226
217
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
230
219
231
220
#:elif t1[0] == "c"
232
221
233
- ${t1}$, parameter :: x(n ) = [(0.25_${k1}$, 0.25_${k1}$), &
222
+ ${t1}$, parameter :: x(* ) = [(0.25_${k1}$, 0.25_${k1}$), &
234
223
(0.5_${k1}$, -0.5_${k1}$), &
235
224
(1.0_${k1}$, 1.0_${k1}$), &
236
225
(-1.254e1_${k1}$, -9.87_${k1}$)]
237
226
238
- ${t1}$, parameter :: ans(n ) = &
227
+ ${t1}$, parameter :: ans(* ) = &
239
228
[(0.90447450949333889_${k1}$, -0.83887024394321282_${k1}$),&
240
229
(0.11238724280962311_${k1}$, 0.75072920212205074_${k1}$), &
241
230
(-0.65092319930185634_${k1}$, -0.30164032046753320_${k1}$),&
242
231
(-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)
256
234
257
235
do i = 1, n
258
236
0 commit comments