|  | /** | 
|  | * This file has no copyright assigned and is placed in the Public Domain. | 
|  | * This file is part of the mingw-w64 runtime package. | 
|  | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 
|  | */ | 
|  | #define __CRT__NO_INLINE | 
|  | #include <math.h> | 
|  |  | 
|  | /* 'fxam' sets FPU flags C3,C2,C0   'fstsw' stores: | 
|  | FP_NAN			001		0x0100 | 
|  | FP_NORMAL		010		0x0400 | 
|  | FP_INFINITE		011		0x0500 | 
|  | FP_ZERO		100		0x4000 | 
|  | FP_SUBNORMAL		110		0x4400 | 
|  |  | 
|  | and sets C1 flag (signbit) if neg */ | 
|  |  | 
|  | int __fpclassify (double _x) | 
|  | { | 
|  | __mingw_dbl_type_t hlp; | 
|  | unsigned int l, h; | 
|  |  | 
|  | hlp.x = _x; | 
|  | h = hlp.lh.high; | 
|  | l = hlp.lh.low | (h & 0xfffff); | 
|  | h &= 0x7ff00000; | 
|  | if ((h | l) == 0) | 
|  | return FP_ZERO; | 
|  | if (!h) | 
|  | return FP_SUBNORMAL; | 
|  | if (h == 0x7ff00000) | 
|  | return (l ? FP_NAN : FP_INFINITE); | 
|  | return FP_NORMAL; | 
|  | } |