aboutsummaryrefslogtreecommitdiff
path: root/test/behavior
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2024-03-18 04:27:39 +0200
committerGitHub <noreply@github.com>2024-03-18 04:27:39 +0200
commit64173dadcacdcad9b7f5898fee2b00f2cf177ead (patch)
treed848615ca50e00493863ad724d1555011aef3b1d /test/behavior
parent54f6e74cda07a1153fd205afc8973665397f6cc7 (diff)
parentaa03ec8001f98ac36e1705c92191246be53cf31b (diff)
downloadzig-64173dadcacdcad9b7f5898fee2b00f2cf177ead.tar.gz
zig-64173dadcacdcad9b7f5898fee2b00f2cf177ead.zip
Merge pull request #19334 from antlilja/llvm-fast-math
Fix setFloatMode in LLVM backend
Diffstat (limited to 'test/behavior')
-rw-r--r--test/behavior/floatop.zig21
1 files changed, 21 insertions, 0 deletions
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);
+}