projects
/
oweals
/
musl.git
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
history
|
raw
|
HEAD
math: fix __fpclassifyl(-0.0) for IEEE binary128
[oweals/musl.git]
/
src
/
math
/
ceilf.c
1
#include "libm.h"
2
3
float ceilf(float x)
4
{
5
union {float f; uint32_t i;} u = {x};
6
int e = (int)(u.i >> 23 & 0xff) - 0x7f;
7
uint32_t m;
8
9
if (e >= 23)
10
return x;
11
if (e >= 0) {
12
m = 0x007fffff >> e;
13
if ((u.i & m) == 0)
14
return x;
15
FORCE_EVAL(x + 0x1p120f);
16
if (u.i >> 31 == 0)
17
u.i += m;
18
u.i &= ~m;
19
} else {
20
FORCE_EVAL(x + 0x1p120f);
21
if (u.i >> 31)
22
u.f = -0.0;
23
else if (u.i << 1)
24
u.f = 1.0;
25
}
26
return u.f;
27
}