Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(354)

Side by Side Diff: fusl/src/math/roundf.c

Issue 1714623002: [fusl] clang-format fusl (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: headers too Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #include "libm.h" 1 #include "libm.h"
2 2
3 #if FLT_EVAL_METHOD==0 3 #if FLT_EVAL_METHOD == 0
4 #define EPS FLT_EPSILON 4 #define EPS FLT_EPSILON
5 #elif FLT_EVAL_METHOD==1 5 #elif FLT_EVAL_METHOD == 1
6 #define EPS DBL_EPSILON 6 #define EPS DBL_EPSILON
7 #elif FLT_EVAL_METHOD==2 7 #elif FLT_EVAL_METHOD == 2
8 #define EPS LDBL_EPSILON 8 #define EPS LDBL_EPSILON
9 #endif 9 #endif
10 static const float_t toint = 1/EPS; 10 static const float_t toint = 1 / EPS;
11 11
12 float roundf(float x) 12 float roundf(float x) {
13 { 13 union {
14 » union {float f; uint32_t i;} u = {x}; 14 float f;
15 » int e = u.i >> 23 & 0xff; 15 uint32_t i;
16 » float_t y; 16 } u = {x};
17 int e = u.i >> 23 & 0xff;
18 float_t y;
17 19
18 » if (e >= 0x7f+23) 20 if (e >= 0x7f + 23)
19 » » return x; 21 return x;
20 » if (u.i >> 31) 22 if (u.i >> 31)
21 » » x = -x; 23 x = -x;
22 » if (e < 0x7f-1) { 24 if (e < 0x7f - 1) {
23 » » FORCE_EVAL(x + toint); 25 FORCE_EVAL(x + toint);
24 » » return 0*u.f; 26 return 0 * u.f;
25 » } 27 }
26 » y = x + toint - toint - x; 28 y = x + toint - toint - x;
27 » if (y > 0.5f) 29 if (y > 0.5f)
28 » » y = y + x - 1; 30 y = y + x - 1;
29 » else if (y <= -0.5f) 31 else if (y <= -0.5f)
30 » » y = y + x + 1; 32 y = y + x + 1;
31 » else 33 else
32 » » y = y + x; 34 y = y + x;
33 » if (u.i >> 31) 35 if (u.i >> 31)
34 » » y = -y; 36 y = -y;
35 » return y; 37 return y;
36 } 38 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698