diff options
| author | Lewis Gaul <lewis.gaul@gmail.com> | 2024-05-25 23:05:20 +0100 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2025-07-17 05:04:59 +0200 |
| commit | 03dfd2ecc37cc99b15d4ce3ff19147230ddc8fd4 (patch) | |
| tree | 884eb9f9b59110715ca4618393ee2369dcec2cb2 /lib | |
| parent | 7abb170f59ed959c4004ec37258c8905903f36b1 (diff) | |
| download | zig-03dfd2ecc37cc99b15d4ce3ff19147230ddc8fd4.tar.gz zig-03dfd2ecc37cc99b15d4ce3ff19147230ddc8fd4.zip | |
Make sure to test the sign of the zero results
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/compiler_rt/exp.zig | 4 | ||||
| -rw-r--r-- | lib/compiler_rt/exp2.zig | 4 | ||||
| -rw-r--r-- | lib/compiler_rt/log.zig | 4 | ||||
| -rw-r--r-- | lib/compiler_rt/log10.zig | 4 | ||||
| -rw-r--r-- | lib/compiler_rt/log2.zig | 4 | ||||
| -rw-r--r-- | lib/std/math/expm1.zig | 8 | ||||
| -rw-r--r-- | lib/std/math/log1p.zig | 8 |
7 files changed, 18 insertions, 18 deletions
diff --git a/lib/compiler_rt/exp.zig b/lib/compiler_rt/exp.zig index 55b784770b..fa4356a336 100644 --- a/lib/compiler_rt/exp.zig +++ b/lib/compiler_rt/exp.zig @@ -218,7 +218,7 @@ test "expf() special" { try expectEqual(expf(1.0), math.e); try expectEqual(expf(math.ln2), 2.0); try expectEqual(expf(math.inf(f32)), math.inf(f32)); - try expectEqual(expf(-math.inf(f32)), 0.0); + try expect(math.isPositiveZero(expf(-math.inf(f32)))); try expect(math.isNan(expf(math.nan(f32)))); try expect(math.isNan(expf(math.snan(f32)))); } @@ -268,7 +268,7 @@ test "exp() special" { // try expectEqual(exp(1.0), math.e); try expectEqual(exp(math.ln2), 2.0); try expectEqual(exp(math.inf(f64)), math.inf(f64)); - try expectEqual(exp(-math.inf(f64)), 0.0); + try expect(math.isPositiveZero(exp(-math.inf(f64)))); try expect(math.isNan(exp(math.nan(f64)))); try expect(math.isNan(exp(math.snan(f64)))); } diff --git a/lib/compiler_rt/exp2.zig b/lib/compiler_rt/exp2.zig index e27bae8092..ce79dff497 100644 --- a/lib/compiler_rt/exp2.zig +++ b/lib/compiler_rt/exp2.zig @@ -464,7 +464,7 @@ test "exp2f() special" { try expectEqual(exp2f(1.0), 2.0); try expectEqual(exp2f(-1.0), 0.5); try expectEqual(exp2f(math.inf(f32)), math.inf(f32)); - try expectEqual(exp2f(-math.inf(f32)), 0.0); + try expect(math.isPositiveZero(exp2f(-math.inf(f32)))); try expect(math.isNan(exp2f(math.nan(f32)))); try expect(math.isNan(exp2f(math.snan(f32)))); } @@ -502,7 +502,7 @@ test "exp2() special" { try expectEqual(exp2(1.0), 2.0); try expectEqual(exp2(-1.0), 0.5); try expectEqual(exp2(math.inf(f64)), math.inf(f64)); - try expectEqual(exp2(-math.inf(f64)), 0.0); + try expect(math.isPositiveZero(exp2(-math.inf(f64)))); try expect(math.isNan(exp2(math.nan(f64)))); try expect(math.isNan(exp2(math.snan(f64)))); } diff --git a/lib/compiler_rt/log.zig b/lib/compiler_rt/log.zig index e7c98547e7..f8bbf430ac 100644 --- a/lib/compiler_rt/log.zig +++ b/lib/compiler_rt/log.zig @@ -163,7 +163,7 @@ pub fn logl(x: c_longdouble) callconv(.c) c_longdouble { test "logf() special" { try expectEqual(logf(0.0), -math.inf(f32)); try expectEqual(logf(-0.0), -math.inf(f32)); - try expectEqual(logf(1.0), 0.0); + try expect(math.isPositiveZero(logf(1.0))); try expectEqual(logf(math.e), 1.0); try expectEqual(logf(math.inf(f32)), math.inf(f32)); try expect(math.isNan(logf(-1.0))); @@ -198,7 +198,7 @@ test "logf() boundary" { test "log() special" { try expectEqual(log(0.0), -math.inf(f64)); try expectEqual(log(-0.0), -math.inf(f64)); - try expectEqual(log(1.0), 0.0); + try expect(math.isPositiveZero(log(1.0))); try expectEqual(log(math.e), 1.0); try expectEqual(log(math.inf(f64)), math.inf(f64)); try expect(math.isNan(log(-1.0))); diff --git a/lib/compiler_rt/log10.zig b/lib/compiler_rt/log10.zig index 130c437ef9..1c2ce4bbca 100644 --- a/lib/compiler_rt/log10.zig +++ b/lib/compiler_rt/log10.zig @@ -191,7 +191,7 @@ pub fn log10l(x: c_longdouble) callconv(.c) c_longdouble { test "log10f() special" { try expectEqual(log10f(0.0), -math.inf(f32)); try expectEqual(log10f(-0.0), -math.inf(f32)); - try expectEqual(log10f(1.0), 0.0); + try expect(math.isPositiveZero(log10f(1.0))); try expectEqual(log10f(10.0), 1.0); try expectEqual(log10f(0.1), -1.0); try expectEqual(log10f(math.inf(f32)), math.inf(f32)); @@ -227,7 +227,7 @@ test "log10f() boundary" { test "log10() special" { try expectEqual(log10(0.0), -math.inf(f64)); try expectEqual(log10(-0.0), -math.inf(f64)); - try expectEqual(log10(1.0), 0.0); + try expect(math.isPositiveZero(log10(1.0))); try expectEqual(log10(10.0), 1.0); try expectEqual(log10(0.1), -1.0); try expectEqual(log10(math.inf(f64)), math.inf(f64)); diff --git a/lib/compiler_rt/log2.zig b/lib/compiler_rt/log2.zig index 300eff4993..4cedcfe0c1 100644 --- a/lib/compiler_rt/log2.zig +++ b/lib/compiler_rt/log2.zig @@ -183,7 +183,7 @@ pub fn log2l(x: c_longdouble) callconv(.c) c_longdouble { test "log2f() special" { try expectEqual(log2f(0.0), -math.inf(f32)); try expectEqual(log2f(-0.0), -math.inf(f32)); - try expectEqual(log2f(1.0), 0.0); + try expect(math.isPositiveZero(log2f(1.0))); try expectEqual(log2f(2.0), 1.0); try expectEqual(log2f(math.inf(f32)), math.inf(f32)); try expect(math.isNan(log2f(-1.0))); @@ -219,7 +219,7 @@ test "log2f() boundary" { test "log2() special" { try expectEqual(log2(0.0), -math.inf(f64)); try expectEqual(log2(-0.0), -math.inf(f64)); - try expectEqual(log2(1.0), 0.0); + try expect(math.isPositiveZero(log2(1.0))); try expectEqual(log2(2.0), 1.0); try expectEqual(log2(math.inf(f64)), math.inf(f64)); try expect(math.isNan(log2(-1.0))); diff --git a/lib/std/math/expm1.zig b/lib/std/math/expm1.zig index 048bd57cba..7c57459271 100644 --- a/lib/std/math/expm1.zig +++ b/lib/std/math/expm1.zig @@ -288,8 +288,8 @@ fn expm1_64(x_: f64) f64 { } test "expm1_32() special" { - try expectEqual(expm1_32(0.0), 0.0); - try expectEqual(expm1_32(-0.0), 0.0); + try expect(math.isPositiveZero(expm1_32(0.0))); + try expect(math.isNegativeZero(expm1_32(-0.0))); try expectEqual(expm1_32(math.ln2), 1.0); try expectEqual(expm1_32(math.inf(f32)), math.inf(f32)); try expectEqual(expm1_32(-math.inf(f32)), -1.0); @@ -326,8 +326,8 @@ test "expm1_32() boundary" { } test "expm1_64() special" { - try expectEqual(expm1_64(0.0), 0.0); - try expectEqual(expm1_64(-0.0), 0.0); + try expect(math.isPositiveZero(expm1_64(0.0))); + try expect(math.isNegativeZero(expm1_64(-0.0))); try expectEqual(expm1_64(math.ln2), 1.0); try expectEqual(expm1_64(math.inf(f64)), math.inf(f64)); try expectEqual(expm1_64(-math.inf(f64)), -1.0); diff --git a/lib/std/math/log1p.zig b/lib/std/math/log1p.zig index 4dd7bda2e2..bd4139311c 100644 --- a/lib/std/math/log1p.zig +++ b/lib/std/math/log1p.zig @@ -184,8 +184,8 @@ fn log1p_64(x: f64) f64 { } test "log1p_32() special" { - try expectEqual(log1p_32(0.0), 0.0); - try expectEqual(log1p_32(-0.0), 0.0); + try expect(math.isPositiveZero(log1p_32(0.0))); + try expect(math.isNegativeZero(log1p_32(-0.0))); try expectEqual(log1p_32(-1.0), -math.inf(f32)); try expectEqual(log1p_32(1.0), math.ln2); try expectEqual(log1p_32(math.inf(f32)), math.inf(f32)); @@ -219,8 +219,8 @@ test "log1p_32() boundary" { } test "log1p_64() special" { - try expectEqual(log1p_64(0.0), 0.0); - try expectEqual(log1p_64(-0.0), 0.0); + try expect(math.isPositiveZero(log1p_64(0.0))); + try expect(math.isNegativeZero(log1p_64(-0.0))); try expectEqual(log1p_64(-1.0), -math.inf(f64)); try expectEqual(log1p_64(1.0), math.ln2); try expectEqual(log1p_64(math.inf(f64)), math.inf(f64)); |
