From dc62dde9826a94c161e20bf56e23940dc3f2f0dc Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 27 Apr 2022 17:58:26 -0700 Subject: [PATCH] behavior test: use expectApproxEqAbs instead of expectEqual This is to account for the small differences in math functions of different libcs. For example, if the compiler links against glibc, but the target is musl libc, then these values might be slightly different. Arguably, this is a bug in the compiler because comptime should emulate the target, including rounding errors in libc math functions. However that behavior is not what this particular test is intended to cover. --- test/behavior/bugs/920.zig | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/test/behavior/bugs/920.zig b/test/behavior/bugs/920.zig index 5a7cadc595..19fce71549 100644 --- a/test/behavior/bugs/920.zig +++ b/test/behavior/bugs/920.zig @@ -63,6 +63,13 @@ test "bug 920 fixed" { }; for (NormalDist1.f) |_, i| { - try std.testing.expectEqual(NormalDist1.f[i], NormalDist.f[i]); + // Here we use `expectApproxEqAbs` instead of `expectEqual` to account for the small + // differences in math functions of different libcs. For example, if the compiler + // links against glibc, but the target is musl libc, then these values might be + // slightly different. + // Arguably, this is a bug in the compiler because comptime should emulate the target, + // including rounding errors in libc math functions. However that behavior is not + // what this particular test is intended to cover. + try std.testing.expectApproxEqAbs(NormalDist1.f[i], NormalDist.f[i], @sqrt(std.math.floatEps(f64))); } }