JuliaStats / Statistics.jl

The Statistics stdlib that ships with Julia.
https://juliastats.org/Statistics.jl/dev/
Other
71 stars 40 forks source link

OverflowError with quantile with Rational probabilities #136

Open sethaxen opened 1 year ago

sethaxen commented 1 year ago

If a user provides Rational probabilities to quantile, then if the input array exceeds a certain length, an OverflowError is raised.

julia> using Statistics

julia> quantile(1.0:10000.0, 1//10)
1000.9

julia> quantile(1.0:20000.0, 1//10)
ERROR: OverflowError: 2000 * 9007199254740992 overflowed for type Int64
Stacktrace:
 [1] throw_overflowerr_binaryop(op::Symbol, x::Int64, y::Int64)
   @ Base.Checked ./checked.jl:163
 [2] checked_mul
   @ ./checked.jl:297 [inlined]
 [3] +
   @ ./rational.jl:304 [inlined]
 [4] #_quantile#57
   @ ~/.julia/juliaup/julia-1.9.0-beta2+0.x64.linux.gnu/share/julia/stdlib/v1.9/Statistics/src/Statistics.jl:997 [inlined]
 [5] quantile!(v::Vector{Float64}, p::Rational{Int64}; sorted::Bool, alpha::Float64, beta::Float64)
   @ Statistics ~/.julia/juliaup/julia-1.9.0-beta2+0.x64.linux.gnu/share/julia/stdlib/v1.9/Statistics/src/Statistics.jl:962
 [6] #quantile#59
   @ ~/.julia/juliaup/julia-1.9.0-beta2+0.x64.linux.gnu/share/julia/stdlib/v1.9/Statistics/src/Statistics.jl:1073 [inlined]
 [7] quantile(v::StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, p::Rational{Int64})
   @ Statistics ~/.julia/juliaup/julia-1.9.0-beta2+0.x64.linux.gnu/share/julia/stdlib/v1.9/Statistics/src/Statistics.jl:1073
 [8] top-level scope
   @ REPL[46]:1

julia> versioninfo()
Julia Version 1.9.0-beta2
Commit 7daffeecb8c (2022-12-29 07:45 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 8 × 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-14.0.6 (ORCJIT, tigerlake)
  Threads: 8 on 8 virtual cores