authorgravatar for thatlemon@gmail.comLemonBoy <thatlemon@gmail.com> 2021-03-23 09:17:57+01:00
committergravatar for thatlemon@gmail.comLemonBoy <thatlemon@gmail.com> 2021-05-01 16:28:03+02:00
log9f6edfd2016177883c952cd72bbcfab87025703c
tree2d9d1f50a195d7970e03b1fdae763b2a1963c540
parent718b43504eae6af063f8b9cf5803a82758c7e37b

std: Implement signbit for f128


1 files changed, 12 insertions(+), 0 deletions(-)

lib/std/math/signbit.zig+12
...@@ -14,6 +14,7 @@ pub fn signbit(x: anytype) bool {...@@ -14,6 +14,7 @@ pub fn signbit(x: anytype) bool {
14 f16 => signbit16(x),14 f16 => signbit16(x),
15 f32 => signbit32(x),15 f32 => signbit32(x),
16 f64 => signbit64(x),16 f64 => signbit64(x),
17 f128 => signbit128(x),
17 else => @compileError("signbit not implemented for " ++ @typeName(T)),18 else => @compileError("signbit not implemented for " ++ @typeName(T)),
18 };19 };
19}20}
...@@ -33,10 +34,16 @@ fn signbit64(x: f64) bool {...@@ -33,10 +34,16 @@ fn signbit64(x: f64) bool {
33 return bits >> 63 != 0;34 return bits >> 63 != 0;
34}35}
3536
37fn signbit128(x: f128) bool {
38 const bits = @bitCast(u128, x);
39 return bits >> 127 != 0;
40}
41
36test "math.signbit" {42test "math.signbit" {
37 expect(signbit(@as(f16, 4.0)) == signbit16(4.0));43 expect(signbit(@as(f16, 4.0)) == signbit16(4.0));
38 expect(signbit(@as(f32, 4.0)) == signbit32(4.0));44 expect(signbit(@as(f32, 4.0)) == signbit32(4.0));
39 expect(signbit(@as(f64, 4.0)) == signbit64(4.0));45 expect(signbit(@as(f64, 4.0)) == signbit64(4.0));
46 expect(signbit(@as(f128, 4.0)) == signbit128(4.0));
40}47}
4148
42test "math.signbit16" {49test "math.signbit16" {
...@@ -53,3 +60,8 @@ test "math.signbit64" {...@@ -53,3 +60,8 @@ test "math.signbit64" {
53 expect(!signbit64(4.0));60 expect(!signbit64(4.0));
54 expect(signbit64(-3.0));61 expect(signbit64(-3.0));
55}62}
63
64test "math.signbit128" {
65 expect(!signbit128(4.0));
66 expect(signbit128(-3.0));
67}