diff options
| author | kkHAIKE <kkhaike@gmail.com> | 2022-11-19 04:06:49 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-18 22:06:49 +0200 |
| commit | ea590ece4bcc26175d890dd82899ffc9ef64b6c3 (patch) | |
| tree | b5d77cc7bbe683e54c9bf2b7d29b4681dc057ba5 /test/behavior | |
| parent | 04f3067a7921a51bd55870f3138220fd66426e33 (diff) | |
| download | zig-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.zig | 66 |
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)); +} |
