projects
/
oweals
/
musl.git
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
history
|
raw
|
HEAD
add __sigsetjmp ABI-compat alias for sigsetjmp
[oweals/musl.git]
/
src
/
math
/
coshf.c
1
#include "libm.h"
2
3
float coshf(float x)
4
{
5
union {float f; uint32_t i;} u = {.f = x};
6
uint32_t w;
7
float t;
8
9
/* |x| */
10
u.i &= 0x7fffffff;
11
x = u.f;
12
w = u.i;
13
14
/* |x| < log(2) */
15
if (w < 0x3f317217) {
16
if (w < 0x3f800000 - (12<<23)) {
17
FORCE_EVAL(x + 0x1p120f);
18
return 1;
19
}
20
t = expm1f(x);
21
return 1 + t*t/(2*(1+t));
22
}
23
24
/* |x| < log(FLT_MAX) */
25
if (w < 0x42b17217) {
26
t = expf(x);
27
return 0.5f*(t + 1/t);
28
}
29
30
/* |x| > log(FLT_MAX) or nan */
31
t = __expo2f(x);
32
return t;
33
}