diff options
Diffstat (limited to 'lib/msun/src/math.h')
-rw-r--r-- | lib/msun/src/math.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/msun/src/math.h b/lib/msun/src/math.h index 655b182..abeca6e 100644 --- a/lib/msun/src/math.h +++ b/lib/msun/src/math.h @@ -17,6 +17,8 @@ #ifndef _MATH_H_ #define _MATH_H_ +#include <sys/_types.h> + /* * ANSI/POSIX */ @@ -24,7 +26,33 @@ extern const union __infinity_un { unsigned char __uc[8]; double __ud; } __infinity; + +extern const union __nan_un { + unsigned char __uc[sizeof(float)]; + float __uf; +} __nan; + +#define FP_ILOGB0 (-0x7fffffff - 1) /* INT_MIN */ +#define FP_ILOGBNAN 0x7fffffff /* INT_MAX */ #define HUGE_VAL (__infinity.__ud) +#define HUGE_VALF (float)HUGE_VAL +#define HUGE_VALL (long double)HUGE_VAL +#define INFINITY HUGE_VALF +#define NAN (__nan.__uf) + +/* Symbolic constants to classify floating point numbers. */ +#define FP_INFINITE 1 +#define FP_NAN 2 +#define FP_NORMAL 3 +#define FP_SUBNORMAL 4 +#define FP_ZERO 5 +#define fpclassify(x) \ + ((sizeof (x) == sizeof (float)) ? __fpclassifyf(x) \ + : (sizeof (x) == sizeof (double)) ? __fpclassifyd(x) \ + : __fpclassifyl(x)) + +typedef __double_t double_t; +typedef __float_t float_t; /* * XOPEN/SVID @@ -116,6 +144,10 @@ __BEGIN_DECLS /* * ANSI/POSIX */ +int __fpclassifyd(double); +int __fpclassifyf(float); +int __fpclassifyl(long double); + double acos(double); double asin(double); double atan(double); |