From 44ebb0059eae739df9726ca3d0e33c55a102b43c Mon Sep 17 00:00:00 2001 From: Github action runner Date: Wed, 26 Nov 2025 11:26:16 -0800 Subject: [PATCH 1/4] Make stats tests numerically more stable --- test/testsuite/statistics.jl | 61 +++++++++++++++++------------------- 1 file changed, 29 insertions(+), 32 deletions(-) diff --git a/test/testsuite/statistics.jl b/test/testsuite/statistics.jl index 5479c77e1..b906a1358 100644 --- a/test/testsuite/statistics.jl +++ b/test/testsuite/statistics.jl @@ -5,57 +5,54 @@ using Statistics if !(ET in [Float16, Float32, Float64]) continue end + range = ET <: Real ? (ET(1):ET(100)) : ET + @testset "std" begin - @test compare(std, AT, rand(ET, 10)) - @test compare(std, AT, rand(ET, 10,1,2)) - @test compare(A->std(A; corrected=true), AT, rand(ET, 10,1,2)) - @test compare(A->std(A; dims=1), AT, rand(ET, 10,1,2)) + @test compare(std, AT, rand(range, 10)) + @test compare(std, AT, rand(range, 10,1,2)) + @test compare(A->std(A; corrected=true), AT, rand(range, 10,1,2)) + @test compare(A->std(A; dims=1), AT, rand(range, 10,1,2)) end @testset "var" begin - @test compare(var, AT, rand(ET, 10)) - @test compare(var, AT, rand(ET, 10,1,2)) - @test compare(A->var(A; corrected=true), AT, rand(ET, 10,1,2)) - @test compare(A->var(A; dims=1), AT, rand(ET, 10,1,2)) - @test compare(A->var(A; dims=[1]), AT, rand(ET, 10,1,2)) - @test compare(A->var(A; dims=(1,)), AT, rand(ET, 10,1,2)) - @test compare(A->var(A; dims=[2,3]), AT, rand(ET, 10,1,2)) - @test compare(A->var(A; dims=(2,3)), AT, rand(ET, 10,1,2)) + @test compare(var, AT, rand(range, 10)) + @test compare(var, AT, rand(range, 10,1,2)) + @test compare(A->var(A; corrected=true), AT, rand(range, 10,1,2)) + @test compare(A->var(A; dims=1), AT, rand(range, 10,1,2)) + @test compare(A->var(A; dims=[1]), AT, rand(range, 10,1,2)) + @test compare(A->var(A; dims=(1,)), AT, rand(range, 10,1,2)) + @test compare(A->var(A; dims=[2,3]), AT, rand(range, 10,1,2)) + @test compare(A->var(A; dims=(2,3)), AT, rand(range, 10,1,2)) end @testset "mean" begin - @test compare(mean, AT, rand(ET, 2, 2)) - @test compare(A->mean(A; dims=2), AT, rand(ET, 2, 2)) - @test compare(A->mean(A; dims=[1,3]), AT, rand(ET, 2, 2, 2)) - @test compare(A->mean(sin, A), AT, rand(ET, 2,2)) - @test compare(A->mean(sin, A; dims=2), AT, rand(ET, 2,2)) - @test compare(A->mean(sin, A; dims=[1,3]), AT, rand(ET, 2,2,2)) + @test compare(mean, AT, rand(range, 2, 2)) + @test compare(A->mean(A; dims=2), AT, rand(range, 2, 2)) + @test compare(A->mean(A; dims=[1,3]), AT, rand(range, 2, 2, 2)) + @test compare(A->mean(sin, A), AT, rand(range, 2,2)) + @test compare(A->mean(sin, A; dims=2), AT, rand(range, 2,2)) + @test compare(A->mean(sin, A; dims=[1,3]), AT, rand(range, 2,2,2)) end end for ET in eltypes - # Doesn't work with ComplexF32 in oneAPI for some reason. - if !(ET in [Float32, Float64, Float16, ComplexF64]) + if !(ET in [Float32, Float64, Float16, ComplexF32, ComplexF64]) continue end + range = ET <: Real ? (ET(1):ET(100)) : ET + @testset "cov" begin s = 100 - @test compare(cov, AT, rand(ET, s)) - @test compare(cov, AT, rand(ET, s, 2)) - @test compare(A->cov(A; dims=2), AT, rand(ET, s, 2)) - if ET <: Real - @test compare(cov, AT, rand(ET(1):ET(100), s)) - end + @test compare(cov, AT, rand(range, s)) + @test compare(cov, AT, rand(range, s, 2)) + @test compare(A->cov(A; dims=2), AT, rand(range, s, 2)) end @testset "cor" begin s = 100 - @test compare(cor, AT, rand(ET, s)) nans=true - @test compare(cor, AT, rand(ET, s, 2)) nans=true - @test compare(A->cor(A; dims=2), AT, rand(ET, s, 2)) nans=true - if ET <: Real - @test compare(cor, AT, rand(ET(1):ET(100), s)) nans=true - end + @test compare(cor, AT, rand(range, s)) nans=true + @test compare(cor, AT, rand(range, s, 2)) nans=true + @test compare(A->cor(A; dims=2), AT, rand(range, s, 2)) nans=true end end end From ab2a555e14e1fdcccf3924818d822025a93c2be8 Mon Sep 17 00:00:00 2001 From: Github action runner Date: Wed, 26 Nov 2025 11:36:37 -0800 Subject: [PATCH 2/4] oneAPI ComplexF32 still not fixed :-( --- test/testsuite/statistics.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/testsuite/statistics.jl b/test/testsuite/statistics.jl index b906a1358..7e44c64fc 100644 --- a/test/testsuite/statistics.jl +++ b/test/testsuite/statistics.jl @@ -36,7 +36,8 @@ using Statistics end for ET in eltypes - if !(ET in [Float32, Float64, Float16, ComplexF32, ComplexF64]) + # Doesn't work with ComplexF32 in oneAPI for some reason. + if !(ET in [Float32, Float64, Float16, ComplexF64]) continue end range = ET <: Real ? (ET(1):ET(100)) : ET From c9b19c911e6a797e3fd48c2d81f21ecf4c0d76e6 Mon Sep 17 00:00:00 2001 From: Github action runner Date: Wed, 26 Nov 2025 13:57:56 -0800 Subject: [PATCH 3/4] Runiced --- test/testsuite/statistics.jl | 38 ++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/test/testsuite/statistics.jl b/test/testsuite/statistics.jl index 7e44c64fc..e5332b56b 100644 --- a/test/testsuite/statistics.jl +++ b/test/testsuite/statistics.jl @@ -9,29 +9,29 @@ using Statistics @testset "std" begin @test compare(std, AT, rand(range, 10)) - @test compare(std, AT, rand(range, 10,1,2)) - @test compare(A->std(A; corrected=true), AT, rand(range, 10,1,2)) - @test compare(A->std(A; dims=1), AT, rand(range, 10,1,2)) + @test compare(std, AT, rand(range, 10, 1, 2)) + @test compare(A -> std(A; corrected = true), AT, rand(range, 10, 1, 2)) + @test compare(A -> std(A; dims = 1), AT, rand(range, 10, 1, 2)) end @testset "var" begin @test compare(var, AT, rand(range, 10)) - @test compare(var, AT, rand(range, 10,1,2)) - @test compare(A->var(A; corrected=true), AT, rand(range, 10,1,2)) - @test compare(A->var(A; dims=1), AT, rand(range, 10,1,2)) - @test compare(A->var(A; dims=[1]), AT, rand(range, 10,1,2)) - @test compare(A->var(A; dims=(1,)), AT, rand(range, 10,1,2)) - @test compare(A->var(A; dims=[2,3]), AT, rand(range, 10,1,2)) - @test compare(A->var(A; dims=(2,3)), AT, rand(range, 10,1,2)) + @test compare(var, AT, rand(range, 10, 1, 2)) + @test compare(A -> var(A; corrected = true), AT, rand(range, 10, 1, 2)) + @test compare(A -> var(A; dims = 1), AT, rand(range, 10, 1, 2)) + @test compare(A -> var(A; dims = [1]), AT, rand(range, 10, 1, 2)) + @test compare(A -> var(A; dims = (1,)), AT, rand(range, 10, 1, 2)) + @test compare(A -> var(A; dims = [2, 3]), AT, rand(range, 10, 1, 2)) + @test compare(A -> var(A; dims = (2, 3)), AT, rand(range, 10, 1, 2)) end @testset "mean" begin @test compare(mean, AT, rand(range, 2, 2)) - @test compare(A->mean(A; dims=2), AT, rand(range, 2, 2)) - @test compare(A->mean(A; dims=[1,3]), AT, rand(range, 2, 2, 2)) - @test compare(A->mean(sin, A), AT, rand(range, 2,2)) - @test compare(A->mean(sin, A; dims=2), AT, rand(range, 2,2)) - @test compare(A->mean(sin, A; dims=[1,3]), AT, rand(range, 2,2,2)) + @test compare(A -> mean(A; dims = 2), AT, rand(range, 2, 2)) + @test compare(A -> mean(A; dims = [1, 3]), AT, rand(range, 2, 2, 2)) + @test compare(A -> mean(sin, A), AT, rand(range, 2, 2)) + @test compare(A -> mean(sin, A; dims = 2), AT, rand(range, 2, 2)) + @test compare(A -> mean(sin, A; dims = [1, 3]), AT, rand(range, 2, 2, 2)) end end @@ -46,14 +46,14 @@ using Statistics s = 100 @test compare(cov, AT, rand(range, s)) @test compare(cov, AT, rand(range, s, 2)) - @test compare(A->cov(A; dims=2), AT, rand(range, s, 2)) + @test compare(A -> cov(A; dims = 2), AT, rand(range, s, 2)) end @testset "cor" begin s = 100 - @test compare(cor, AT, rand(range, s)) nans=true - @test compare(cor, AT, rand(range, s, 2)) nans=true - @test compare(A->cor(A; dims=2), AT, rand(range, s, 2)) nans=true + @test compare(cor, AT, rand(range, s)) nans = true + @test compare(cor, AT, rand(range, s, 2)) nans = true + @test compare(A -> cor(A; dims = 2), AT, rand(range, s, 2)) nans = true end end end From 4ac2b52270a926f640081735bfff4f84a6007b8e Mon Sep 17 00:00:00 2001 From: Michel Schanen Date: Mon, 15 Dec 2025 21:34:33 -0600 Subject: [PATCH 4/4] Restrict relaxation to Float16 --- test/testsuite/statistics.jl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/testsuite/statistics.jl b/test/testsuite/statistics.jl index e5332b56b..fb9edfc28 100644 --- a/test/testsuite/statistics.jl +++ b/test/testsuite/statistics.jl @@ -5,7 +5,8 @@ using Statistics if !(ET in [Float16, Float32, Float64]) continue end - range = ET <: Real ? (ET(1):ET(100)) : ET + # Larger range for Float16 to avoid numerical instability + range = ET == Float16 ? (ET(1):ET(100)) : ET @testset "std" begin @test compare(std, AT, rand(range, 10)) @@ -40,7 +41,8 @@ using Statistics if !(ET in [Float32, Float64, Float16, ComplexF64]) continue end - range = ET <: Real ? (ET(1):ET(100)) : ET + # Larger range for Float16 to avoid numerical instability + range = ET == Float16 ? (ET(1):ET(100)) : ET @testset "cov" begin s = 100