commit 30b75ae3539128cf7f12ef84db15ad91f54f0de2 (tree)
parent a36d7b613185c28c508bcc7b0e8b580a0ffd5e28
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Sat, 30 Jun 2018 01:44:54 +0200
add std.math f16 isfinite support
refs #1122
Diffstat:
1 file changed, 8 insertions(+), 0 deletions(-)
diff --git a/std/math/isfinite.zig b/std/math/isfinite.zig
@@ -5,6 +5,10 @@ const assert = std.debug.assert;
pub fn isFinite(x: var) bool {
const T = @typeOf(x);
switch (T) {
+ f16 => {
+ const bits = @bitCast(u16, x);
+ return bits & 0x7FFF < 0x7C00;
+ },
f32 => {
const bits = @bitCast(u32, x);
return bits & 0x7FFFFFFF < 0x7F800000;
@@ -20,10 +24,14 @@ pub fn isFinite(x: var) bool {
}
test "math.isFinite" {
+ assert(isFinite(f16(0.0)));
+ assert(isFinite(f16(-0.0)));
assert(isFinite(f32(0.0)));
assert(isFinite(f32(-0.0)));
assert(isFinite(f64(0.0)));
assert(isFinite(f64(-0.0)));
+ assert(!isFinite(math.inf(f16)));
+ assert(!isFinite(-math.inf(f16)));
assert(!isFinite(math.inf(f32)));
assert(!isFinite(-math.inf(f32)));
assert(!isFinite(math.inf(f64)));