@@ -620,12 +620,12 @@ gamma(x::Number) = gamma(float(x))
620620function logabsgamma (x:: Float64 )
621621 signp = Ref {Int32} ()
622622 y = ccall ((:lgamma_r ,libm), Float64, (Float64, Ptr{Int32}), x, signp)
623- return y, signp[]
623+ return y, Int ( signp[])
624624end
625625function logabsgamma (x:: Float32 )
626626 signp = Ref {Int32} ()
627627 y = ccall ((:lgammaf_r ,libm), Float32, (Float32, Ptr{Int32}), x, signp)
628- return y, signp[]
628+ return y, Int ( signp[])
629629end
630630logabsgamma (x:: Real ) = logabsgamma (float (x))
631631logabsgamma (x:: Float16 ) = Float16 .(logabsgamma (Float32 (x)))
@@ -668,7 +668,7 @@ loggamma(x::Number) = loggamma(float(x))
668668
669669function loggamma (x:: Real )
670670 (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" ))
672672 return y
673673end
674674
@@ -808,7 +808,8 @@ function logabsbeta(a::T, b::T) where T<:Real
808808 if a <= 0 && isinteger (a)
809809 if a + b <= 0 && isinteger (b)
810810 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
812813 return r, sgn
813814 else
814815 return - log (zero (a)), 1
@@ -825,7 +826,7 @@ function logabsbeta(a::T, b::T) where T<:Real
825826 ya, sa = logabsgamma (a)
826827 yb, sb = logabsgamma (b)
827828 yab, sab = logabsgamma (a + b)
828- (ya + yb - yab), (sa* sb* sab)
829+ (ya + yb - yab), Int (sa* sb* sab)
829830end
830831logabsbeta (a:: Real , b:: Real ) = logabsbeta (promote (a, b)... )
831832
@@ -838,12 +839,12 @@ function logabsgamma(x::BigFloat)
838839 z = BigFloat ()
839840 lgamma_signp = Ref {Cint} ()
840841 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[])
842843end
843844
844845function loggamma (x:: BigFloat )
845846 (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" ))
847848 return y
848849end
849850if Base. MPFR. version () >= v " 4.0.0"
0 commit comments