aboutsummaryrefslogtreecommitdiff
path: root/lib/std
diff options
context:
space:
mode:
authorLemonBoy <thatlemon@gmail.com>2021-03-23 09:17:57 +0100
committerLemonBoy <thatlemon@gmail.com>2021-05-01 16:28:03 +0200
commit9f6edfd2016177883c952cd72bbcfab87025703c (patch)
tree2d9d1f50a195d7970e03b1fdae763b2a1963c540 /lib/std
parent718b43504eae6af063f8b9cf5803a82758c7e37b (diff)
downloadzig-9f6edfd2016177883c952cd72bbcfab87025703c.tar.gz
zig-9f6edfd2016177883c952cd72bbcfab87025703c.zip
std: Implement signbit for f128
Diffstat (limited to 'lib/std')
-rw-r--r--lib/std/math/signbit.zig12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/std/math/signbit.zig b/lib/std/math/signbit.zig
index 9fb245c3c6..08963b3d94 100644
--- a/lib/std/math/signbit.zig
+++ b/lib/std/math/signbit.zig
@@ -14,6 +14,7 @@ pub fn signbit(x: anytype) bool {
f16 => signbit16(x),
f32 => signbit32(x),
f64 => signbit64(x),
+ f128 => signbit128(x),
else => @compileError("signbit not implemented for " ++ @typeName(T)),
};
}
@@ -33,10 +34,16 @@ fn signbit64(x: f64) bool {
return bits >> 63 != 0;
}
+fn signbit128(x: f128) bool {
+ const bits = @bitCast(u128, x);
+ return bits >> 127 != 0;
+}
+
test "math.signbit" {
expect(signbit(@as(f16, 4.0)) == signbit16(4.0));
expect(signbit(@as(f32, 4.0)) == signbit32(4.0));
expect(signbit(@as(f64, 4.0)) == signbit64(4.0));
+ expect(signbit(@as(f128, 4.0)) == signbit128(4.0));
}
test "math.signbit16" {
@@ -53,3 +60,8 @@ test "math.signbit64" {
expect(!signbit64(4.0));
expect(signbit64(-3.0));
}
+
+test "math.signbit128" {
+ expect(!signbit128(4.0));
+ expect(signbit128(-3.0));
+}