mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 13:54:21 +00:00
We assume we are compiled on a base-2 radix floating point system. This is a reasonable assumption. musl libc as an example also assumes this. We implement scalbn as an alias for ldexp, since ldexp is defined as 2 regardless of the float radix. This is opposite to musl which defines scalbn in terms of ldexp. Closes #9799.
15 lines
512 B
Zig
15 lines
512 B
Zig
const std = @import("std");
|
|
const expect = std.testing.expect;
|
|
|
|
/// Returns a * FLT_RADIX ^ exp.
|
|
///
|
|
/// Zig only supports binary radix IEEE-754 floats. Hence FLT_RADIX=2, and this is an alias for ldexp.
|
|
pub const scalbn = @import("ldexp.zig").ldexp;
|
|
|
|
test "math.scalbn" {
|
|
// Verify we are using radix 2.
|
|
try expect(scalbn(@as(f16, 1.5), 4) == 24.0);
|
|
try expect(scalbn(@as(f32, 1.5), 4) == 24.0);
|
|
try expect(scalbn(@as(f64, 1.5), 4) == 24.0);
|
|
try expect(scalbn(@as(f128, 1.5), 4) == 24.0);
|
|
}
|