summaryrefslogtreecommitdiffstats
path: root/vendor/libm-0.1.4/src/math/atanh.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-07 05:48:48 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-07 05:48:48 +0000
commitef24de24a82fe681581cc130f342363c47c0969a (patch)
tree0d494f7e1a38b95c92426f58fe6eaa877303a86c /vendor/libm-0.1.4/src/math/atanh.rs
parentReleasing progress-linux version 1.74.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-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.rs36
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
- }
-}