ReactOS 0.4.15-dev-8119-g4fb2fdb
mingw_math.h
Go to the documentation of this file.
1
2#ifndef __GNUC__
3#error This file should be included only with GCC compiler
4#endif
5
6#ifndef __NO_ISOCEXT
7#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
8 || !defined __STRICT_ANSI__ || defined __cplusplus
9
10#if __MINGW_GNUC_PREREQ(3, 3)
11#define HUGE_VALF __builtin_huge_valf()
12#define HUGE_VALL __builtin_huge_vall()
13#define INFINITY __builtin_inf()
14#define NAN __builtin_nan("")
15#else
16extern const float __INFF;
17#define HUGE_VALF __INFF
18extern const long double __INFL;
19#define HUGE_VALL __INFL
20#define INFINITY HUGE_VALF
21extern const double __QNAN;
22#define NAN __QNAN
23#endif /* __MINGW_GNUC_PREREQ(3, 3) */
24
25/* Use the compiler's builtin define for FLT_EVAL_METHOD to
26 set float_t and double_t. */
27#if defined(__FLT_EVAL_METHOD__)
28# if ( __FLT_EVAL_METHOD__== 0)
29typedef float float_t;
30typedef double double_t;
31# elif (__FLT_EVAL_METHOD__ == 1)
32typedef double float_t;
33typedef double double_t;
34# elif (__FLT_EVAL_METHOD__ == 2)
35typedef long double float_t;
36typedef long double double_t;
37#endif
38#else /* ix87 FPU default */
39typedef long double float_t;
40typedef long double double_t;
41#endif
42
43/* 7.12.3.1 */
44/*
45 Return values for fpclassify.
46 These are based on Intel x87 fpu condition codes
47 in the high byte of status word and differ from
48 the return values for MS IEEE 754 extension _fpclass()
49*/
50#define FP_NAN 0x0100
51#define FP_NORMAL 0x0400
52#define FP_INFINITE (FP_NAN | FP_NORMAL)
53#define FP_ZERO 0x4000
54#define FP_SUBNORMAL (FP_NORMAL | FP_ZERO)
55/* 0x0200 is signbit mask */
56
57/*
58 We can't inline float or double, because we want to ensure truncation
59 to semantic type before classification.
60 (A normal long double value might become subnormal when
61 converted to double, and zero when converted to float.)
62*/
63
64 extern int __cdecl __fpclassifyl (long double);
65 extern int __cdecl __fpclassifyf (float);
66 extern int __cdecl __fpclassify (double);
67
68#ifndef __CRT__NO_INLINE
69 __CRT_INLINE int __cdecl __fpclassifyl (long double x) {
70 unsigned short sw;
71 __asm__ __volatile__ ("fxam; fstsw %%ax;" : "=a" (sw): "t" (x));
72 return sw & (FP_NAN | FP_NORMAL | FP_ZERO );
73 }
74 __CRT_INLINE int __cdecl __fpclassify (double x) {
75 unsigned short sw;
76 __asm__ __volatile__ ("fxam; fstsw %%ax;" : "=a" (sw): "t" (x));
77 return sw & (FP_NAN | FP_NORMAL | FP_ZERO );
78 }
79 __CRT_INLINE int __cdecl __fpclassifyf (float x) {
80 unsigned short sw;
81 __asm__ __volatile__ ("fxam; fstsw %%ax;" : "=a" (sw): "t" (x));
82 return sw & (FP_NAN | FP_NORMAL | FP_ZERO );
83 }
84#endif
85
86#define fpclassify(x) (sizeof (x) == sizeof (float) ? __fpclassifyf (x) \
87 : sizeof (x) == sizeof (double) ? __fpclassify (x) \
88 : __fpclassifyl (x))
89
90/* 7.12.3.2 */
91#define isfinite(x) ((fpclassify(x) & FP_NAN) == 0)
92
93/* 7.12.3.3 */
94#define isinf(x) (fpclassify(x) == FP_INFINITE)
95
96/* 7.12.3.4 */
97/* We don't need to worry about truncation here:
98 A NaN stays a NaN. */
99
100 extern int __cdecl __isnan (double);
101 extern int __cdecl __isnanf (float);
102 extern int __cdecl __isnanl (long double);
103
104#ifndef __CRT__NO_INLINE
105 __CRT_INLINE int __cdecl __isnan (double _x)
106 {
107 unsigned short sw;
108 __asm__ __volatile__ ("fxam;"
109 "fstsw %%ax": "=a" (sw) : "t" (_x));
110 return (sw & (FP_NAN | FP_NORMAL | FP_INFINITE | FP_ZERO | FP_SUBNORMAL))
111 == FP_NAN;
112 }
113
114 __CRT_INLINE int __cdecl __isnanf (float _x)
115 {
116 unsigned short sw;
117 __asm__ __volatile__ ("fxam;"
118 "fstsw %%ax": "=a" (sw) : "t" (_x));
119 return (sw & (FP_NAN | FP_NORMAL | FP_INFINITE | FP_ZERO | FP_SUBNORMAL))
120 == FP_NAN;
121 }
122
123 __CRT_INLINE int __cdecl __isnanl (long double _x)
124 {
125 unsigned short sw;
126 __asm__ __volatile__ ("fxam;"
127 "fstsw %%ax": "=a" (sw) : "t" (_x));
128 return (sw & (FP_NAN | FP_NORMAL | FP_INFINITE | FP_ZERO | FP_SUBNORMAL))
129 == FP_NAN;
130 }
131#endif
132
133#define isnan(x) (sizeof (x) == sizeof (float) ? __isnanf (x) \
134 : sizeof (x) == sizeof (double) ? __isnan (x) \
135 : __isnanl (x))
136
137/* 7.12.3.5 */
138#define isnormal(x) (fpclassify(x) == FP_NORMAL)
139
140/* 7.12.3.6 The signbit macro */
141 extern int __cdecl __signbit (double);
142 extern int __cdecl __signbitf (float);
143 extern int __cdecl __signbitl (long double);
144#ifndef __CRT__NO_INLINE
145 __CRT_INLINE int __cdecl __signbit (double x) {
146 unsigned short stw;
147 __asm__ __volatile__ ( "fxam; fstsw %%ax;": "=a" (stw) : "t" (x));
148 return stw & 0x0200;
149 }
150
151 __CRT_INLINE int __cdecl __signbitf (float x) {
152 unsigned short stw;
153 __asm__ __volatile__ ("fxam; fstsw %%ax;": "=a" (stw) : "t" (x));
154 return stw & 0x0200;
155 }
156
157 __CRT_INLINE int __cdecl __signbitl (long double x) {
158 unsigned short stw;
159 __asm__ __volatile__ ("fxam; fstsw %%ax;": "=a" (stw) : "t" (x));
160 return stw & 0x0200;
161 }
162#endif
163
164#define signbit(x) (sizeof (x) == sizeof (float) ? __signbitf (x) \
165 : sizeof (x) == sizeof (double) ? __signbit (x) \
166 : __signbitl (x))
167
168/* 7.12.4 Trigonometric functions: Double in C89 */
169 // Already in math.h
170
171/* 7.12.5 Hyperbolic functions: Double in C89 */
172 // Already in math.h
173
174/* Inverse hyperbolic trig functions */
175/* 7.12.5.1 */
176 extern double __cdecl acosh (double);
177 extern float __cdecl acoshf (float);
178 extern long double __cdecl acoshl (long double);
179
180/* 7.12.5.2 */
181 extern double __cdecl asinh (double);
182 extern float __cdecl asinhf (float);
183 extern long double __cdecl asinhl (long double);
184
185/* 7.12.5.3 */
186 extern double __cdecl atanh (double);
187 extern float __cdecl atanhf (float);
188 extern long double __cdecl atanhl (long double);
189
190/* Exponentials and logarithms */
191/* 7.12.6.1 Double in C89 */
192 // exp functions. Already in math.h
193
194/* 7.12.6.2 */
195 extern double __cdecl exp2(double);
196 extern float __cdecl exp2f(float);
197 extern long double __cdecl exp2l(long double);
198
199/* 7.12.6.3 The expm1 functions */
200/* TODO: These could be inlined */
201 extern double __cdecl expm1(double);
202 extern float __cdecl expm1f(float);
203 extern long double __cdecl expm1l(long double);
204
205/* 7.12.6.4 Double in C89 */
206 // frexp functions. Already in math.h
207
208/* 7.12.6.5 */
209#define FP_ILOGB0 ((int)0x80000000)
210#define FP_ILOGBNAN ((int)0x80000000)
211 extern int __cdecl ilogb (double);
212 extern int __cdecl ilogbf (float);
213 extern int __cdecl ilogbl (long double);
214
215/* 7.12.6.6 Double in C89 */
216 // ldexp functions. Already in math.h
217
218/* 7.12.6.7 Double in C89 */
219 // log functions. Already in math.h
220
221/* 7.12.6.8 Double in C89 */
222 // log10 functions. Already in math.h
223
224/* 7.12.6.9 */
225 extern double __cdecl log1p(double);
226 extern float __cdecl log1pf(float);
227 extern long double __cdecl log1pl(long double);
228
229/* 7.12.6.10 */
230 extern double __cdecl log2 (double);
231 extern float __cdecl log2f (float);
232 extern long double __cdecl log2l (long double);
233
234/* 7.12.6.11 */
235 extern double __cdecl logb (double);
236 extern float __cdecl logbf (float);
237 extern long double __cdecl logbl (long double);
238
239/* Inline versions. GCC-4.0+ can do a better fast-math optimization
240 with __builtins. */
241#ifndef __CRT__NO_INLINE
242#if !(__MINGW_GNUC_PREREQ (4, 0) && defined (__FAST_MATH__))
243 __CRT_INLINE double __cdecl logb (double x)
244 {
245 double res = 0.0;
246 __asm__ __volatile__ ("fxtract\n\t"
247 "fstp %%st" : "=t" (res) : "0" (x));
248 return res;
249 }
250
251 __CRT_INLINE float __cdecl logbf (float x)
252 {
253 float res = 0.0F;
254 __asm__ __volatile__ ("fxtract\n\t"
255 "fstp %%st" : "=t" (res) : "0" (x));
256 return res;
257 }
258
259 __CRT_INLINE long double __cdecl logbl (long double x)
260 {
261 long double res = 0.0l;
262 __asm__ __volatile__ ("fxtract\n\t"
263 "fstp %%st" : "=t" (res) : "0" (x));
264 return res;
265 }
266#endif /* !defined __FAST_MATH__ || !__MINGW_GNUC_PREREQ (4, 0) */
267#endif /* __CRT__NO_INLINE */
268
269/* 7.12.6.12 Double in C89 */
270 // modf functions. Already in math.h
271
272/* 7.12.6.13 */
273 extern double __cdecl scalbn (double, int);
274 extern float __cdecl scalbnf (float, int);
275 extern long double __cdecl scalbnl (long double, int);
276
277 extern double __cdecl scalbln (double, long);
278 extern float __cdecl scalblnf (float, long);
279 extern long double __cdecl scalblnl (long double, long);
280
281/* 7.12.7.1 */
282/* Implementations adapted from Cephes versions */
283 extern double __cdecl cbrt (double);
284 extern float __cdecl cbrtf (float);
285 extern long double __cdecl cbrtl (long double);
286
287/* 7.12.7.2 The fabs functions: Double in C89 */
288 // Already in math.h
289
290/* 7.12.7.3 */
291 // hypot functions. Already in math.h
292
293/* 7.12.7.4 The pow functions. Double in C89 */
294 // Already in math.h
295
296/* 7.12.7.5 The sqrt functions. Double in C89. */
297 // Already in math.h
298
299/* 7.12.8.1 The erf functions */
300 extern double __cdecl erf (double);
301 extern float __cdecl erff (float);
302 extern long double __cdecl erfl (long double);
303
304/* 7.12.8.2 The erfc functions */
305 extern double __cdecl erfc (double);
306 extern float __cdecl erfcf (float);
307 extern long double __cdecl erfcl (long double);
308
309/* 7.12.8.3 The lgamma functions */
310 extern double __cdecl lgamma (double);
311 extern float __cdecl lgammaf (float);
312 extern long double __cdecl lgammal (long double);
313
314/* 7.12.8.4 The tgamma functions */
315 extern double __cdecl tgamma (double);
316 extern float __cdecl tgammaf (float);
317 extern long double __cdecl tgammal (long double);
318
319/* 7.12.9.1 Double in C89 */
320 // ceil functions. Already in math.h
321
322/* 7.12.9.2 Double in C89 */
323 // floor functions. Already in math.h
324
325/* 7.12.9.3 */
326 extern double __cdecl nearbyint ( double);
327 extern float __cdecl nearbyintf (float);
328 extern long double __cdecl nearbyintl (long double);
329
330/* 7.12.9.4 */
331/* round, using fpu control word settings */
332extern double __cdecl rint (double);
333extern float __cdecl rintf (float);
334extern long double __cdecl rintl (long double);
335
336/* 7.12.9.5 */
337extern long __cdecl lrint (double);
338extern long __cdecl lrintf (float);
339extern long __cdecl lrintl (long double);
340
341__MINGW_EXTENSION long long __cdecl llrint (double);
342__MINGW_EXTENSION long long __cdecl llrintf (float);
343__MINGW_EXTENSION long long __cdecl llrintl (long double);
344
345/* Inline versions of above.
346 GCC 4.0+ can do a better fast-math job with __builtins. */
347
348#ifndef __CRT__NO_INLINE
349#if !(__MINGW_GNUC_PREREQ (4, 0) && defined __FAST_MATH__ )
350 __CRT_INLINE double __cdecl rint (double x)
351 {
352 double retval = 0.0;
353 __asm__ __volatile__ ("frndint;": "=t" (retval) : "0" (x));
354 return retval;
355 }
356
357 __CRT_INLINE float __cdecl rintf (float x)
358 {
359 float retval = 0.0;
360 __asm__ __volatile__ ("frndint;" : "=t" (retval) : "0" (x) );
361 return retval;
362 }
363
364 __CRT_INLINE long double __cdecl rintl (long double x)
365 {
366 long double retval = 0.0l;
367 __asm__ __volatile__ ("frndint;" : "=t" (retval) : "0" (x) );
368 return retval;
369 }
370
371 __CRT_INLINE long __cdecl lrint (double x)
372 {
373 long retval = 0;
374 __asm__ __volatile__ \
375 ("fistpl %0" : "=m" (retval) : "t" (x) : "st"); \
376 return retval;
377 }
378
379 __CRT_INLINE long __cdecl lrintf (float x)
380 {
381 long retval = 0;
382 __asm__ __volatile__ \
383 ("fistpl %0" : "=m" (retval) : "t" (x) : "st"); \
384 return retval;
385 }
386
387 __CRT_INLINE long __cdecl lrintl (long double x)
388 {
389 long retval = 0;
390 __asm__ __volatile__ \
391 ("fistpl %0" : "=m" (retval) : "t" (x) : "st"); \
392 return retval;
393 }
394
395 __MINGW_EXTENSION __CRT_INLINE long long __cdecl llrint (double x)
396 {
397 __MINGW_EXTENSION long long retval = 0ll;
398 __asm__ __volatile__ \
399 ("fistpll %0" : "=m" (retval) : "t" (x) : "st"); \
400 return retval;
401 }
402
403 __MINGW_EXTENSION __CRT_INLINE long long __cdecl llrintf (float x)
404 {
405 __MINGW_EXTENSION long long retval = 0ll;
406 __asm__ __volatile__ \
407 ("fistpll %0" : "=m" (retval) : "t" (x) : "st"); \
408 return retval;
409 }
410
411 __MINGW_EXTENSION __CRT_INLINE long long __cdecl llrintl (long double x)
412 {
413 __MINGW_EXTENSION long long retval = 0ll;
414 __asm__ __volatile__ \
415 ("fistpll %0" : "=m" (retval) : "t" (x) : "st"); \
416 return retval;
417 }
418#endif /* !__FAST_MATH__ || !__MINGW_GNUC_PREREQ (4,0) */
419#endif /* !__CRT__NO_INLINE */
420
421/* 7.12.9.6 */
422/* round away from zero, regardless of fpu control word settings */
423 extern double __cdecl round (double);
424 extern float __cdecl roundf (float);
425 extern long double __cdecl roundl (long double);
426
427/* 7.12.9.7 */
428 extern long __cdecl lround (double);
429 extern long __cdecl lroundf (float);
430 extern long __cdecl lroundl (long double);
433 __MINGW_EXTENSION long long __cdecl llroundl (long double);
434
435/* 7.12.9.8 */
436/* round towards zero, regardless of fpu control word settings */
437 extern double __cdecl trunc (double);
438 extern float __cdecl truncf (float);
439 extern long double __cdecl truncl (long double);
440
441/* 7.12.10.1 Double in C89 */
442 // fmod functions. Already in math.h
443
444/* 7.12.10.2 */
445 extern double __cdecl remainder (double, double);
446 extern float __cdecl remainderf (float, float);
447 extern long double __cdecl remainderl (long double, long double);
448
449/* 7.12.10.3 */
450 extern double __cdecl remquo(double, double, int *);
451 extern float __cdecl remquof(float, float, int *);
452 extern long double __cdecl remquol(long double, long double, int *);
453
454/* 7.12.11.1 */
455 extern double __cdecl copysign (double, double); /* in libmoldname.a */
456 extern float __cdecl copysignf (float, float);
457 extern long double __cdecl copysignl (long double, long double);
458
459/* 7.12.11.2 Return a NaN */
460 extern double __cdecl nan(const char *tagp);
461 extern float __cdecl nanf(const char *tagp);
462 extern long double __cdecl nanl(const char *tagp);
463
464#ifndef __STRICT_ANSI__
465#define _nan() nan("")
466#define _nanf() nanf("")
467#define _nanl() nanl("")
468#endif
469
470/* 7.12.11.3 */
471 extern double __cdecl nextafter (double, double); /* in libmoldname.a */
472 extern float __cdecl nextafterf (float, float);
473 extern long double __cdecl nextafterl (long double, long double);
474
475/* 7.12.11.4 The nexttoward functions */
476 extern double __cdecl nexttoward (double, long double);
477 extern float __cdecl nexttowardf (float, long double);
478 extern long double __cdecl nexttowardl (long double, long double);
479
480/* 7.12.12.1 */
481/* x > y ? (x - y) : 0.0 */
482 extern double __cdecl fdim (double x, double y);
483 extern float __cdecl fdimf (float x, float y);
484 extern long double __cdecl fdiml (long double x, long double y);
485
486/* fmax and fmin.
487 NaN arguments are treated as missing data: if one argument is a NaN
488 and the other numeric, then these functions choose the numeric
489 value. */
490
491/* 7.12.12.2 */
492 extern double __cdecl fmax (double, double);
493 extern float __cdecl fmaxf (float, float);
494 extern long double __cdecl fmaxl (long double, long double);
495
496/* 7.12.12.3 */
497 extern double __cdecl fmin (double, double);
498 extern float __cdecl fminf (float, float);
499 extern long double __cdecl fminl (long double, long double);
500
501/* 7.12.13.1 */
502/* return x * y + z as a ternary op */
503 extern double __cdecl fma (double, double, double);
504 extern float __cdecl fmaf (float, float, float);
505 extern long double __cdecl fmal (long double, long double, long double);
506
507/* 7.12.14 */
508/*
509 * With these functions, comparisons involving quiet NaNs set the FP
510 * condition code to "unordered". The IEEE floating-point spec
511 * dictates that the result of floating-point comparisons should be
512 * false whenever a NaN is involved, with the exception of the != op,
513 * which always returns true: yes, (NaN != NaN) is true).
514 */
515
516#if __GNUC__ >= 3
517
518#define isgreater(x, y) __builtin_isgreater(x, y)
519#define isgreaterequal(x, y) __builtin_isgreaterequal(x, y)
520#define isless(x, y) __builtin_isless(x, y)
521#define islessequal(x, y) __builtin_islessequal(x, y)
522#define islessgreater(x, y) __builtin_islessgreater(x, y)
523#define isunordered(x, y) __builtin_isunordered(x, y)
524
525#else
526/* helper */
527#ifndef __CRT__NO_INLINE
528 __CRT_INLINE int __cdecl
529 __fp_unordered_compare (long double x, long double y){
530 unsigned short retval;
531 __asm__ __volatile__ ("fucom %%st(1);"
532 "fnstsw;": "=a" (retval) : "t" (x), "u" (y));
533 return retval;
534 }
535#endif
536
537#define isgreater(x, y) ((__fp_unordered_compare(x, y) & 0x4500) == 0)
538#define isless(x, y) ((__fp_unordered_compare (y, x) & 0x4500) == 0)
539#define isgreaterequal(x, y) ((__fp_unordered_compare (x, y) & FP_INFINITE) == 0)
540#define islessequal(x, y) ((__fp_unordered_compare(y, x) & FP_INFINITE) == 0)
541#define islessgreater(x, y) ((__fp_unordered_compare(x, y) & FP_SUBNORMAL) == 0)
542#define isunordered(x, y) ((__fp_unordered_compare(x, y) & 0x4500) == 0x4500)
543
544#endif
545
546#endif /* C99 or non strict ANSI or C++ */
547#endif /* __NO_ISOCEXT */
#define __MINGW_EXTENSION
Definition: _mingw.h:166
#define __cdecl
Definition: accygwin.h:79
w ll
Definition: byte_order.h:167
#define _x(oid)
#define fmax
Definition: graphics.c:64
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLuint res
Definition: glext.h:9613
long double __cdecl truncl(long double)
int __cdecl ilogbf(float)
float __cdecl copysignf(float, float)
long double __cdecl erfcl(long double)
long double __cdecl asinhl(long double)
__MINGW_EXTENSION long long __cdecl llrint(double)
Definition: mingw_math.h:395
int __cdecl __isnanf(float)
Definition: mingw_math.h:114
long double __cdecl exp2l(long double)
int __cdecl __signbitl(long double)
Definition: mingw_math.h:157
long __cdecl lround(double)
double __cdecl log2(double)
float __cdecl erfcf(float)
long double __cdecl atanhl(long double)
#define FP_NAN
Definition: mingw_math.h:50
float __cdecl nexttowardf(float, long double)
long double __cdecl scalblnl(long double, long)
float __cdecl expm1f(float)
double __cdecl log1p(double)
float __cdecl nextafterf(float, float)
__MINGW_EXTENSION long long __cdecl llround(double)
int __cdecl ilogb(double)
float __cdecl acoshf(float)
float __cdecl exp2f(float)
long double __cdecl cbrtl(long double)
double __cdecl fma(double, double, double)
float __cdecl cbrtf(float)
float __cdecl roundf(float)
Definition: roundf.c:10
long double __cdecl fmaxl(long double, long double)
#define FP_ZERO
Definition: mingw_math.h:53
double __cdecl remquo(double, double, int *)
double __cdecl erf(double)
long double __cdecl rintl(long double)
Definition: mingw_math.h:364
long double __cdecl roundl(long double)
long double __cdecl fdiml(long double x, long double y)
long double __cdecl nearbyintl(long double)
long double __cdecl remainderl(long double, long double)
int __cdecl __fpclassify(double)
Definition: mingw_math.h:74
double __cdecl scalbln(double, long)
double __cdecl nan(const char *tagp)
float __cdecl atanhf(float)
long double __cdecl acoshl(long double)
long double __cdecl copysignl(long double, long double)
double __cdecl logb(double)
Definition: mingw_math.h:243
#define FP_INFINITE
Definition: mingw_math.h:52
long double __cdecl nextafterl(long double, long double)
long __cdecl lrintl(long double)
Definition: mingw_math.h:387
long __cdecl lroundl(long double)
double __cdecl lgamma(double)
long double __cdecl lgammal(long double)
long double __cdecl remquol(long double, long double, int *)
float __cdecl remquof(float, float, int *)
double __cdecl erfc(double)
__MINGW_EXTENSION long long __cdecl llroundf(float)
long __cdecl lrint(double)
Definition: mingw_math.h:371
long double float_t
Definition: mingw_math.h:39
int __cdecl ilogbl(long double)
__MINGW_EXTENSION long long __cdecl llrintf(float)
Definition: mingw_math.h:403
float __cdecl log2f(float)
float __cdecl rintf(float)
Definition: mingw_math.h:357
const double __QNAN
float __cdecl asinhf(float)
long double __cdecl expm1l(long double)
float __cdecl remainderf(float, float)
Definition: remainderf.c:60
int __cdecl __fpclassifyf(float)
Definition: mingw_math.h:79
float __cdecl truncf(float)
double __cdecl remainder(double, double)
Definition: remainder.c:75
const float __INFF
double __cdecl cbrt(double)
int __cdecl __signbitf(float)
Definition: mingw_math.h:151
float __cdecl nearbyintf(float)
double __cdecl trunc(double)
float __cdecl nanf(const char *tagp)
float __cdecl scalblnf(float, long)
float __cdecl tgammaf(float)
long __cdecl lroundf(float)
int __cdecl __signbit(double)
Definition: mingw_math.h:145
float __cdecl fmaf(float, float, float)
int __cdecl __fpclassifyl(long double)
Definition: mingw_math.h:69
long double double_t
Definition: mingw_math.h:40
double __cdecl scalbn(double, int)
long double __cdecl nexttowardl(long double, long double)
float __cdecl fdimf(float x, float y)
long double __cdecl nanl(const char *tagp)
const long double __INFL
double __cdecl nearbyint(double)
long double __cdecl logbl(long double)
Definition: mingw_math.h:259
long double __cdecl erfl(long double)
int __cdecl __isnan(double)
Definition: mingw_math.h:105
long double __cdecl log1pl(long double)
float __cdecl fminf(float, float)
long double __cdecl tgammal(long double)
double __cdecl nexttoward(double, long double)
__CRT_INLINE int __cdecl __fp_unordered_compare(long double x, long double y)
Definition: mingw_math.h:529
double __cdecl copysign(double, double)
long double __cdecl fminl(long double, long double)
double __cdecl expm1(double)
float __cdecl logbf(float)
Definition: mingw_math.h:251
#define FP_NORMAL
Definition: mingw_math.h:51
long double __cdecl fmal(long double, long double, long double)
double __cdecl exp2(double)
double __cdecl fmin(double, double)
long double __cdecl scalbnl(long double, int)
double __cdecl atanh(double)
Definition: fun_ieee.c:63
int __cdecl __isnanl(long double)
Definition: mingw_math.h:123
float __cdecl log1pf(float)
float __cdecl erff(float)
float __cdecl fmaxf(float, float)
float __cdecl scalbnf(float, int)
__MINGW_EXTENSION long long __cdecl llroundl(long double)
long __cdecl lrintf(float)
Definition: mingw_math.h:379
#define FP_SUBNORMAL
Definition: mingw_math.h:54
double __cdecl asinh(double)
Definition: fun_ieee.c:49
double __cdecl nextafter(double, double)
__MINGW_EXTENSION long long __cdecl llrintl(long double)
Definition: mingw_math.h:411
double __cdecl acosh(double)
Definition: fun_ieee.c:54
double __cdecl rint(double)
Definition: mingw_math.h:350
long double __cdecl log2l(long double)
double __cdecl tgamma(double)
double __cdecl fdim(double x, double y)
float __cdecl lgammaf(float)
#define round(x)
Definition: opentype.c:47
__asm__(".p2align 4, 0x90\n" ".seh_proc __seh2_global_filter_func\n" "__seh2_global_filter_func:\n" "\tsub %rbp, %rax\n" "\tpush %rbp\n" "\t.seh_pushreg %rbp\n" "\tsub $32, %rsp\n" "\t.seh_stackalloc 32\n" "\t.seh_endprologue\n" "\tsub %rax, %rdx\n" "\tmov %rdx, %rbp\n" "\tjmp *%r8\n" "__seh2_global_filter_func_exit:\n" "\t.p2align 4\n" "\tadd $32, %rsp\n" "\tpop %rbp\n" "\tret\n" "\t.seh_endproc")