summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/libm_dbl/tanh.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/libm_dbl/tanh.c b/lib/libm_dbl/tanh.c
index 89743ba90..6bdb7c399 100644
--- a/lib/libm_dbl/tanh.c
+++ b/lib/libm_dbl/tanh.c
@@ -1,5 +1,12 @@
#include <math.h>
double tanh(double x) {
- return sinh(x) / cosh(x);
+ int sign = 0;
+ if (x < 0) {
+ sign = 1;
+ x = -x;
+ }
+ x = expm1(-2 * x);
+ x = x / (x + 2);
+ return sign ? x : -x;
}