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

Side by Side Diff: fusl/src/math/modfl.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 LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 3 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
4 long double modfl(long double x, long double *iptr) 4 long double modfl(long double x, long double* iptr) {
5 { 5 double d;
6 » double d; 6 long double r;
7 » long double r;
8 7
9 » r = modf(x, &d); 8 r = modf(x, &d);
10 » *iptr = d; 9 *iptr = d;
11 » return r; 10 return r;
12 } 11 }
13 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 12 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
14 13
15 static const long double toint = 1/LDBL_EPSILON; 14 static const long double toint = 1 / LDBL_EPSILON;
16 15
17 long double modfl(long double x, long double *iptr) 16 long double modfl(long double x, long double* iptr) {
18 { 17 union ldshape u = {x};
19 » union ldshape u = {x}; 18 int e = (u.i.se & 0x7fff) - 0x3fff;
20 » int e = (u.i.se & 0x7fff) - 0x3fff; 19 int s = u.i.se >> 15;
21 » int s = u.i.se >> 15; 20 long double absx;
22 » long double absx; 21 long double y;
23 » long double y;
24 22
25 » /* no fractional part */ 23 /* no fractional part */
26 » if (e >= LDBL_MANT_DIG-1) { 24 if (e >= LDBL_MANT_DIG - 1) {
27 » » *iptr = x; 25 *iptr = x;
28 » » if (isnan(x)) 26 if (isnan(x))
29 » » » return x; 27 return x;
30 » » return s ? -0.0 : 0.0; 28 return s ? -0.0 : 0.0;
31 » } 29 }
32 30
33 » /* no integral part*/ 31 /* no integral part*/
34 » if (e < 0) { 32 if (e < 0) {
35 » » *iptr = s ? -0.0 : 0.0; 33 *iptr = s ? -0.0 : 0.0;
36 » » return x; 34 return x;
37 » } 35 }
38 36
39 » /* raises spurious inexact */ 37 /* raises spurious inexact */
40 » absx = s ? -x : x; 38 absx = s ? -x : x;
41 » y = absx + toint - toint - absx; 39 y = absx + toint - toint - absx;
42 » if (y == 0) { 40 if (y == 0) {
43 » » *iptr = x; 41 *iptr = x;
44 » » return s ? -0.0 : 0.0; 42 return s ? -0.0 : 0.0;
45 » } 43 }
46 » if (y > 0) 44 if (y > 0)
47 » » y -= 1; 45 y -= 1;
48 » if (s) 46 if (s)
49 » » y = -y; 47 y = -y;
50 » *iptr = x + y; 48 *iptr = x + y;
51 » return -y; 49 return -y;
52 } 50 }
53 #endif 51 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698