Zig 0.17.0-dev (Split by item)
This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig library itself.
Zig › std/ › math/ › isfinite.zig
isfinite.zig
Index
File
Code
const std = @import ("../std.zig" );
const math = std .math ;
const expect = std .testing .expect ;
pub fn isFinite (x : anytype ) bool {
const T = @TypeOf (x );
const TBits = @Int (.unsigned , @typeInfo (T ).float .bits );
const remove_sign = ~@as (TBits , 0 ) >> 1 ;
return @as (TBits , @bitCast (x )) & remove_sign < @as (TBits , @bitCast (math .inf (T )));
}
test isFinite {
inline for ([_ ]type { f16 , f32 , f64 , f80 , f128 }) |T | {
try expect (isFinite (@as (T , 1.0 )));
try expect (isFinite (-@as (T , 1.0 )));
try expect (isFinite (@as (T , 0.0 )));
try expect (isFinite (@as (T , -0.0 )));
try expect (isFinite (math .floatTrueMin (T )));
try expect (isFinite (math .floatMin (T )));
try expect (isFinite (math .floatMax (T )));
try expect (!isFinite (math .inf (T )));
try expect (!isFinite (-math .inf (T )));
try expect (!isFinite (math .nan (T )));
try expect (!isFinite (-math .nan (T )));
}
}