JuliaStats / Statistics.jl

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

Statistcs.cov has type stability issues #155

Closed joa-quim closed 9 months ago

joa-quim commented 10 months ago

At least that's how I interpret the JET report

using JET
using Statistics

@report_opt cov(rand(10,3))
═════ 32 possible errors found ═════
┌ cov(X::Matrix{Float64}) @ Statistics C:\workdir\usr\share\julia\stdlib\v1.9\Statistics\src\Statistics.jl:584
│┌ cov(X::Matrix{Float64}; dims::Int64, corrected::Bool) @ Statistics C:\workdir\usr\share\julia\stdlib\v1.9\Statistics\src\Statistics.jl:584
││┌ kwcall(::NamedTuple{(:corrected,), Tuple{Bool}}, ::typeof(Statistics.covm), x::Matrix{Float64}, xmean::Matrix{Float64}, vardim::Int64) @ Statistics C:\workdir\usr\share\julia\stdlib\v1.9\Statistics\src\Statistics.jl:561
│││┌ covm(x::Matrix{Float64}, xmean::Matrix{Float64}, vardim::Int64; corrected::Bool) @ Statistics C:\workdir\usr\share\julia\stdlib\v1.9\Statistics\src\Statistics.jl:561
...

With 1.10b3

@report_opt cov(rand(10,3))
═════ 190 possible errors found ═════
┌ cov(X::Matrix{Float64}) @ Statistics C:\programs\Julia-1.10\share\julia\stdlib\v1.10\Statistics\src\Statistics.jl:594
│┌ cov(X::Matrix{Float64}; dims::Int64, corrected::Bool) @ Statistics C:\programs\Julia-1.10\share\julia\stdlib\v1.10\Statistics\src\Statistics.jl:594
││┌ kwcall(::@NamedTuple{corrected::Bool}, ::typeof(Statistics.covm), x::Matrix{Float64}, xmean::Matrix{Float64}, vardim::Int64) @ Statistics C:\programs\Julia-1.10\share\julia\stdlib\v1.10\Statistics\src\Statistics.jl:571
│││┌ covm(x::Matrix{Float64}, xmean::Matrix{Fl
nalimilan commented 9 months ago

I'm not familiar with @report_opt, but looking at the output it seems it reports instabilities which are in functions not living in Statistics.jl, and probably not problematic (e.g. error printing). Please reopen if you have evidence that this creates problems.