diff options
Diffstat (limited to 'gl/math.h')
-rw-r--r-- | gl/math.h | 442 |
1 files changed, 442 insertions, 0 deletions
diff --git a/gl/math.h b/gl/math.h new file mode 100644 index 00000000..9db986e0 --- /dev/null +++ b/gl/math.h | |||
@@ -0,0 +1,442 @@ | |||
1 | /* DO NOT EDIT! GENERATED AUTOMATICALLY! */ | ||
2 | /* A GNU-like <math.h>. | ||
3 | |||
4 | Copyright (C) 2002-2003, 2007 Free Software Foundation, Inc. | ||
5 | |||
6 | This program is free software: you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 3 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program. If not, see <http://www.gnu.org/licenses/>. */ | ||
18 | |||
19 | #ifndef _GL_MATH_H | ||
20 | |||
21 | /* The include_next requires a split double-inclusion guard. */ | ||
22 | #include_next <math.h> | ||
23 | |||
24 | #ifndef _GL_MATH_H | ||
25 | #define _GL_MATH_H | ||
26 | |||
27 | |||
28 | /* The definition of GL_LINK_WARNING is copied here. */ | ||
29 | /* GL_LINK_WARNING("literal string") arranges to emit the literal string as | ||
30 | a linker warning on most glibc systems. | ||
31 | We use a linker warning rather than a preprocessor warning, because | ||
32 | #warning cannot be used inside macros. */ | ||
33 | #ifndef GL_LINK_WARNING | ||
34 | /* This works on platforms with GNU ld and ELF object format. | ||
35 | Testing __GLIBC__ is sufficient for asserting that GNU ld is in use. | ||
36 | Testing __ELF__ guarantees the ELF object format. | ||
37 | Testing __GNUC__ is necessary for the compound expression syntax. */ | ||
38 | # if defined __GLIBC__ && defined __ELF__ && defined __GNUC__ | ||
39 | # define GL_LINK_WARNING(message) \ | ||
40 | GL_LINK_WARNING1 (__FILE__, __LINE__, message) | ||
41 | # define GL_LINK_WARNING1(file, line, message) \ | ||
42 | GL_LINK_WARNING2 (file, line, message) /* macroexpand file and line */ | ||
43 | # define GL_LINK_WARNING2(file, line, message) \ | ||
44 | GL_LINK_WARNING3 (file ":" #line ": warning: " message) | ||
45 | # define GL_LINK_WARNING3(message) \ | ||
46 | ({ static const char warning[sizeof (message)] \ | ||
47 | __attribute__ ((__unused__, \ | ||
48 | __section__ (".gnu.warning"), \ | ||
49 | __aligned__ (1))) \ | ||
50 | = message "\n"; \ | ||
51 | (void)0; \ | ||
52 | }) | ||
53 | # else | ||
54 | # define GL_LINK_WARNING(message) ((void) 0) | ||
55 | # endif | ||
56 | #endif | ||
57 | |||
58 | |||
59 | #ifdef __cplusplus | ||
60 | extern "C" { | ||
61 | #endif | ||
62 | |||
63 | |||
64 | /* Write x as | ||
65 | x = mantissa * 2^exp | ||
66 | where | ||
67 | If x finite and nonzero: 0.5 <= |mantissa| < 1.0. | ||
68 | If x is zero: mantissa = x, exp = 0. | ||
69 | If x is infinite or NaN: mantissa = x, exp unspecified. | ||
70 | Store exp in *EXPPTR and return mantissa. */ | ||
71 | #if 0 | ||
72 | # if 0 | ||
73 | # define frexp rpl_frexp | ||
74 | extern double frexp (double x, int *expptr); | ||
75 | # endif | ||
76 | #elif defined GNULIB_POSIXCHECK | ||
77 | # undef frexp | ||
78 | # define frexp(x,e) \ | ||
79 | (GL_LINK_WARNING ("frexp is unportable - " \ | ||
80 | "use gnulib module frexp for portability"), \ | ||
81 | frexp (x, e)) | ||
82 | #endif | ||
83 | |||
84 | |||
85 | #if 0 || !1 | ||
86 | extern long double acosl (long double x); | ||
87 | #endif | ||
88 | #if !0 && defined GNULIB_POSIXCHECK | ||
89 | # undef acosl | ||
90 | # define acosl(x) \ | ||
91 | (GL_LINK_WARNING ("acosl is unportable - " \ | ||
92 | "use gnulib module mathl for portability"), \ | ||
93 | acosl (x)) | ||
94 | #endif | ||
95 | |||
96 | |||
97 | #if 0 || !1 | ||
98 | extern long double asinl (long double x); | ||
99 | #endif | ||
100 | #if !0 && defined GNULIB_POSIXCHECK | ||
101 | # undef asinl | ||
102 | # define asinl(x) \ | ||
103 | (GL_LINK_WARNING ("asinl is unportable - " \ | ||
104 | "use gnulib module mathl for portability"), \ | ||
105 | asinl (x)) | ||
106 | #endif | ||
107 | |||
108 | |||
109 | #if 0 || !1 | ||
110 | extern long double atanl (long double x); | ||
111 | #endif | ||
112 | #if !0 && defined GNULIB_POSIXCHECK | ||
113 | # undef atanl | ||
114 | # define atanl(x) \ | ||
115 | (GL_LINK_WARNING ("atanl is unportable - " \ | ||
116 | "use gnulib module mathl for portability"), \ | ||
117 | atanl (x)) | ||
118 | #endif | ||
119 | |||
120 | |||
121 | #if 0 | ||
122 | # if 0 | ||
123 | # define ceilf rpl_ceilf | ||
124 | extern float ceilf (float x); | ||
125 | # endif | ||
126 | #elif defined GNULIB_POSIXCHECK | ||
127 | # undef ceilf | ||
128 | # define ceilf(x) \ | ||
129 | (GL_LINK_WARNING ("ceilf is unportable - " \ | ||
130 | "use gnulib module ceilf for portability"), \ | ||
131 | ceilf (x)) | ||
132 | #endif | ||
133 | |||
134 | #if 0 | ||
135 | # if 0 | ||
136 | # define ceill rpl_ceill | ||
137 | extern long double ceill (long double x); | ||
138 | # endif | ||
139 | #elif defined GNULIB_POSIXCHECK | ||
140 | # undef ceill | ||
141 | # define ceill(x) \ | ||
142 | (GL_LINK_WARNING ("ceill is unportable - " \ | ||
143 | "use gnulib module ceill for portability"), \ | ||
144 | ceill (x)) | ||
145 | #endif | ||
146 | |||
147 | |||
148 | #if 0 || !1 | ||
149 | extern long double cosl (long double x); | ||
150 | #endif | ||
151 | #if !0 && defined GNULIB_POSIXCHECK | ||
152 | # undef cosl | ||
153 | # define cosl(x) \ | ||
154 | (GL_LINK_WARNING ("cosl is unportable - " \ | ||
155 | "use gnulib module mathl for portability"), \ | ||
156 | cosl (x)) | ||
157 | #endif | ||
158 | |||
159 | |||
160 | #if 0 || !1 | ||
161 | extern long double expl (long double x); | ||
162 | #endif | ||
163 | #if !0 && defined GNULIB_POSIXCHECK | ||
164 | # undef expl | ||
165 | # define expl(x) \ | ||
166 | (GL_LINK_WARNING ("expl is unportable - " \ | ||
167 | "use gnulib module mathl for portability"), \ | ||
168 | expl (x)) | ||
169 | #endif | ||
170 | |||
171 | |||
172 | #if 1 | ||
173 | # if 0 | ||
174 | # define floorf rpl_floorf | ||
175 | extern float floorf (float x); | ||
176 | # endif | ||
177 | #elif defined GNULIB_POSIXCHECK | ||
178 | # undef floorf | ||
179 | # define floorf(x) \ | ||
180 | (GL_LINK_WARNING ("floorf is unportable - " \ | ||
181 | "use gnulib module floorf for portability"), \ | ||
182 | floorf (x)) | ||
183 | #endif | ||
184 | |||
185 | #if 0 | ||
186 | # if 0 | ||
187 | # define floorl rpl_floorl | ||
188 | extern long double floorl (long double x); | ||
189 | # endif | ||
190 | #elif defined GNULIB_POSIXCHECK | ||
191 | # undef floorl | ||
192 | # define floorl(x) \ | ||
193 | (GL_LINK_WARNING ("floorl is unportable - " \ | ||
194 | "use gnulib module floorl for portability"), \ | ||
195 | floorl (x)) | ||
196 | #endif | ||
197 | |||
198 | |||
199 | /* Write x as | ||
200 | x = mantissa * 2^exp | ||
201 | where | ||
202 | If x finite and nonzero: 0.5 <= |mantissa| < 1.0. | ||
203 | If x is zero: mantissa = x, exp = 0. | ||
204 | If x is infinite or NaN: mantissa = x, exp unspecified. | ||
205 | Store exp in *EXPPTR and return mantissa. */ | ||
206 | #if 0 && 0 | ||
207 | # define frexpl rpl_frexpl | ||
208 | #endif | ||
209 | #if (0 && 0) || !1 | ||
210 | extern long double frexpl (long double x, int *expptr); | ||
211 | #endif | ||
212 | #if !0 && defined GNULIB_POSIXCHECK | ||
213 | # undef frexpl | ||
214 | # define frexpl(x,e) \ | ||
215 | (GL_LINK_WARNING ("frexpl is unportable - " \ | ||
216 | "use gnulib module frexpl for portability"), \ | ||
217 | frexpl (x, e)) | ||
218 | #endif | ||
219 | |||
220 | |||
221 | /* Return x * 2^exp. */ | ||
222 | #if 0 && 0 | ||
223 | # define ldexpl rpl_ldexpl | ||
224 | #endif | ||
225 | #if (0 && 0) || !1 | ||
226 | extern long double ldexpl (long double x, int exp); | ||
227 | #endif | ||
228 | #if !0 && defined GNULIB_POSIXCHECK | ||
229 | # undef ldexpl | ||
230 | # define ldexpl(x,e) \ | ||
231 | (GL_LINK_WARNING ("ldexpl is unportable - " \ | ||
232 | "use gnulib module ldexpl for portability"), \ | ||
233 | ldexpl (x, e)) | ||
234 | #endif | ||
235 | |||
236 | |||
237 | #if 0 || !1 | ||
238 | extern long double logl (long double x); | ||
239 | #endif | ||
240 | #if !0 && defined GNULIB_POSIXCHECK | ||
241 | # undef logl | ||
242 | # define logl(x) \ | ||
243 | (GL_LINK_WARNING ("logl is unportable - " \ | ||
244 | "use gnulib module mathl for portability"), \ | ||
245 | logl (x)) | ||
246 | #endif | ||
247 | |||
248 | |||
249 | #if 0 | ||
250 | # if 0 | ||
251 | # undef roundf | ||
252 | # define roundf rpl_roundf | ||
253 | extern float roundf (float x); | ||
254 | # endif | ||
255 | #elif defined GNULIB_POSIXCHECK | ||
256 | # undef roundf | ||
257 | # define roundf(x) \ | ||
258 | (GL_LINK_WARNING ("roundf is unportable - " \ | ||
259 | "use gnulib module roundf for portability"), \ | ||
260 | roundf (x)) | ||
261 | #endif | ||
262 | |||
263 | #if 0 | ||
264 | # if 0 | ||
265 | # undef round | ||
266 | # define round rpl_round | ||
267 | extern double round (double x); | ||
268 | # endif | ||
269 | #elif defined GNULIB_POSIXCHECK | ||
270 | # undef round | ||
271 | # define round(x) \ | ||
272 | (GL_LINK_WARNING ("round is unportable - " \ | ||
273 | "use gnulib module round for portability"), \ | ||
274 | round (x)) | ||
275 | #endif | ||
276 | |||
277 | #if 0 | ||
278 | # if 0 | ||
279 | # undef roundl | ||
280 | # define roundl rpl_roundl | ||
281 | extern long double roundl (long double x); | ||
282 | # endif | ||
283 | #elif defined GNULIB_POSIXCHECK | ||
284 | # undef roundl | ||
285 | # define roundl(x) \ | ||
286 | (GL_LINK_WARNING ("roundl is unportable - " \ | ||
287 | "use gnulib module roundl for portability"), \ | ||
288 | roundl (x)) | ||
289 | #endif | ||
290 | |||
291 | |||
292 | #if 0 || !1 | ||
293 | extern long double sinl (long double x); | ||
294 | #endif | ||
295 | #if !0 && defined GNULIB_POSIXCHECK | ||
296 | # undef sinl | ||
297 | # define sinl(x) \ | ||
298 | (GL_LINK_WARNING ("sinl is unportable - " \ | ||
299 | "use gnulib module mathl for portability"), \ | ||
300 | sinl (x)) | ||
301 | #endif | ||
302 | |||
303 | |||
304 | #if 0 || !1 | ||
305 | extern long double sqrtl (long double x); | ||
306 | #endif | ||
307 | #if !0 && defined GNULIB_POSIXCHECK | ||
308 | # undef sqrtl | ||
309 | # define sqrtl(x) \ | ||
310 | (GL_LINK_WARNING ("sqrtl is unportable - " \ | ||
311 | "use gnulib module mathl for portability"), \ | ||
312 | sqrtl (x)) | ||
313 | #endif | ||
314 | |||
315 | |||
316 | #if 0 || !1 | ||
317 | extern long double tanl (long double x); | ||
318 | #endif | ||
319 | #if !0 && defined GNULIB_POSIXCHECK | ||
320 | # undef tanl | ||
321 | # define tanl(x) \ | ||
322 | (GL_LINK_WARNING ("tanl is unportable - " \ | ||
323 | "use gnulib module mathl for portability"), \ | ||
324 | tanl (x)) | ||
325 | #endif | ||
326 | |||
327 | |||
328 | #if 0 | ||
329 | # if !1 | ||
330 | # define truncf rpl_truncf | ||
331 | extern float truncf (float x); | ||
332 | # endif | ||
333 | #elif defined GNULIB_POSIXCHECK | ||
334 | # undef truncf | ||
335 | # define truncf(x) \ | ||
336 | (GL_LINK_WARNING ("truncf is unportable - " \ | ||
337 | "use gnulib module truncf for portability"), \ | ||
338 | truncf (x)) | ||
339 | #endif | ||
340 | |||
341 | #if 0 | ||
342 | # if !1 | ||
343 | # define trunc rpl_trunc | ||
344 | extern double trunc (double x); | ||
345 | # endif | ||
346 | #elif defined GNULIB_POSIXCHECK | ||
347 | # undef trunc | ||
348 | # define trunc(x) \ | ||
349 | (GL_LINK_WARNING ("trunc is unportable - " \ | ||
350 | "use gnulib module trunc for portability"), \ | ||
351 | trunc (x)) | ||
352 | #endif | ||
353 | |||
354 | #if 0 | ||
355 | # if !1 | ||
356 | # define truncl rpl_truncl | ||
357 | extern long double truncl (long double x); | ||
358 | # endif | ||
359 | #elif defined GNULIB_POSIXCHECK | ||
360 | # undef truncl | ||
361 | # define truncl(x) \ | ||
362 | (GL_LINK_WARNING ("truncl is unportable - " \ | ||
363 | "use gnulib module truncl for portability"), \ | ||
364 | truncl (x)) | ||
365 | #endif | ||
366 | |||
367 | |||
368 | #if 0 | ||
369 | # if 0 | ||
370 | extern int gl_isfinitef (float x); | ||
371 | extern int gl_isfinited (double x); | ||
372 | extern int gl_isfinitel (long double x); | ||
373 | # undef isfinite | ||
374 | # define isfinite(x) \ | ||
375 | (sizeof (x) == sizeof (long double) ? gl_isfinitel (x) : \ | ||
376 | sizeof (x) == sizeof (double) ? gl_isfinited (x) : \ | ||
377 | gl_isfinitef (x)) | ||
378 | # endif | ||
379 | #elif defined GNULIB_POSIXCHECK | ||
380 | /* How to override a macro? */ | ||
381 | #endif | ||
382 | |||
383 | |||
384 | #if 0 | ||
385 | # if 0 | ||
386 | # undef signbit | ||
387 | /* GCC 4.0 and newer provides three built-ins for signbit. */ | ||
388 | # define signbit(x) \ | ||
389 | (sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \ | ||
390 | sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \ | ||
391 | __builtin_signbitf (x)) | ||
392 | # endif | ||
393 | # if 0 | ||
394 | # undef signbit | ||
395 | extern int gl_signbitf (float arg); | ||
396 | extern int gl_signbitd (double arg); | ||
397 | extern int gl_signbitl (long double arg); | ||
398 | # if __GNUC__ >= 2 && !__STRICT_ANSI__ | ||
399 | # if defined FLT_SIGNBIT_WORD && defined FLT_SIGNBIT_BIT | ||
400 | # define gl_signbitf(arg) \ | ||
401 | ({ union { float _value; \ | ||
402 | unsigned int _word[(sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)]; \ | ||
403 | } _m; \ | ||
404 | _m._value = (arg); \ | ||
405 | (_m._word[FLT_SIGNBIT_WORD] >> FLT_SIGNBIT_BIT) & 1; \ | ||
406 | }) | ||
407 | # endif | ||
408 | # if defined DBL_SIGNBIT_WORD && defined DBL_SIGNBIT_BIT | ||
409 | # define gl_signbitd(arg) \ | ||
410 | ({ union { double _value; \ | ||
411 | unsigned int _word[(sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)]; \ | ||
412 | } _m; \ | ||
413 | _m._value = (arg); \ | ||
414 | (_m._word[DBL_SIGNBIT_WORD] >> DBL_SIGNBIT_BIT) & 1; \ | ||
415 | }) | ||
416 | # endif | ||
417 | # if defined LDBL_SIGNBIT_WORD && defined LDBL_SIGNBIT_BIT | ||
418 | # define gl_signbitl(arg) \ | ||
419 | ({ union { long double _value; \ | ||
420 | unsigned int _word[(sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)]; \ | ||
421 | } _m; \ | ||
422 | _m._value = (arg); \ | ||
423 | (_m._word[LDBL_SIGNBIT_WORD] >> LDBL_SIGNBIT_BIT) & 1; \ | ||
424 | }) | ||
425 | # endif | ||
426 | # endif | ||
427 | # define signbit(x) \ | ||
428 | (sizeof (x) == sizeof (long double) ? gl_signbitl (x) : \ | ||
429 | sizeof (x) == sizeof (double) ? gl_signbitd (x) : \ | ||
430 | gl_signbitf (x)) | ||
431 | # endif | ||
432 | #elif defined GNULIB_POSIXCHECK | ||
433 | /* How to override a macro? */ | ||
434 | #endif | ||
435 | |||
436 | |||
437 | #ifdef __cplusplus | ||
438 | } | ||
439 | #endif | ||
440 | |||
441 | #endif /* _GL_MATH_H */ | ||
442 | #endif /* _GL_MATH_H */ | ||