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/ › expo2.zig
expo2.zig
Index
File
Code
// https://git.musl-libc.org/cgit/musl/tree/COPYRIGHT
//
// https://git.musl-libc.org/cgit/musl/tree/src/math/__expo2f.c
// https://git.musl-libc.org/cgit/musl/tree/src/math/__expo2.c
const math = @import ("../math.zig" );
pub fn expo2 (x : anytype ) @TypeOf (x ) {
const T = @TypeOf (x );
return switch (T ) {
f32 => expo2f (x ),
f64 => expo2d (x ),
else => @compileError ("expo2 not implemented for " ++ @typeName (T )),
};
}
fn expo2f (x : f32 ) f32 {
const k : u32 = 235 ;
const kln2 = 0x1.45C778p+7 ;
const u = (0x7F + k / 2 ) << 23 ;
const scale = @as (f32 , @bitCast (u ));
return @exp (x - kln2 ) * scale * scale ;
}
fn expo2d (x : f64 ) f64 {
const k : u32 = 2043 ;
const kln2 = 0x1.62066151ADD8BP+10 ;
const u = (0x3FF + k / 2 ) << 20 ;
const scale = @as (f64 , @bitCast (@as (u64 , u ) << 32 ));
return @exp (x - kln2 ) * scale * scale ;
}