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/ › isinf.zig
isinf.zig
Index
File
Code
const std = @import ("../std.zig" );
const math = std .math ;
const expect = std .testing .expect ;
pub inline fn isInf (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 )));
}
pub inline fn isPositiveInf (x : anytype ) bool {
return x == math .inf (@TypeOf (x ));
}
pub inline fn isNegativeInf (x : anytype ) bool {
return x == -math .inf (@TypeOf (x ));
}
test isInf {
inline for ([_ ]type { f16 , f32 , f64 , f80 , f128 }) |T | {
try expect (!isInf (@as (T , 0.0 )));
try expect (!isInf (@as (T , -0.0 )));
try expect (isInf (math .inf (T )));
try expect (isInf (-math .inf (T )));
try expect (!isInf (math .nan (T )));
try expect (!isInf (-math .nan (T )));
}
}
test isPositiveInf {
inline for ([_ ]type { f16 , f32 , f64 , f80 , f128 }) |T | {
try expect (!isPositiveInf (@as (T , 0.0 )));
try expect (!isPositiveInf (@as (T , -0.0 )));
try expect (isPositiveInf (math .inf (T )));
try expect (!isPositiveInf (-math .inf (T )));
try expect (!isInf (math .nan (T )));
try expect (!isInf (-math .nan (T )));
}
}
test isNegativeInf {
inline for ([_ ]type { f16 , f32 , f64 , f80 , f128 }) |T | {
try expect (!isNegativeInf (@as (T , 0.0 )));
try expect (!isNegativeInf (@as (T , -0.0 )));
try expect (!isNegativeInf (math .inf (T )));
try expect (isNegativeInf (-math .inf (T )));
try expect (!isInf (math .nan (T )));
try expect (!isInf (-math .nan (T )));
}
}