aboutsummaryrefslogtreecommitdiff
path: root/test/behavior
diff options
context:
space:
mode:
authorkkHAIKE <kkhaike@gmail.com>2022-11-19 04:06:49 +0800
committerGitHub <noreply@github.com>2022-11-18 22:06:49 +0200
commitea590ece4bcc26175d890dd82899ffc9ef64b6c3 (patch)
treeb5d77cc7bbe683e54c9bf2b7d29b4681dc057ba5 /test/behavior
parent04f3067a7921a51bd55870f3138220fd66426e33 (diff)
downloadzig-ea590ece4bcc26175d890dd82899ffc9ef64b6c3.tar.gz
zig-ea590ece4bcc26175d890dd82899ffc9ef64b6c3.zip
Sema: optimize compare comptime float with int
Diffstat (limited to 'test/behavior')
-rw-r--r--test/behavior/bugs/12891.zig66
1 files changed, 66 insertions, 0 deletions
diff --git a/test/behavior/bugs/12891.zig b/test/behavior/bugs/12891.zig
index 14eea5cf7f..6fa4966c4a 100644
--- a/test/behavior/bugs/12891.zig
+++ b/test/behavior/bugs/12891.zig
@@ -18,3 +18,69 @@ test "inf" {
var i: usize = 0;
try std.testing.expect(f > i);
}
+test "-inf < 0" {
+ const f = comptime -std.math.inf(f64);
+ var i: usize = 0;
+ try std.testing.expect(f < i);
+}
+test "inf >= 1" {
+ const f = comptime std.math.inf(f64);
+ var i: usize = 1;
+ try std.testing.expect(f >= i);
+}
+test "isNan(nan * 1)" {
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
+
+ const nan_times_one = comptime std.math.nan(f64) * 1;
+ try std.testing.expect(std.math.isNan(nan_times_one));
+}
+test "runtime isNan(nan * 1)" {
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
+
+ const nan_times_one = std.math.nan(f64) * 1;
+ try std.testing.expect(std.math.isNan(nan_times_one));
+}
+test "isNan(nan * 0)" {
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
+
+ const nan_times_zero = comptime std.math.nan(f64) * 0;
+ try std.testing.expect(std.math.isNan(nan_times_zero));
+ const zero_times_nan = 0 * comptime std.math.nan(f64);
+ try std.testing.expect(std.math.isNan(zero_times_nan));
+}
+test "isNan(inf * 0)" {
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
+
+ const inf_times_zero = comptime std.math.inf(f64) * 0;
+ try std.testing.expect(std.math.isNan(inf_times_zero));
+ const zero_times_inf = 0 * comptime std.math.inf(f64);
+ try std.testing.expect(std.math.isNan(zero_times_inf));
+}
+test "runtime isNan(nan * 0)" {
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
+
+ const nan_times_zero = std.math.nan(f64) * 0;
+ try std.testing.expect(std.math.isNan(nan_times_zero));
+ const zero_times_nan = 0 * std.math.nan(f64);
+ try std.testing.expect(std.math.isNan(zero_times_nan));
+}
+test "runtime isNan(inf * 0)" {
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
+
+ const inf_times_zero = std.math.inf(f64) * 0;
+ try std.testing.expect(std.math.isNan(inf_times_zero));
+ const zero_times_inf = 0 * std.math.inf(f64);
+ try std.testing.expect(std.math.isNan(zero_times_inf));
+}