Commit f36b095b5f

Ben Noordhuis <info@bnoordhuis.nl>
2018-06-30 01:44:54
add std.math f16 isnormal support
refs #1122
1 parent 30b75ae
Changed files (1)
std
std/math/isnormal.zig
@@ -5,6 +5,10 @@ const assert = std.debug.assert;
 pub fn isNormal(x: var) bool {
     const T = @typeOf(x);
     switch (T) {
+        f16 => {
+            const bits = @bitCast(u16, x);
+            return (bits + 1024) & 0x7FFF >= 2048;
+        },
         f32 => {
             const bits = @bitCast(u32, x);
             return (bits + 0x00800000) & 0x7FFFFFFF >= 0x01000000;
@@ -20,8 +24,13 @@ pub fn isNormal(x: var) bool {
 }
 
 test "math.isNormal" {
+    assert(!isNormal(math.nan(f16)));
     assert(!isNormal(math.nan(f32)));
     assert(!isNormal(math.nan(f64)));
+    assert(!isNormal(f16(0)));
+    assert(!isNormal(f32(0)));
+    assert(!isNormal(f64(0)));
+    assert(isNormal(f16(1.0)));
     assert(isNormal(f32(1.0)));
     assert(isNormal(f64(1.0)));
 }