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

Side by Side Diff: fusl/src/internal/libm.h

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 /* origin: FreeBSD /usr/src/lib/msun/src/math_private.h */ 1 /* origin: FreeBSD /usr/src/lib/msun/src/math_private.h */
2 /* 2 /*
3 * ==================================================== 3 * ====================================================
4 * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. 4 * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
5 * 5 *
6 * Developed at SunPro, a Sun Microsystems, Inc. business. 6 * Developed at SunPro, a Sun Microsystems, Inc. business.
7 * Permission to use, copy, modify, and distribute this 7 * Permission to use, copy, modify, and distribute this
8 * software is freely granted, provided that this notice 8 * software is freely granted, provided that this notice
9 * is preserved. 9 * is preserved.
10 * ==================================================== 10 * ====================================================
(...skipping 12 matching lines...) Expand all
23 * unlikely to be coming soon, but for reference the clang/llvm bug 23 * unlikely to be coming soon, but for reference the clang/llvm bug
24 * tracking this fact may be found at: 24 * tracking this fact may be found at:
25 * https://llvm.org/bugs/show_bug.cgi?id=8100 */ 25 * https://llvm.org/bugs/show_bug.cgi?id=8100 */
26 #ifdef __clang__ 26 #ifdef __clang__
27 #define PRAGMA_STDC_FENV_ACCESS_ON 27 #define PRAGMA_STDC_FENV_ACCESS_ON
28 #else 28 #else
29 #define PRAGMA_STDC_FENV_ACCESS_ON _Pragma("STDC FENV_ACCESS ON") 29 #define PRAGMA_STDC_FENV_ACCESS_ON _Pragma("STDC FENV_ACCESS ON")
30 #endif 30 #endif
31 31
32 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 32 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
33 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && __BYTE_ORDER == __LITTLE_E NDIAN 33 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && \
34 __BYTE_ORDER == __LITTLE_ENDIAN
34 union ldshape { 35 union ldshape {
35 » long double f; 36 long double f;
36 » struct { 37 struct {
37 » » uint64_t m; 38 uint64_t m;
38 » » uint16_t se; 39 uint16_t se;
39 » } i; 40 } i;
40 }; 41 };
41 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 && __BYTE_ORDER == __LITTLE_ ENDIAN 42 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 && \
43 __BYTE_ORDER == __LITTLE_ENDIAN
42 union ldshape { 44 union ldshape {
43 » long double f; 45 long double f;
44 » struct { 46 struct {
45 » » uint64_t lo; 47 uint64_t lo;
46 » » uint32_t mid; 48 uint32_t mid;
47 » » uint16_t top; 49 uint16_t top;
48 » » uint16_t se; 50 uint16_t se;
49 » } i; 51 } i;
50 » struct { 52 struct {
51 » » uint64_t lo; 53 uint64_t lo;
52 » » uint64_t hi; 54 uint64_t hi;
53 » } i2; 55 } i2;
54 }; 56 };
55 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 && __BYTE_ORDER == __BIG_END IAN 57 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 && \
58 __BYTE_ORDER == __BIG_ENDIAN
56 union ldshape { 59 union ldshape {
57 » long double f; 60 long double f;
58 » struct { 61 struct {
59 » » uint16_t se; 62 uint16_t se;
60 » » uint16_t top; 63 uint16_t top;
61 » » uint32_t mid; 64 uint32_t mid;
62 » » uint64_t lo; 65 uint64_t lo;
63 » } i; 66 } i;
64 » struct { 67 struct {
65 » » uint64_t hi; 68 uint64_t hi;
66 » » uint64_t lo; 69 uint64_t lo;
67 » } i2; 70 } i2;
68 }; 71 };
69 #else 72 #else
70 #error Unsupported long double representation 73 #error Unsupported long double representation
71 #endif 74 #endif
72 75
73 #define FORCE_EVAL(x) do { \ 76 #define FORCE_EVAL(x) \
74 » if (sizeof(x) == sizeof(float)) { \ 77 do { \
75 » » volatile float __x; \ 78 if (sizeof(x) == sizeof(float)) { \
76 » » __x = (x); \ 79 volatile float __x; \
77 » } else if (sizeof(x) == sizeof(double)) { \ 80 __x = (x); \
78 » » volatile double __x; \ 81 } else if (sizeof(x) == sizeof(double)) { \
79 » » __x = (x); \ 82 volatile double __x; \
80 » } else { \ 83 __x = (x); \
81 » » volatile long double __x; \ 84 } else { \
82 » » __x = (x); \ 85 volatile long double __x; \
83 » } \ 86 __x = (x); \
84 } while(0) 87 } \
88 } while (0)
85 89
86 /* Get two 32 bit ints from a double. */ 90 /* Get two 32 bit ints from a double. */
87 #define EXTRACT_WORDS(hi,lo,d) \ 91 #define EXTRACT_WORDS(hi, lo, d) \
88 do { \ 92 do { \
89 union {double f; uint64_t i;} __u; \ 93 union { \
90 __u.f = (d); \ 94 double f; \
91 (hi) = __u.i >> 32; \ 95 uint64_t i; \
92 (lo) = (uint32_t)__u.i; \ 96 } __u; \
93 } while (0) 97 __u.f = (d); \
98 (hi) = __u.i >> 32; \
99 (lo) = (uint32_t)__u.i; \
100 } while (0)
94 101
95 /* Get the more significant 32 bit int from a double. */ 102 /* Get the more significant 32 bit int from a double. */
96 #define GET_HIGH_WORD(hi,d) \ 103 #define GET_HIGH_WORD(hi, d) \
97 do { \ 104 do { \
98 union {double f; uint64_t i;} __u; \ 105 union { \
99 __u.f = (d); \ 106 double f; \
100 (hi) = __u.i >> 32; \ 107 uint64_t i; \
101 } while (0) 108 } __u; \
109 __u.f = (d); \
110 (hi) = __u.i >> 32; \
111 } while (0)
102 112
103 /* Get the less significant 32 bit int from a double. */ 113 /* Get the less significant 32 bit int from a double. */
104 #define GET_LOW_WORD(lo,d) \ 114 #define GET_LOW_WORD(lo, d) \
105 do { \ 115 do { \
106 union {double f; uint64_t i;} __u; \ 116 union { \
107 __u.f = (d); \ 117 double f; \
108 (lo) = (uint32_t)__u.i; \ 118 uint64_t i; \
109 } while (0) 119 } __u; \
120 __u.f = (d); \
121 (lo) = (uint32_t)__u.i; \
122 } while (0)
110 123
111 /* Set a double from two 32 bit ints. */ 124 /* Set a double from two 32 bit ints. */
112 #define INSERT_WORDS(d,hi,lo) \ 125 #define INSERT_WORDS(d, hi, lo) \
113 do { \ 126 do { \
114 union {double f; uint64_t i;} __u; \ 127 union { \
115 __u.i = ((uint64_t)(hi)<<32) | (uint32_t)(lo); \ 128 double f; \
116 (d) = __u.f; \ 129 uint64_t i; \
117 } while (0) 130 } __u; \
131 __u.i = ((uint64_t)(hi) << 32) | (uint32_t)(lo); \
132 (d) = __u.f; \
133 } while (0)
118 134
119 /* Set the more significant 32 bits of a double from an int. */ 135 /* Set the more significant 32 bits of a double from an int. */
120 #define SET_HIGH_WORD(d,hi) \ 136 #define SET_HIGH_WORD(d, hi) \
121 do { \ 137 do { \
122 union {double f; uint64_t i;} __u; \ 138 union { \
123 __u.f = (d); \ 139 double f; \
124 __u.i &= 0xffffffff; \ 140 uint64_t i; \
125 __u.i |= (uint64_t)(hi) << 32; \ 141 } __u; \
126 (d) = __u.f; \ 142 __u.f = (d); \
127 } while (0) 143 __u.i &= 0xffffffff; \
144 __u.i |= (uint64_t)(hi) << 32; \
145 (d) = __u.f; \
146 } while (0)
128 147
129 /* Set the less significant 32 bits of a double from an int. */ 148 /* Set the less significant 32 bits of a double from an int. */
130 #define SET_LOW_WORD(d,lo) \ 149 #define SET_LOW_WORD(d, lo) \
131 do { \ 150 do { \
132 union {double f; uint64_t i;} __u; \ 151 union { \
133 __u.f = (d); \ 152 double f; \
134 __u.i &= 0xffffffff00000000ull; \ 153 uint64_t i; \
135 __u.i |= (uint32_t)(lo); \ 154 } __u; \
136 (d) = __u.f; \ 155 __u.f = (d); \
137 } while (0) 156 __u.i &= 0xffffffff00000000ull; \
157 __u.i |= (uint32_t)(lo); \
158 (d) = __u.f; \
159 } while (0)
138 160
139 /* Get a 32 bit int from a float. */ 161 /* Get a 32 bit int from a float. */
140 #define GET_FLOAT_WORD(w,d) \ 162 #define GET_FLOAT_WORD(w, d) \
141 do { \ 163 do { \
142 union {float f; uint32_t i;} __u; \ 164 union { \
143 __u.f = (d); \ 165 float f; \
144 (w) = __u.i; \ 166 uint32_t i; \
145 } while (0) 167 } __u; \
168 __u.f = (d); \
169 (w) = __u.i; \
170 } while (0)
146 171
147 /* Set a float from a 32 bit int. */ 172 /* Set a float from a 32 bit int. */
148 #define SET_FLOAT_WORD(d,w) \ 173 #define SET_FLOAT_WORD(d, w) \
149 do { \ 174 do { \
150 union {float f; uint32_t i;} __u; \ 175 union { \
151 __u.i = (w); \ 176 float f; \
152 (d) = __u.f; \ 177 uint32_t i; \
153 } while (0) 178 } __u; \
179 __u.i = (w); \
180 (d) = __u.f; \
181 } while (0)
154 182
155 #undef __CMPLX 183 #undef __CMPLX
156 #undef CMPLX 184 #undef CMPLX
157 #undef CMPLXF 185 #undef CMPLXF
158 #undef CMPLXL 186 #undef CMPLXL
159 187
160 #define __CMPLX(x, y, t) \ 188 #define __CMPLX(x, y, t) \
161 » ((union { _Complex t __z; t __xy[2]; }){.__xy = {(x),(y)}}.__z) 189 ((union { \
190 _Complex t __z; \
191 t __xy[2]; \
192 }){.__xy = {(x), (y)}} \
193 .__z)
162 194
163 #define CMPLX(x, y) __CMPLX(x, y, double) 195 #define CMPLX(x, y) __CMPLX(x, y, double)
164 #define CMPLXF(x, y) __CMPLX(x, y, float) 196 #define CMPLXF(x, y) __CMPLX(x, y, float)
165 #define CMPLXL(x, y) __CMPLX(x, y, long double) 197 #define CMPLXL(x, y) __CMPLX(x, y, long double)
166 198
167 /* fdlibm kernel functions */ 199 /* fdlibm kernel functions */
168 200
169 int __rem_pio2_large(double*,double*,int,int,int); 201 int __rem_pio2_large(double*, double*, int, int, int);
170 202
171 int __rem_pio2(double,double*); 203 int __rem_pio2(double, double*);
172 double __sin(double,double,int); 204 double __sin(double, double, int);
173 double __cos(double,double); 205 double __cos(double, double);
174 double __tan(double,double,int); 206 double __tan(double, double, int);
175 double __expo2(double); 207 double __expo2(double);
176 double complex __ldexp_cexp(double complex,int); 208 double complex __ldexp_cexp(double complex, int);
177 209
178 int __rem_pio2f(float,double*); 210 int __rem_pio2f(float, double*);
179 float __sindf(double); 211 float __sindf(double);
180 float __cosdf(double); 212 float __cosdf(double);
181 float __tandf(double,int); 213 float __tandf(double, int);
182 float __expo2f(float); 214 float __expo2f(float);
183 float complex __ldexp_cexpf(float complex,int); 215 float complex __ldexp_cexpf(float complex, int);
184 216
185 int __rem_pio2l(long double, long double *); 217 int __rem_pio2l(long double, long double*);
186 long double __sinl(long double, long double, int); 218 long double __sinl(long double, long double, int);
187 long double __cosl(long double, long double); 219 long double __cosl(long double, long double);
188 long double __tanl(long double, long double, int); 220 long double __tanl(long double, long double, int);
189 221
190 /* polynomial evaluation */ 222 /* polynomial evaluation */
191 long double __polevll(long double, const long double *, int); 223 long double __polevll(long double, const long double*, int);
192 long double __p1evll(long double, const long double *, int); 224 long double __p1evll(long double, const long double*, int);
193 225
194 #endif 226 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698