diff options
Diffstat (limited to 'newlib/libm/common/s_infconst.c')
-rw-r--r-- | newlib/libm/common/s_infconst.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/newlib/libm/common/s_infconst.c b/newlib/libm/common/s_infconst.c new file mode 100644 index 000000000..9447b97cc --- /dev/null +++ b/newlib/libm/common/s_infconst.c @@ -0,0 +1,40 @@ +/* Infinity as a constant value. This is used for HUGE_VAL. + * Added by Cygnus Support. + */ + +#include <float.h> +#include "fdlibm.h" + +/* Float version of infinity. */ +const union __fmath __infinityf[1] = {{{0x7f800000}}}; + +/* Double version of infinity. */ +#ifndef _DOUBLE_IS_32BITS + #ifdef __IEEE_BIG_ENDIAN + const union __dmath __infinity[1] = {{{0x7ff00000, 0}}}; + #else + const union __dmath __infinity[1] = {{{0, 0x7ff00000}}}; + #endif +#else /* defined (_DOUBLE_IS_32BITS) */ + const union __dmath __infinity[1] = {{{0x7f800000, 0}}}; +#endif /* defined (_DOUBLE_IS_32BITS) */ + +/* Long double version of infinity. */ +#ifdef __IEEE_BIG_ENDIAN + #if LDBL_MANT_DIG == 24 + const union __ldmath __infinityld[1] = {{{0x7f800000, 0, 0, 0}}}; + #elif LDBL_MANT_DIG == 53 + const union __ldmath __infinityld[1] = {{{0x7ff00000, 0, 0, 0}}}; + #else + const union __ldmath __infinityld[1] = {{{0x7fff0000, 0, 0, 0}}}; + #endif /* LDBL_MANT_DIG size */ +#else /* __IEEE_LITTLE_ENDIAN */ + #if LDBL_MANT_DIG == 24 + const union __ldmath __infinityld[1] = {{{0x7f800000, 0, 0, 0}}}; + #elif LDBL_MANT_DIG == 53 + const union __ldmath __infinityld[1] = {{{0, 0x7ff00000, 0, 0}}}; + #else + const union __ldmath __infinityld[1] = {{{0, 0x80000000, 0x00007fff, 0}}}; + #endif /* LDBL_MANT_DIG size */ +#endif /* __IEEE_LITTLE_ENDIAN */ + |