Skip to content

Commit 8660485

Browse files
authored
Merge pull request #730 from banana-bred/master
PR related to #729, gamma function of pure imaginary returns correct value
2 parents df1e2f0 + a896ba5 commit 8660485

File tree

2 files changed

+22
-18
lines changed

2 files changed

+22
-18
lines changed

src/stdlib_specialfunctions_gamma.fypp

+4-4
Original file line numberDiff line numberDiff line change
@@ -298,14 +298,14 @@ contains
298298

299299
end if
300300

301-
if(z % re > zero_k1) then
301+
if(z % re < zero_k1) then
302302

303-
y = z - one
303+
x = cmplx(abs(z % re), - z % im, kind = ${k1}$)
304+
y = x - one
304305

305306
else
306307

307-
x = cmplx(abs(z % re), - z % im, kind = ${k1}$)
308-
y = x - one
308+
y = z - one
309309

310310
end if
311311

test/specialfunctions/test_specialfunctions_gamma.fypp

+18-14
Original file line numberDiff line numberDiff line change
@@ -96,21 +96,21 @@ contains
9696
4.78749174, 3.63739376e2]
9797

9898
#:elif k1 == "int16"
99-
99+
100100
${t1}$, parameter :: x(n) = [0_${k1}$, 1_${k1}$, 2_${k1}$, 4_${k1}$, &
101101
7_${k1}$, 500_${k1}$]
102102
real(sp), parameter :: ans(n) = [0.0, 0.0, 0.693147180, 3.17805383, &
103103
8.52516136, 2.61133046e3]
104104

105105
#:elif k1 == "int32"
106-
106+
107107
${t1}$, parameter :: x(n) = [0_${k1}$, 1_${k1}$, 2_${k1}$, 4_${k1}$, &
108108
12_${k1}$, 7000_${k1}$]
109109
real(sp), parameter :: ans(n) = [0.0, 0.0, 0.693147180, 3.17805383, &
110110
1.99872145e1, 5.49810038e4]
111111

112112
#:elif k1 == "int64"
113-
113+
114114
${t1}$, parameter :: x(n) = [0_${k1}$, 1_${k1}$, 2_${k1}$, 4_${k1}$, &
115115
20_${k1}$, 90000_${k1}$]
116116
real(sp), parameter :: ans(n) = [0.0, 0.0, 0.693147180, 3.17805383, &
@@ -134,42 +134,46 @@ contains
134134

135135
subroutine test_gamma_${t1[0]}$${k1}$(error)
136136
type(error_type), allocatable, intent(out) :: error
137-
integer, parameter :: n = 4
137+
integer, parameter :: n = 5
138138
integer :: i
139139

140140
#:if k1 == "int8"
141141

142-
${t1}$, parameter :: x(n) = [1_${k1}$, 2_${k1}$, 4_${k1}$, 6_${k1}$]
143-
${t1}$, parameter :: ans(n) = [1_${k1}$, 1_${k1}$, 6_${k1}$, 120_${k1}$]
142+
${t1}$, parameter :: x(n) = [1_${k1}$, 2_${k1}$, 4_${k1}$, 5_${k1}$, 6_${k1}$]
143+
${t1}$, parameter :: ans(n) = [1_${k1}$, 1_${k1}$, 6_${k1}$, 24_${k1}$, 120_${k1}$]
144144

145145
#:elif k1 == "int16"
146146

147-
${t1}$, parameter :: x(n) = [1_${k1}$, 2_${k1}$, 4_${k1}$, 8_${k1}$]
148-
${t1}$, parameter :: ans(n) = [1_${k1}$, 1_${k1}$, 6_${k1}$, 5040_${k1}$]
147+
${t1}$, parameter :: x(n) = [1_${k1}$, 2_${k1}$, 4_${k1}$, 5_${k1}$, 8_${k1}$]
148+
${t1}$, parameter :: ans(n) = [1_${k1}$, 1_${k1}$, 6_${k1}$, 24_${k1}$, 5040_${k1}$]
149149

150150
#:elif k1 == "int32"
151151

152-
${t1}$, parameter :: x(n) = [1_${k1}$, 2_${k1}$, 4_${k1}$, 13_${k1}$]
153-
${t1}$, parameter :: ans(n) = [1_${k1}$, 1_${k1}$, 6_${k1}$, &
152+
${t1}$, parameter :: x(n) = [1_${k1}$, 2_${k1}$, 4_${k1}$, 8_${k1}$, 13_${k1}$]
153+
${t1}$, parameter :: ans(n) = [1_${k1}$, 1_${k1}$, 6_${k1}$, 5040_${k1}$, &
154154
479001600_${k1}$]
155155

156156
#:elif k1 == "int64"
157157

158-
${t1}$, parameter :: x(n) = [1_${k1}$, 2_${k1}$, 4_${k1}$, 21_${k1}$]
159-
${t1}$, parameter :: ans(n) = [1_${k1}$, 1_${k1}$, 6_${k1}$, &
158+
${t1}$, parameter :: x(n) = [1_${k1}$, 2_${k1}$, 4_${k1}$, 13_${k1}$, 21_${k1}$]
159+
${t1}$, parameter :: ans(n) = [1_${k1}$, 1_${k1}$, 6_${k1}$, 479001600_${k1}$, &
160160
2432902008176640000_${k1}$]
161161
#:elif t1[0] == "c"
162162

163163
${t1}$, parameter :: x(n) = [(0.25_${k1}$, 0.25_${k1}$), &
164164
(0.5_${k1}$, -0.5_${k1}$), &
165165
(1.0_${k1}$, 1.0_${k1}$), &
166-
(-1.254e1_${k1}$, -9.87_${k1}$)]
166+
(-1.254e1_${k1}$, -9.87_${k1}$), &
167+
(0.0_${k1}$, 1.0_${k1}$) &
168+
]
167169

168170
${t1}$, parameter :: ans(n) = &
169171
[(1.6511332803889208_${k1}$, -1.8378758749947890_${k1}$), &
170172
(0.81816399954174739_${k1}$, 0.76331382871398262_${k1}$),&
171173
(0.49801566811835604_${k1}$, -0.15494982830181069_${k1}$),&
172-
(-2.18767396709283064e-21_${k1}$, 2.77577940846953455e-21_${k1}$)]
174+
(-2.18767396709283064e-21_${k1}$, 2.77577940846953455e-21_${k1}$),&
175+
(-0.15494982830181067_${k1}$, -0.49801566811835607_${k1}$) &
176+
]
173177
#:endif
174178

175179

0 commit comments

Comments
 (0)