@@ -620,12 +620,12 @@ gamma(x::Number) = gamma(float(x))
620
620
function logabsgamma (x:: Float64 )
621
621
signp = Ref {Int32} ()
622
622
y = ccall ((:lgamma_r ,libm), Float64, (Float64, Ptr{Int32}), x, signp)
623
- return y, signp[]
623
+ return y, Int ( signp[])
624
624
end
625
625
function logabsgamma (x:: Float32 )
626
626
signp = Ref {Int32} ()
627
627
y = ccall ((:lgammaf_r ,libm), Float32, (Float32, Ptr{Int32}), x, signp)
628
- return y, signp[]
628
+ return y, Int ( signp[])
629
629
end
630
630
logabsgamma (x:: Real ) = logabsgamma (float (x))
631
631
logabsgamma (x:: Float16 ) = Float16 .(logabsgamma (Float32 (x)))
@@ -668,7 +668,7 @@ loggamma(x::Number) = loggamma(float(x))
668
668
669
669
function loggamma (x:: Real )
670
670
(y, s) = logabsgamma (x)
671
- s < 0.0 && throw (DomainError (x, " `gamma(x)` must be non-negative" ))
671
+ s < 0 && throw (DomainError (x, " `gamma(x)` must be non-negative" ))
672
672
return y
673
673
end
674
674
@@ -808,7 +808,8 @@ function logabsbeta(a::T, b::T) where T<:Real
808
808
if a <= 0 && isinteger (a)
809
809
if a + b <= 0 && isinteger (b)
810
810
r = logbeta (1 - a - b, b)
811
- sgn = iseven (Int (b)) ? 1 : - 1
811
+ # in julia ≥ 1.7, iseven doesn't require Int (julia#38976)
812
+ sgn = iseven (@static VERSION ≥ v " 1.7" ? b : Int (b)) ? 1 : - 1
812
813
return r, sgn
813
814
else
814
815
return - log (zero (a)), 1
@@ -825,7 +826,7 @@ function logabsbeta(a::T, b::T) where T<:Real
825
826
ya, sa = logabsgamma (a)
826
827
yb, sb = logabsgamma (b)
827
828
yab, sab = logabsgamma (a + b)
828
- (ya + yb - yab), (sa* sb* sab)
829
+ (ya + yb - yab), Int (sa* sb* sab)
829
830
end
830
831
logabsbeta (a:: Real , b:: Real ) = logabsbeta (promote (a, b)... )
831
832
@@ -838,12 +839,12 @@ function logabsgamma(x::BigFloat)
838
839
z = BigFloat ()
839
840
lgamma_signp = Ref {Cint} ()
840
841
ccall ((:mpfr_lgamma ,:libmpfr ), Cint, (Ref{BigFloat}, Ref{Cint}, Ref{BigFloat}, Int32), z, lgamma_signp, x, ROUNDING_MODE[])
841
- return z, lgamma_signp[]
842
+ return z, Int ( lgamma_signp[])
842
843
end
843
844
844
845
function loggamma (x:: BigFloat )
845
846
(y, s) = logabsgamma (x)
846
- s < 0.0 && throw (DomainError (x, " `gamma(x)` must be non-negative" ))
847
+ s < 0 && throw (DomainError (x, " `gamma(x)` must be non-negative" ))
847
848
return y
848
849
end
849
850
if Base. MPFR. version () >= v " 4.0.0"
0 commit comments