mirror of
https://github.com/ziglang/zig.git
synced 2026-02-21 16:54:52 +00:00
Fix bug where std.math.asinh64 doesn't respect signedness for negative values (#9940)
* std: Correct math.asinh64 to return correct signedness for negative values * std: Add tests for negative values for math.asinh32 and math.asinh64
This commit is contained in:
parent
f3ab092f67
commit
411e9ca4ad
@ -60,7 +60,7 @@ fn asinh32(x: f32) f32 {
|
||||
fn asinh64(x: f64) f64 {
|
||||
const u = @bitCast(u64, x);
|
||||
const e = (u >> 52) & 0x7FF;
|
||||
const s = u >> 63;
|
||||
const s = e >> 63;
|
||||
|
||||
var rx = @bitCast(f64, u & (maxInt(u64) >> 1)); // |x|
|
||||
|
||||
@ -97,6 +97,7 @@ test "math.asinh32" {
|
||||
const epsilon = 0.000001;
|
||||
|
||||
try expect(math.approxEqAbs(f32, asinh32(0.0), 0.0, epsilon));
|
||||
try expect(math.approxEqAbs(f32, asinh32(-0.2), -0.198690, epsilon));
|
||||
try expect(math.approxEqAbs(f32, asinh32(0.2), 0.198690, epsilon));
|
||||
try expect(math.approxEqAbs(f32, asinh32(0.8923), 0.803133, epsilon));
|
||||
try expect(math.approxEqAbs(f32, asinh32(1.5), 1.194763, epsilon));
|
||||
@ -109,6 +110,7 @@ test "math.asinh64" {
|
||||
const epsilon = 0.000001;
|
||||
|
||||
try expect(math.approxEqAbs(f64, asinh64(0.0), 0.0, epsilon));
|
||||
try expect(math.approxEqAbs(f64, asinh64(-0.2), -0.198690, epsilon));
|
||||
try expect(math.approxEqAbs(f64, asinh64(0.2), 0.198690, epsilon));
|
||||
try expect(math.approxEqAbs(f64, asinh64(0.8923), 0.803133, epsilon));
|
||||
try expect(math.approxEqAbs(f64, asinh64(1.5), 1.194763, epsilon));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user