From 693630a66c184a4903bfe04196234da461c3d5ea Mon Sep 17 00:00:00 2001 From: David Widmann Date: Thu, 23 Oct 2025 12:26:00 +0200 Subject: [PATCH] Use `Rmath` instead of private `StatsFuns.RFunctions` submodule --- Project.toml | 6 ++++-- src/Distributions.jl | 1 + src/common.jl | 2 +- src/univariate/continuous/noncentralbeta.jl | 2 +- src/univariate/continuous/noncentralchisq.jl | 4 ++-- src/univariate/continuous/noncentralf.jl | 2 +- src/univariate/discrete/hypergeometric.jl | 5 ++--- 7 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Project.toml b/Project.toml index 643ea0f47e..48398efe08 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Distributions" uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" authors = ["JuliaStats"] -version = "0.25.122" +version = "0.25.123" [deps] AliasTables = "66dad0bd-aa9a-41b7-9441-69ab47430ed8" @@ -13,6 +13,7 @@ PDMats = "90014a1f-27ba-587c-ab20-58faa44d9150" Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7" QuadGK = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +Rmath = "79098fc4-a85e-5d69-aa6a-4863f24498fa" SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" StatsAPI = "82ae8749-77ed-4fe6-ae5f-f523153014b0" @@ -48,6 +49,7 @@ PDMats = "0.11.35" Printf = "<0.0.1, 1" QuadGK = "2" Random = "<0.0.1, 1" +Rmath = "0.9" SparseArrays = "<0.0.1, 1" SpecialFunctions = "1.2, 2" StableRNGs = "1" @@ -55,7 +57,7 @@ StaticArrays = "1" Statistics = "1" StatsAPI = "1.6" StatsBase = "0.32, 0.33, 0.34" -StatsFuns = "0.9.15, 1" +StatsFuns = "1.5.2" Test = "<0.0.1, 1" julia = "1.10" diff --git a/src/Distributions.jl b/src/Distributions.jl index fcf6994347..938f45f16c 100644 --- a/src/Distributions.jl +++ b/src/Distributions.jl @@ -28,6 +28,7 @@ using SpecialFunctions using Base.MathConstants: eulergamma import AliasTables +import Rmath export # re-export Statistics diff --git a/src/common.jl b/src/common.jl index 4219061001..c1c068685c 100644 --- a/src/common.jl +++ b/src/common.jl @@ -502,7 +502,7 @@ Get the probability of failure. """ failprob(d::DiscreteUnivariateDistribution) -# Temporary fix to handle RFunctions dependencies +# Temporary fix to handle Rmath dependencies """ @rand_rdist(::Distribution) diff --git a/src/univariate/continuous/noncentralbeta.jl b/src/univariate/continuous/noncentralbeta.jl index 222963e472..81cc1718f0 100644 --- a/src/univariate/continuous/noncentralbeta.jl +++ b/src/univariate/continuous/noncentralbeta.jl @@ -39,7 +39,7 @@ partype(::NoncentralBeta{T}) where {T} = T @_delegate_statsfuns NoncentralBeta nbeta α β λ -# TODO: remove RFunctions dependency once NoncentralChisq has its removed +# TODO: remove Rmath dependency once NoncentralChisq has its removed @rand_rdist(NoncentralBeta) function rand(d::NoncentralBeta) diff --git a/src/univariate/continuous/noncentralchisq.jl b/src/univariate/continuous/noncentralchisq.jl index 24a7558b4a..5cdd04a8d8 100644 --- a/src/univariate/continuous/noncentralchisq.jl +++ b/src/univariate/continuous/noncentralchisq.jl @@ -79,6 +79,6 @@ end @_delegate_statsfuns NoncentralChisq nchisq ν λ -# TODO: remove RFunctions dependency +# TODO: remove Rmath dependency @rand_rdist(NoncentralChisq) -rand(d::NoncentralChisq) = StatsFuns.RFunctions.nchisqrand(d.ν, d.λ) +rand(d::NoncentralChisq) = Rmath.rnchisq(d.ν, d.λ) diff --git a/src/univariate/continuous/noncentralf.jl b/src/univariate/continuous/noncentralf.jl index 9a493f8d4e..f8e61b06fd 100644 --- a/src/univariate/continuous/noncentralf.jl +++ b/src/univariate/continuous/noncentralf.jl @@ -56,7 +56,7 @@ function rand(rng::AbstractRNG, d::NoncentralF) r1 / r2 end -# TODO: remove RFunctions dependency once NoncentralChisq has its removed +# TODO: remove Rmath dependency once NoncentralChisq has its removed @rand_rdist(NoncentralF) function rand(d::NoncentralF) r1 = rand(NoncentralChisq(d.ν1,d.λ)) / d.ν1 diff --git a/src/univariate/discrete/hypergeometric.jl b/src/univariate/discrete/hypergeometric.jl index a13127f2f6..0f37bcc7af 100644 --- a/src/univariate/discrete/hypergeometric.jl +++ b/src/univariate/discrete/hypergeometric.jl @@ -84,11 +84,10 @@ entropy(d::Hypergeometric) = entropy(map(Base.Fix1(pdf, d), support(d))) ## sampling -# TODO: remove RFunctions dependency. Implement: +# TODO: remove Rmath dependency. Implement: # V. Kachitvichyanukul & B. Schmeiser # "Computer generation of hypergeometric random variates" # Journal of Statistical Computation and Simulation, 22(2):127-145 # doi:10.1080/00949658508810839 @rand_rdist(Hypergeometric) -rand(d::Hypergeometric) = - convert(Int, StatsFuns.RFunctions.hyperrand(d.ns, d.nf, d.n)) +rand(d::Hypergeometric) = convert(Int, Rmath.rhyper(d.ns, d.nf, d.n))