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.

tanx

tan.tanx
pub fn tanx(x: f80) callconv(.c) f80

File

lib/compiler_rt/tan.zig:123

Code

pub fn tanx(x: f80) callconv(.c) f80 {
    const se = ld.signExponent(x) & 0x7fff;
    if (se == 0x7fff) {
        return x - x;
    }

    if (@abs(x) < kernel.pi_4) {
        if (se < 0x3fff - math.floatMantissaBits(f80) / 2) {
            if (compiler_rt.want_float_exceptions) {
                mem.doNotOptimizeAway(if (se == 0) x * 0x1p-120 else x + 0x1p120);
            }
            return x;
        }
        return kernel.tanx(x, 0.0, 0);
    }

    var y: [2]f80 = undefined;
    const n = rem_pio2l(f80, x, &y);
    return kernel.tanx(y[0], y[1], n & 1);
}