From aa03ec8001f98ac36e1705c92191246be53cf31b Mon Sep 17 00:00:00 2001 From: Veikka Tuominen Date: Sun, 17 Mar 2024 22:23:16 +0200 Subject: add behavior test for optimized float math Closes #19178 --- test/behavior/floatop.zig | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'test/behavior/floatop.zig') diff --git a/test/behavior/floatop.zig b/test/behavior/floatop.zig index b3bdfb6d71..e777377786 100644 --- a/test/behavior/floatop.zig +++ b/test/behavior/floatop.zig @@ -1636,3 +1636,24 @@ test "runtime isNan(inf * 0)" { const zero_times_inf = 0 * std.math.inf(f64); try std.testing.expect(std.math.isNan(zero_times_inf)); } + +test "optimized float mode" { + if (builtin.mode == .Debug) return error.SkipZigTest; + + const big = 0x1p40; + const small = 0.001; + const tiny = 0x1p-10; + + const S = struct { + fn strict(x: f64) f64 { + @setFloatMode(.strict); + return x + big - big; + } + fn optimized(x: f64) f64 { + @setFloatMode(.optimized); + return x + big - big; + } + }; + try expect(S.optimized(small) == small); + try expect(S.strict(small) == tiny); +} -- cgit v1.2.3