authorgravatar for info@bnoordhuis.nlBen Noordhuis <info@bnoordhuis.nl> 2018-06-30 01:44:54+02:00
committergravatar for info@bnoordhuis.nlBen Noordhuis <info@bnoordhuis.nl> 2018-06-30 01:58:17+02:00
logf36b095b5ff2176f357d84a9924740324b069765
treec668d0c70e5a0190eb665492b1e2fe64f1a25c6e
parent30b75ae3539128cf7f12ef84db15ad91f54f0de2

add std.math f16 isnormal support

refs #1122

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

std/math/isnormal.zig+9
......@@ -5,6 +5,10 @@ const assert = std.debug.assert;
55pub fn isNormal(x: var) bool {
66 const T = @typeOf(x);
77 switch (T) {
8 f16 => {
9 const bits = @bitCast(u16, x);
10 return (bits + 1024) & 0x7FFF >= 2048;
11 },
812 f32 => {
913 const bits = @bitCast(u32, x);
1014 return (bits + 0x00800000) & 0x7FFFFFFF >= 0x01000000;
......@@ -20,8 +24,13 @@ pub fn isNormal(x: var) bool {
2024}
2125
2226test "math.isNormal" {
27 assert(!isNormal(math.nan(f16)));
2328 assert(!isNormal(math.nan(f32)));
2429 assert(!isNormal(math.nan(f64)));
30 assert(!isNormal(f16(0)));
31 assert(!isNormal(f32(0)));
32 assert(!isNormal(f64(0)));
33 assert(isNormal(f16(1.0)));
2534 assert(isNormal(f32(1.0)));
2635 assert(isNormal(f64(1.0)));
2736}