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 › compiler_rt/ › sin.zig › sinq
sinq
sin.sinq
pub fn sinq (x : f128 ) callconv (.c ) f128
File
Code
pub fn sinq (x : f128 ) callconv (.c ) f128 {
const se = ld .signExponent (x ) & 0x7fff ;
if (se == 0x7fff ) {
return x - x ;
}
if (@abs (x ) < trig .pi_4 ) {
if (se < 0x3fff - (math .floatMantissaBits (f128 ) / 2 )) {
if (compiler_rt .want_float_exceptions ) {
mem .doNotOptimizeAway (if (se == 0 ) x * 0x1p-120 else x + 0x1p120 );
}
return x ;
}
return trig .sinq (x , 0.0 , 0 );
}
var y : [2 ]f128 = undefined ;
const n = rem_pio2l (f128 , x , &y );
return switch (n & 3 ) {
0 => trig .sinq (y [0 ], y [1 ], 1 ),
1 => trig .cosq (y [0 ], y [1 ]),
2 => -trig .sinq (y [0 ], y [1 ], 1 ),
else => -trig .cosq (y [0 ], y [1 ]),
};
}