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
log30b75ae3539128cf7f12ef84db15ad91f54f0de2
tree0348aa8c07cc5b5c0742f88f1f86cc04ede39eca
parenta36d7b613185c28c508bcc7b0e8b580a0ffd5e28

add std.math f16 isfinite support

refs #1122

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

std/math/isfinite.zig+8
......@@ -5,6 +5,10 @@ const assert = std.debug.assert;
55pub fn isFinite(x: var) bool {
66 const T = @typeOf(x);
77 switch (T) {
8 f16 => {
9 const bits = @bitCast(u16, x);
10 return bits & 0x7FFF < 0x7C00;
11 },
812 f32 => {
913 const bits = @bitCast(u32, x);
1014 return bits & 0x7FFFFFFF < 0x7F800000;
......@@ -20,10 +24,14 @@ pub fn isFinite(x: var) bool {
2024}
2125
2226test "math.isFinite" {
27 assert(isFinite(f16(0.0)));
28 assert(isFinite(f16(-0.0)));
2329 assert(isFinite(f32(0.0)));
2430 assert(isFinite(f32(-0.0)));
2531 assert(isFinite(f64(0.0)));
2632 assert(isFinite(f64(-0.0)));
33 assert(!isFinite(math.inf(f16)));
34 assert(!isFinite(-math.inf(f16)));
2735 assert(!isFinite(math.inf(f32)));
2836 assert(!isFinite(-math.inf(f32)));
2937 assert(!isFinite(math.inf(f64)));