source:
asp3_tinet_ecnl_arm/trunk/musl-1.1.18/src/math/ceilf.c@
387
Last change on this file since 387 was 352, checked in by , 6 years ago | |
---|---|
|
|
File size: 434 bytes |
Line | |
---|---|
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 | } |
Note:
See TracBrowser
for help on using the repository browser.