summaryrefslogtreecommitdiffstats
path: root/vendor/libm-0.1.4/src/math/tanh.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/tanh.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/tanh.rs')
-rw-r--r--vendor/libm-0.1.4/src/math/tanh.rs54
1 files changed, 0 insertions, 54 deletions
diff --git a/vendor/libm-0.1.4/src/math/tanh.rs b/vendor/libm-0.1.4/src/math/tanh.rs
deleted file mode 100644
index 75d695cf7..000000000
--- a/vendor/libm-0.1.4/src/math/tanh.rs
+++ /dev/null
@@ -1,54 +0,0 @@
-use super::expm1;
-
-/* tanh(x) = (exp(x) - exp(-x))/(exp(x) + exp(-x))
- * = (exp(2*x) - 1)/(exp(2*x) - 1 + 2)
- * = (1 - exp(-2*x))/(exp(-2*x) - 1 + 2)
- */
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn tanh(mut x: f64) -> f64 {
- let mut uf: f64 = x;
- let mut ui: u64 = f64::to_bits(uf);
-
- let w: u32;
- let sign: bool;
- let mut t: f64;
-
- /* x = |x| */
- sign = ui >> 63 != 0;
- ui &= !1 / 2;
- uf = f64::from_bits(ui);
- x = uf;
- w = (ui >> 32) as u32;
-
- if w > 0x3fe193ea {
- /* |x| > log(3)/2 ~= 0.5493 or nan */
- if w > 0x40340000 {
- /* |x| > 20 or nan */
- /* note: this branch avoids raising overflow */
- t = 1.0 - 0.0 / x;
- } else {
- t = expm1(2.0 * x);
- t = 1.0 - 2.0 / (t + 2.0);
- }
- } else if w > 0x3fd058ae {
- /* |x| > log(5/3)/2 ~= 0.2554 */
- t = expm1(2.0 * x);
- t = t / (t + 2.0);
- } else if w >= 0x00100000 {
- /* |x| >= 0x1p-1022, up to 2ulp error in [0.1,0.2554] */
- t = expm1(-2.0 * x);
- t = -t / (t + 2.0);
- } else {
- /* |x| is subnormal */
- /* note: the branch above would not raise underflow in [0x1p-1023,0x1p-1022) */
- force_eval!(x as f32);
- t = x;
- }
-
- if sign {
- -t
- } else {
- t
- }
-}