Skip to content

Commit 4788669

Browse files
committed
expand ULPError test suite
1 parent 9cd7d4d commit 4788669

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

test/math.jl

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ has_fma = Dict(
2929
)
3030

3131
@testset "meta test: ULPError" begin
32+
examples_f64 = (-3e0, -2e0, -1e0, -1e-1, -1e-10, -0e0, 0e0, 1e-10, 1e-1, 1e0, 2e0, 3e0)::Tuple{Vararg{Float64}}
33+
examples_f16 = Float16.(examples_f64)
34+
examples_f32 = Float32.(examples_f64)
35+
examples = (examples_f16..., examples_f32..., examples_f64...)
3236
@testset "edge cases" begin
3337
@testset "zero error - two equivalent values" begin
3438
@test 0 == @inferred ulp_error(NaN, NaN)
@@ -60,11 +64,17 @@ has_fma = Dict(
6064
end
6165
end
6266
@testset "faithful" begin
63-
for x in (-2.0, -0.3, 0.1, 1.0)
67+
for x in examples
6468
@test 1 == @inferred ulp_error(x, nextfloat(x, 1))
6569
@test 1 == @inferred ulp_error(x, nextfloat(x, -1))
6670
end
6771
end
72+
@testset "midpoint" begin
73+
for x in examples
74+
a = abs(x)
75+
@test 1 == 2 * @inferred ulp_error(copysign((widen(a) + nextfloat(a, 1))/2, x), x)
76+
end
77+
end
6878
end
6979

7080
@testset "clamp" begin

0 commit comments

Comments
 (0)