1#ifndef _MSL_COMMON_FLOAT_H
2#define _MSL_COMMON_FLOAT_H
15#define fpclassify(x) \
16 ((sizeof(x) == sizeof(float)) ? __fpclassifyf((float)(x)) : \
17 (sizeof(x) == sizeof(double)) ? __fpclassifyd((double)(x)) : \
18 __fpclassifyl((long double)(x)) )
19#define signbit(x) ((sizeof(x) == sizeof(float)) ? __signbitf(x) : __signbitd(x))
20#define isfinite(x) ((fpclassify(x) > FP_INFINITE))
21#define isnan(x) (fpclassify(x) == FP_NAN)
22#define isinf(x) (fpclassify(x) == FP_INFINITE)
24#define __signbitf(x) ((int)(__HI(x) & 0x80000000))
27#define __signbitd(x) ((int)(__HI(x) & 0x80000000))
39 unsigned long integer = *(
unsigned long*)&__value;
41 switch (integer & 0x7f800000) {
43 if ((integer & 0x7fffff) != 0) {
49 if ((integer & 0x7fffff) != 0) {
59 switch (
__HI(__value) & 0x7ff00000) {
61 if ((
__HI(__value) & 0x000fffff) || (
__LO(__value) & 0xffffffff))
68 if ((
__HI(__value) & 0x000fffff) || (
__LO(__value) & 0xffffffff))
85#define FLT_MANT_DIG 24
87#define FLT_MIN_EXP (-125)
88#define FLT_MIN_10_EXP (-37)
89#define FLT_MAX_EXP 128
90#define FLT_MAX_10_EXP 38
93#define FLT_MAX 3.4028235e38f
94#define FLT_EPSILON 1.1920929e-7f
96#define FLT_MAX (*(float*) __float_max)
97#define FLT_EPSILON (*(float*) __float_epsilon)
100#define DBL_MANT_DIG 53
102#define DBL_MIN_EXP (-1021)
103#define DBL_MIN_10_EXP (-308)
104#define DBL_MAX_EXP 1024
105#define DBL_MAX_10_EXP 308
int __fpclassifyf(float __value)
Definition float.h:38
int __fpclassifyl(long double __value)
unsigned long __float_huge[]
Definition float.c:5
int __fpclassifyd(double __value)
Definition float.h:58
unsigned long __float_epsilon[]
Definition float.c:9
unsigned long __float_max[]
Definition float.c:7
unsigned long __float_nan[]
Definition float.c:3