home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */
- #ifndef __dj_include_float_h_
- #define __dj_include_float_h_
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- extern float __dj_float_epsilon;
- extern float __dj_float_max;
- extern float __dj_float_min;
-
- #define FLT_DIG 6
- #define FLT_EPSILON __dj_float_epsilon
- #define FLT_MANT_DIG 24
- #define FLT_MAX __dj_float_max
- #define FLT_MAX_10_EXP 38
- #define FLT_MAX_EXP 128
- #define FLT_MIN __dj_float_min
- #define FLT_MIN_10_EXP (-37)
- #define FLT_MIN_EXP (-125)
- #define FLT_RADIX 2
- #define FLT_ROUNDS 1
-
- extern double __dj_double_epsilon;
- extern double __dj_double_max;
- extern double __dj_double_min;
-
- #define DBL_DIG 15
- #define DBL_EPSILON __dj_double_epsilon
- #define DBL_MANT_DIG 53
- #define DBL_MAX __dj_double_max
- #define DBL_MAX_10_EXP 308
- #define DBL_MAX_EXP 1024
- #define DBL_MIN __dj_double_min
- #define DBL_MIN_10_EXP (-307)
- #define DBL_MIN_EXP (-1021)
-
- extern long double __dj_long_double_epsilon;
- extern long double __dj_long_double_max;
- extern long double __dj_long_double_min;
-
- #define LDBL_DIG 18
- #define LDBL_EPSILON __dj_long_double_epsilon
- #define LDBL_MANT_DIG 64
- #define LDBL_MAX __dj_long_double_max
- #define LDBL_MAX_10_EXP 4932
- #define LDBL_MAX_EXP 16384
- #define LDBL_MIN __dj_long_double_min
- #define LDBL_MIN_10_EXP (-4931)
- #define LDBL_MIN_EXP (-16381)
-
- #ifndef __dj_ENFORCE_ANSI_FREESTANDING
-
- #ifndef __STRICT_ANSI__
-
- #ifndef _POSIX_SOURCE
-
- /* These indicate the results of the last operation */
- #define SW_INVALID 0x0001 /* Invalid operation */
- #define SW_DENORMAL 0x0002 /* Denormalized operand */
- #define SW_ZERODIVIDE 0x0004 /* Division by zero */
- #define SW_OVERFLOW 0x0008 /* Overflow */
- #define SW_UNDERFLOW 0x0010 /* Underflow (computational) */
- #define SW_INEXACT 0x0020 /* Precision (computational) */
- #define SW_STACKFAULT 0x0040 /* Stack Fault (over/under flow) */
- #define SW_ERRORSUMMARY 0x0080 /* Error summary */
- #define SW_COND 0x4700 /* Condition Code */
- #define SW_C0 0x0100 /* Condition 0 bit */
- #define SW_C1 0x0200 /* Condition 1 bit (also 0=stack underflow, 1=stack overflow) */
- #define SW_C2 0x0400 /* Condition 2 bit */
- #define SW_C3 0x4000 /* Condition 3 bit */
- #define SW_TOP 0x3800 /* Top of stack */
- #define SW_TOP_SHIFT 11 /* Shift to move TOS to LSB */
- #define SW_BUSY 0x8000 /* FPU busy */
-
- #define MCW_EM 0x003f /* Exception masks (0=fault, 1=handle) */
- #define EM_INVALID 0x0001 /* Invalid operation */
- #define EM_DENORMAL 0x0002 /* Denormalized operand */
- #define EM_ZERODIVIDE 0x0004 /* Division by zero */
- #define EM_OVERFLOW 0x0008 /* Overflow */
- #define EM_UNDERFLOW 0x0010 /* Underflow */
- #define EM_INEXACT 0x0020 /* Precision */
-
- #define MCW_PC 0x0300 /* precision control */
- #define PC_24 0x0000 /* 24 bits (single precision) */
- #define PC_53 0x0200 /* 53 bits (double precision) */
- #define PC_64 0x0300 /* 64 bits (extended precision) */
-
- #define MCW_RC 0x0c00 /* Rounding control */
- #define RC_NEAR 0x0000 /* Round to nearest or even */
- #define RC_DOWN 0x0400 /* Round towards -Inf */
- #define RC_UP 0x0800 /* Round towards +Inf */
- #define RC_CHOP 0x0c00 /* Truncate towards zero */
-
- #define MCW_IC 0x1000 /* obsolete; i486 is always affine */
- #define IC_AFFINE 0x1000 /* -Inf < +Inf */
- #define IC_PROJECTIVE 0x0000 /* -Inf == +Inf */
-
- unsigned int _clear87(void);
- unsigned int _control87(unsigned int newcw, unsigned int mask);
- void _fpreset(void);
- unsigned int _status87(void);
-
- #endif /* !_POSIX_SOURCE */
- #endif /* !__STRICT_ANSI__ */
- #endif /* !__dj_ENFORCE_ANSI_FREESTANDING */
-
- #ifndef __dj_ENFORCE_FUNCTION_CALLS
- #endif /* !__dj_ENFORCE_FUNCTION_CALLS */
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif /* !__dj_include_float_h_ */
-