From ff14451b4a328ca6862637a88912000d11aa2bf3 Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Mon, 2 Nov 2020 13:25:50 +0100 Subject: std: Implement more useful approxEq semantics Comparisons with absolute epsilons are usually useful when comparing numbers to zero, for non-zero numbers it's advised to switch to relative epsilons instead to obtain meaningful results (check [1] for more details). The new API introduces approxEqAbs and approxEqRel, where the former aliases and deprecated the old `approxEq`, allowing the user to pick the right tool for the job. The documentation is meant to guide the user in the choice of the correct alternative. [1] https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/ --- lib/std/math/cosh.zig | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'lib/std/math/cosh.zig') diff --git a/lib/std/math/cosh.zig b/lib/std/math/cosh.zig index 221ebcf089..c3736415d3 100644 --- a/lib/std/math/cosh.zig +++ b/lib/std/math/cosh.zig @@ -100,27 +100,27 @@ test "math.cosh" { test "math.cosh32" { const epsilon = 0.000001; - expect(math.approxEq(f32, cosh32(0.0), 1.0, epsilon)); - expect(math.approxEq(f32, cosh32(0.2), 1.020067, epsilon)); - expect(math.approxEq(f32, cosh32(0.8923), 1.425225, epsilon)); - expect(math.approxEq(f32, cosh32(1.5), 2.352410, epsilon)); - expect(math.approxEq(f32, cosh32(-0.0), 1.0, epsilon)); - expect(math.approxEq(f32, cosh32(-0.2), 1.020067, epsilon)); - expect(math.approxEq(f32, cosh32(-0.8923), 1.425225, epsilon)); - expect(math.approxEq(f32, cosh32(-1.5), 2.352410, epsilon)); + expect(math.approxEqAbs(f32, cosh32(0.0), 1.0, epsilon)); + expect(math.approxEqAbs(f32, cosh32(0.2), 1.020067, epsilon)); + expect(math.approxEqAbs(f32, cosh32(0.8923), 1.425225, epsilon)); + expect(math.approxEqAbs(f32, cosh32(1.5), 2.352410, epsilon)); + expect(math.approxEqAbs(f32, cosh32(-0.0), 1.0, epsilon)); + expect(math.approxEqAbs(f32, cosh32(-0.2), 1.020067, epsilon)); + expect(math.approxEqAbs(f32, cosh32(-0.8923), 1.425225, epsilon)); + expect(math.approxEqAbs(f32, cosh32(-1.5), 2.352410, epsilon)); } test "math.cosh64" { const epsilon = 0.000001; - expect(math.approxEq(f64, cosh64(0.0), 1.0, epsilon)); - expect(math.approxEq(f64, cosh64(0.2), 1.020067, epsilon)); - expect(math.approxEq(f64, cosh64(0.8923), 1.425225, epsilon)); - expect(math.approxEq(f64, cosh64(1.5), 2.352410, epsilon)); - expect(math.approxEq(f64, cosh64(-0.0), 1.0, epsilon)); - expect(math.approxEq(f64, cosh64(-0.2), 1.020067, epsilon)); - expect(math.approxEq(f64, cosh64(-0.8923), 1.425225, epsilon)); - expect(math.approxEq(f64, cosh64(-1.5), 2.352410, epsilon)); + expect(math.approxEqAbs(f64, cosh64(0.0), 1.0, epsilon)); + expect(math.approxEqAbs(f64, cosh64(0.2), 1.020067, epsilon)); + expect(math.approxEqAbs(f64, cosh64(0.8923), 1.425225, epsilon)); + expect(math.approxEqAbs(f64, cosh64(1.5), 2.352410, epsilon)); + expect(math.approxEqAbs(f64, cosh64(-0.0), 1.0, epsilon)); + expect(math.approxEqAbs(f64, cosh64(-0.2), 1.020067, epsilon)); + expect(math.approxEqAbs(f64, cosh64(-0.8923), 1.425225, epsilon)); + expect(math.approxEqAbs(f64, cosh64(-1.5), 2.352410, epsilon)); } test "math.cosh32.special" { -- cgit v1.2.3