Skip to content

Commit b98961c

Browse files
vtjnashfredrikekre
authored andcommitted
Switch to allocating lgamma_sign on the stack, for better performance (and thread-safety).
1 parent 51860ea commit b98961c

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/gamma.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -720,14 +720,14 @@ function gamma(x::BigFloat)
720720
end
721721

722722
# log of absolute value of gamma function
723-
const lgamma_signp = Ref{Cint}()
724-
function lgamma(x::BigFloat)
723+
function lgamma_r(x::BigFloat)
725724
z = BigFloat()
725+
lgamma_signp = Ref{Cint}()
726726
ccall((:mpfr_lgamma,:libmpfr), Cint, (Ref{BigFloat}, Ref{Cint}, Ref{BigFloat}, Int32), z, lgamma_signp, x, ROUNDING_MODE[])
727-
return z
727+
return z, lgamma_signp[]
728728
end
729729

730-
lgamma_r(x::BigFloat) = (lgamma(x), lgamma_signp[])
730+
lgamma(x::BigFloat) = lgamma_r(x)[1]
731731

732732
if Base.MPFR.version() >= v"4.0.0"
733733
function beta(y::BigFloat, x::BigFloat)

0 commit comments

Comments
 (0)