Function snan [src]

Alias for std.math.float.snan

Returns a signalling NaN representation for a floating point Type. TODO: LLVM is known to miscompile on some architectures to quiet NaN - this is tracked by https://github.com/ziglang/zig/issues/14366

Prototype

pub inline fn snan(comptime Type: type) Type

Parameters

Type: type

Example

test snan { const snan_u16: u16 = 0x7D00; const snan_u32: u32 = 0x7FA00000; const snan_u64: u64 = 0x7FF4000000000000; const snan_u80: u80 = 0x7FFFA000000000000000; const snan_u128: u128 = 0x7FFF4000000000000000000000000000; try expectEqual(snan_u16, @as(u16, @bitCast(snan(f16)))); try expectEqual(snan_u32, @as(u32, @bitCast(snan(f32)))); try expectEqual(snan_u64, @as(u64, @bitCast(snan(f64)))); try expectEqual(snan_u80, @as(u80, @bitCast(snan(f80)))); try expectEqual(snan_u128, @as(u128, @bitCast(snan(f128)))); }

Source

pub inline fn snan(comptime Type: type) Type { const RuntimeType = switch (Type) { else => Type, comptime_float => f128, // any float type will do }; return reconstructFloat( RuntimeType, floatExponentMax(RuntimeType) + 1, mantissaOne(RuntimeType) | 1 << (floatFractionalBits(RuntimeType) - 2), ); }