projects
/
musl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix failure of tempnam to null-terminate result
[musl]
/
src
/
math
/
tanhf.c
diff --git
a/src/math/tanhf.c
b/src/math/tanhf.c
index
8099ec3
..
10636fb
100644
(file)
--- a/
src/math/tanhf.c
+++ b/
src/math/tanhf.c
@@
-17,7
+17,7
@@
float tanhf(float x)
/* |x| > log(3)/2 ~= 0.5493 or nan */
if (w > 0x41200000) {
/* |x| > 10 */
/* |x| > log(3)/2 ~= 0.5493 or nan */
if (w > 0x41200000) {
/* |x| > 10 */
- t = 1 + 0/
(x + 0x1p-120f)
;
+ t = 1 + 0/
x
;
} else {
t = expm1f(2*x);
t = 1 - 2/(t+2);
} else {
t = expm1f(2*x);
t = 1 - 2/(t+2);
@@
-26,10
+26,14
@@
float tanhf(float x)
/* |x| > log(5/3)/2 ~= 0.2554 */
t = expm1f(2*x);
t = t/(t+2);
/* |x| > log(5/3)/2 ~= 0.2554 */
t = expm1f(2*x);
t = t/(t+2);
- } else {
- /* |x|
is small
*/
+ } else
if (w >= 0x00800000)
{
+ /* |x|
>= 0x1p-126
*/
t = expm1f(-2*x);
t = -t/(t+2);
t = expm1f(-2*x);
t = -t/(t+2);
+ } else {
+ /* |x| is subnormal */
+ FORCE_EVAL(x*x);
+ t = x;
}
return sign ? -t : t;
}
}
return sign ? -t : t;
}