diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-07 05:48:48 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-07 05:48:48 +0000 |
commit | ef24de24a82fe681581cc130f342363c47c0969a (patch) | |
tree | 0d494f7e1a38b95c92426f58fe6eaa877303a86c /vendor/libm-0.1.4/src/math/atanh.rs | |
parent | Releasing progress-linux version 1.74.1+dfsg1-1~progress7.99u1. (diff) | |
download | rustc-ef24de24a82fe681581cc130f342363c47c0969a.tar.xz rustc-ef24de24a82fe681581cc130f342363c47c0969a.zip |
Merging upstream version 1.75.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/libm-0.1.4/src/math/atanh.rs')
-rw-r--r-- | vendor/libm-0.1.4/src/math/atanh.rs | 36 |
1 files changed, 0 insertions, 36 deletions
diff --git a/vendor/libm-0.1.4/src/math/atanh.rs b/vendor/libm-0.1.4/src/math/atanh.rs deleted file mode 100644 index 79a989c42..000000000 --- a/vendor/libm-0.1.4/src/math/atanh.rs +++ /dev/null @@ -1,36 +0,0 @@ -use super::log1p; - -/* atanh(x) = log((1+x)/(1-x))/2 = log1p(2x/(1-x))/2 ~= x + x^3/3 + o(x^5) */ -/// Inverse hyperbolic tangent (f64) -/// -/// Calculates the inverse hyperbolic tangent of `x`. -/// Is defined as `log((1+x)/(1-x))/2 = log1p(2x/(1-x))/2`. -pub fn atanh(x: f64) -> f64 { - let u = x.to_bits(); - let e = ((u >> 52) as usize) & 0x7ff; - let sign = (u >> 63) != 0; - - /* |x| */ - let mut y = f64::from_bits(u & 0x7fff_ffff_ffff_ffff); - - if e < 0x3ff - 1 { - if e < 0x3ff - 32 { - /* handle underflow */ - if e == 0 { - force_eval!(y as f32); - } - } else { - /* |x| < 0.5, up to 1.7ulp error */ - y = 0.5 * log1p(2.0 * y + 2.0 * y * y / (1.0 - y)); - } - } else { - /* avoid overflow */ - y = 0.5 * log1p(2.0 * (y / (1.0 - y))); - } - - if sign { - -y - } else { - y - } -} |