home *** CD-ROM | disk | FTP | other *** search
- #if (defined(__IBMC__) || defined(__IBMCPP__))
- #pragma info( none )
- #ifndef __CHKHDR__
- #pragma info( none )
- #endif
- #pragma info( restore )
- #endif
-
- #ifndef __float_h
- #define __float_h
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- #ifndef _LNK_CONV
- #ifdef _M_I386
- #define _LNK_CONV _Optlink
- #else
- #define _LNK_CONV
- #endif
- #endif
-
- #ifndef _IMPORT
- #ifdef __IMPORTLIB__
- #define _IMPORT _Import
- #else
- #define _IMPORT
- #endif
- #endif
-
- /********************************************************************/
- /* <float.h> header file */
- /* */
- /* VisualAge for C++ for Windows, Version 3.5 */
- /* Licensed Material - Property of IBM */
- /* */
- /* 5801-ARR and Other Materials */
- /* */
- /* (c) Copyright IBM Corp 1991, 1996. All rights reserved. */
- /* */
- /********************************************************************/
-
- #define FLT_ROUNDS 1 /* 0, 2 and 3 also available on 80387 */
-
- #define FLT_RADIX 2
-
- #define FLT_MANT_DIG 24
- #define DBL_MANT_DIG 53
- #ifdef _M_I386
- #define LDBL_MANT_DIG 64
- #else
- #define LDBL_MANT_DIG 106
- #endif
-
- #define FLT_DIG 6
- #define DBL_DIG 15
- #ifdef _M_I386
- #define LDBL_DIG 18
- #else
- #define LDBL_DIG 30
- #endif
-
- #define FLT_MIN_EXP (-125)
- #define DBL_MIN_EXP (-1021)
- #ifdef _M_I386
- #define LDBL_MIN_EXP (-16381)
- #endif
-
- #define FLT_MIN_10_EXP (-37)
- #define DBL_MIN_10_EXP (-307)
- #ifdef _M_I386
- #define LDBL_MIN_10_EXP (-4931)
- #endif
-
- #define FLT_MAX_EXP 128
- #define DBL_MAX_EXP 1024
- #ifdef _M_I386
- #define LDBL_MAX_EXP 16384
- #endif
-
- #define FLT_MAX_10_EXP 38
- #define DBL_MAX_10_EXP 308
- #ifdef _M_I386
- #define LDBL_MAX_10_EXP 4932
- #endif
-
- #define FLT_MAX 3.402823466e+38F
- #ifdef _M_I386
- #define DBL_MAX 1.7976931348623158e+308
- #define LDBL_MAX 1.18973149535723176499e+4932L
- #endif
-
- #define FLT_EPSILON 1.192092896e-07F
- #define DBL_EPSILON 2.2204460492503131e-016
- #ifdef _M_I386
- #define LDBL_EPSILON 1.08420217248550443401e-19L
- #endif
-
- #define FLT_MIN 1.175494351e-38F
- #define DBL_MIN 2.2250738585072014e-308
- #ifdef _M_I386
- #define LDBL_MIN 3.36210314311209350626e-4932L
- #endif
-
- #ifdef __THW_PPC__
- #define DBL_MAX 1.7976931348623157e+308
- #define LDBL_MANT_DIG 106
- #define LDBL_MIN_EXP DBL_MIN_EXP
- #define LDBL_MIN ((long double)DBL_MIN)
- #define LDBL_MIN_10_EXP DBL_MIN_10_EXP
- #define LDBL_MAX_EXP DBL_MAX_EXP
- #define LDBL_MAX 0.1797693134862315807937289714053023E+309L
- #define LDBL_MAX_10_EXP DBL_MAX_10_EXP
- #define LDBL_EPSILON 0.24651903288156618919116517665087070E-31L
- #endif
-
-
- #if defined(__EXTENDED__)
-
- #ifdef _M_I386
- /* 80387 math control information */
-
- /* User Control Word Mask and bit definitions. */
- /* These definitions match the 80387 */
-
- #define MCW_EM 0x003f /* interrupt Exception Masks */
- #define EM_INVALID 0x0001 /* invalid */
- #define EM_DENORMAL 0x0002 /* denormal */
- #define EM_ZERODIVIDE 0x0004 /* zero divide */
- #define EM_OVERFLOW 0x0008 /* overflow */
- #define EM_UNDERFLOW 0x0010 /* underflow */
- #define EM_INEXACT 0x0020 /* inexact (precision) */
-
- #define MCW_IC 0x1000 /* Infinity Control */
- #define IC_AFFINE 0x1000 /* affine */
- #define IC_PROJECTIVE 0x0000 /* projective */
-
- #define MCW_RC 0x0c00 /* Rounding Control */
- #define RC_CHOP 0x0c00 /* chop */
- #define RC_UP 0x0800 /* up */
- #define RC_DOWN 0x0400 /* down */
- #define RC_NEAR 0x0000 /* near */
-
- #define MCW_PC 0x0300 /* Precision Control */
- #define PC_24 0x0000 /* 24 bits */
- #define PC_53 0x0200 /* 53 bits */
- #define PC_64 0x0300 /* 64 bits */
-
- /* initial Control Word value */
-
- #define CW_DEFAULT ( RC_NEAR + PC_64 + EM_DENORMAL + EM_INEXACT )
-
- /* user Status Word bit definitions */
-
- #define SW_INVALID 0x0001 /* invalid */
- #define SW_DENORMAL 0x0002 /* denormal */
- #define SW_ZERODIVIDE 0x0004 /* zero divide */
- #define SW_OVERFLOW 0x0008 /* overflow */
- #define SW_UNDERFLOW 0x0010 /* underflow */
- #define SW_INEXACT 0x0020 /* inexact (precision) */
- #define SW_STACKFAULT 0x0040 /* stack fault (SW_INVALID also set) */
-
- /* stack problems (SW_INVALID and SW_STACKFAULT both set) */
- #define SW_STACKOVERFLOW 0x0200 /* stack overflow */
- /* bit is off for stack underflow */
- #endif
-
- #ifdef __THW_PPC__
- /* FPSCR information on PowerPC */
-
- /* A fpscr_t contains a full FPSCR word which includes */
- /* exception bits, exception enable bits and rounding */
- /* control bits. */
- typedef unsigned int fpscr_t;
-
- /* Exception mask in the FPSCR control portion */
-
- #define MCW_EM ((fpscr_t)0x000000FC) /* enable bit summ. */
- #define EM_INVALID ((fpscr_t)0x00000080) /* invalid, bit 24 */
- #define EM_OVERFLOW ((fpscr_t)0x00000040) /* overflow, bit 25 */
- #define EM_UNDERFLOW ((fpscr_t)0x00000020) /* underflow, bit 26 */
- #define EM_ZERODIVIDE ((fpscr_t)0x00000010) /* zero divide, bit 27 */
- #define EM_INEXACT ((fpscr_t)0x00000008) /* inexact, bit 28 */
- #define EM_DENORMAL ((fpscr_t)0x00000004) /* denormal, bit 29 */
- /* 1 means no denorm */
- /* numbers. */
-
- #define MCW_IC ((fpscr_t) 0x00000000) /* Infinity Control */
- #define IC_AFFINE ((fpscr_t) 0x00000000) /* meaningful to PPC. */
- #define IC_PROJECTIVE ((fpscr_t) 0x00000000) /* regardless of its */
- /* value, PPC treats infinity in the affine */
- /* sense: -INF < finite number < +INF */
-
- #define MCW_RC ((fpscr_t) 0x00000001) /* Rounding Control */
- #define RC_CHOP ((fpscr_t) 0x00000001) /* toward zero (chop) */
- #define RC_UP ((fpscr_t) 0x00000002) /* +infinity (up) */
- #define RC_DOWN ((fpscr_t) 0x00000003) /* -infinity (down) */
- #define RC_NEAR ((fpscr_t) 0x00000000) /* nearest */
-
- #define MCW_PC ((fpscr_t)0x00000000) /* Precision control is not */
- #define PC_24 ((fpscr_t)0x00000000) /* meanningful to PPC. To */
- #define PC_53 ((fpscr_t)0x00000000) /* maintain the compatibility */
- #define PC_64 ((fpscr_t)0x00000000) /* they can be programmed. */
- /* However, regardless of its */
- /* value, FP operations are */
- /* done in 64 bits. */
-
- /* initial Control Word value. */
-
- #define CW_DEFAULT (RC_CHOP + EM_DENORMAL + EM_OVERFLOW + \
- EM_UNDERFLOW + EM_ZERODIVIDE)
-
-
- /* Status Word portion in FPSCR */
-
- #define SW_FX_SUM ((fpscr_t) 0x80000000) /* exception summary */
- #define SW_INVALID ((fpscr_t) 0x20000000) /* invalid, bit 2 */
- #define SW_DENORMAL ((fpscr_t) 0x00000000) /* denormal, N/A */
- #define SW_ZERODIVIDE ((fpscr_t) 0x04000000) /* zero divide, bit 5 */
- #define SW_OVERFLOW ((fpscr_t) 0x10000000) /* overflow, bit 3 */
- #define SW_UNDERFLOW ((fpscr_t) 0x08000000) /* underflow, bit 4 */
- #define SW_INEXACT ((fpscr_t) 0x02000000) /* inexact, bit 6 */
- #define SW_STACKFAULT ((fpscr_t) 0x00000000) /* stack fault, N/A */
-
- #define SW_STACKOVERFLOW ((fpscr_t) 0x00000000) /* stack overflow, N/A */
- #endif
-
- /* Floating point error signals and return codes */
-
- #define FPE_INTDIV0 0x91 /* integer division by 0 */
- #define FPE_INT_OFLOW 0x92 /* integer overflow */
- #define FPE_BOUND 0x93 /* bounds failure */
- #define FPE_INVALID 0x81
- #define FPE_DENORMAL 0x82
- #define FPE_ZERODIVIDE 0x83
- #define FPE_OVERFLOW 0x84
- #define FPE_UNDERFLOW 0x85
- #define FPE_INEXACT 0x86
-
- #define FPE_STACKOVERFLOW 0x8a
- #define FPE_STACKUNDERFLOW 0x8b
-
- #define FPE_EXPLICITGEN 0x8c /* raise( SIGFPE ); */
-
- /* function prototypes */
-
- #ifdef _M_I386
- extern unsigned int (_IMPORT _LNK_CONV _clear87)( void );
- extern unsigned int (_IMPORT _LNK_CONV _control87)( unsigned int, unsigned int );
- extern unsigned int (_IMPORT _LNK_CONV _status87)( void );
- extern void _IMPORT _LNK_CONV _fpreset( void );
-
- unsigned int _Builtin __clear87( void );
- unsigned int _Builtin __control87( unsigned int, unsigned int );
- unsigned int _Builtin __status87( void );
-
- #define _clear87( ) __clear87( )
- #define _control87( x, y ) __control87( (x), (y) )
- #define _status87( ) __status87( )
-
- extern const float _IMPORT _fposinfi;
- #define _INFF _fposinfi
- #define _INFINITYF _fposinfi
-
- extern const double _IMPORT _infinity;
- #define _INF _infinity
- #define _INFINITY _infinity
-
- extern const long double _IMPORT _ldposinfi;
- #define _INFL _ldposinfi
- #define _INFINITYL _ldposinfi
-
- extern const float _IMPORT _fposqnan;
- extern const double _IMPORT _dposqnan;
- extern const long double _IMPORT _ldposqnan;
-
- #define _NANF _fposqnan
- #define _NAN _dposqnan
- #define _NANL _ldposqnan
- #else
- extern unsigned int _clear87( void );
- extern unsigned int _control87( unsigned int, unsigned int );
- extern unsigned int _status87( void );
- extern void _fpreset( void );
-
- extern const float _fposinfi;
- #define _INFF _fposinfi
- #define _INFINITYF _fposinfi
-
- extern const double _infinity;
- #define _INF _infinity
- #define _INFINITY _infinity
-
- extern const long double _ldposinfi;
- #define _INFL _ldposinfi
- #define _INFINITYL _ldposinfi
-
- extern const float _fposqnan;
- extern const double _dposqnan;
- extern const long double _ldposqnan;
-
- #define _NANF _fposqnan
- #define _NAN _dposqnan
- #define _NANL _ldposqnan
- #endif
-
- #endif
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif
-
- #if (defined(__IBMC__) || defined(__IBMCPP__))
- #pragma info( none )
- #ifndef __CHKHDR__
- #pragma info( restore )
- #endif
- #pragma info( restore )
- #endif
-
-