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.

check

float.check
fn check(comptime T: type, value: T, comptime expected: []const u8) !void

File

lib/std/fmt/float.zig:1518

Code

fn check(comptime T: type, value: T, comptime expected: []const u8) !void {
    const I = @Int(.unsigned, @bitSizeOf(T));

    var buf: [6000]u8 = undefined;
    const value_bits: I = @bitCast(value);
    const s = try render(&buf, value, .{});
    try std.testing.expectEqualStrings(expected, s);

    if (T == f80 and builtin.target.os.tag == .windows and builtin.target.cpu.arch == .x86_64) return;

    const o = try std.fmt.parseFloat(T, s);
    const o_bits: I = @bitCast(o);

    if (std.math.isNan(value)) {
        try std.testing.expect(std.math.isNan(o));
    } else {
        try std.testing.expectEqual(value_bits, o_bits);
    }
}