zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

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:
Mstd/math/isfinite.zig | 8++++++++
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)));