// limits standard header #ifndef _LIMITS_ #define _LIMITS_ #include #include #include #include #include #include #include #ifdef _MSC_VER /* * Currently, all MS C compilers for Win32 platforms default to 8 byte * alignment. */ #pragma pack(push,8) #endif /* _MSC_VER */ // ENUM float_round_style typedef enum { round_indeterminate = -1, round_toward_zero = 0, round_to_nearest = 1, round_toward_infinity = 2, round_toward_neg_infinity = 3} float_round_style; // STRUCT _Num_base struct _Num_base { static const bool has_denorm; static const bool has_denorm_loss; static const bool has_infinity; static const bool has_quiet_NaN; static const bool has_signaling_NaN; static const bool is_bounded; static const bool is_exact; static const bool is_iec559; static const bool is_integer; static const bool is_modulo; static const bool is_signed; static const bool is_specialized; static const bool tinyness_before; static const bool traps; static const float_round_style round_style; static const int digits; static const int digits10; static const int max_exponent; static const int max_exponent10; static const int min_exponent; static const int min_exponent10; static const int radix; }; // TEMPLATE CLASS numeric_limits template class numeric_limits : public _Num_base { public: static _TYPE min() _THROW0() {return (_TYPE(0)); } static _TYPE max() _THROW0() {return (_TYPE(0)); } static _TYPE epsilon() _THROW0() {return (_TYPE(0)); } static _TYPE round_error() _THROW0() {return (_TYPE(0)); } static _TYPE denorm_min() _THROW0() {return (_TYPE(0)); } static _TYPE infinity() _THROW0() {return (_TYPE(0)); } static _TYPE quiet_NaN() _THROW0() {return (_TYPE(0)); } static _TYPE signaling_NaN() _THROW0() {return (_TYPE(0)); } }; // STRUCT _Num_int_base struct _Num_int_base : public _Num_base { static const bool is_bounded; static const bool is_exact; static const bool is_integer; static const bool is_modulo; static const bool is_specialized; static const int radix; }; // STRUCT _Num_float_base struct _Num_float_base : public _Num_base { static const bool has_denorm; static const bool has_denorm_loss; static const bool has_infinity; static const bool has_quiet_NaN; static const bool has_signaling_NaN; static const bool is_bounded; static const bool is_exact; static const bool is_iec559; static const bool is_integer; static const bool is_modulo; static const bool is_signed; static const bool is_specialized; static const bool tinyness_before; static const bool traps; static const float_round_style round_style; static const int radix; }; // CLASS numeric_limits class numeric_limits : public _Num_int_base { public: typedef char _TYPE; static _TYPE min() _THROW0() {return (CHAR_MIN); } static _TYPE max() _THROW0() {return (CHAR_MAX); } static _TYPE epsilon() _THROW0() {return (0); } static _TYPE round_error() _THROW0() {return (0); } static _TYPE denorm_min() _THROW0() {return (0); } static _TYPE infinity() _THROW0() {return (0); } static _TYPE quiet_NaN() _THROW0() {return (0); } static _TYPE signaling_NaN() _THROW0() {return (0); } static const bool is_signed; static const int digits; static const int digits10; }; // CLASS numeric_limits<_Bool> class numeric_limits<_Bool> : public _Num_int_base { public: typedef bool _TYPE; static _TYPE min() _THROW0() {return (false); } static _TYPE max() _THROW0() {return (true); } static _TYPE epsilon() _THROW0() {return (0); } static _TYPE round_error() _THROW0() {return (0); } static _TYPE denorm_min() _THROW0() {return (0); } static _TYPE infinity() _THROW0() {return (0); } static _TYPE quiet_NaN() _THROW0() {return (0); } static _TYPE signaling_NaN() _THROW0() {return (0); } static const bool is_signed; static const int digits; static const int digits10; }; // CLASS numeric_limits class numeric_limits : public _Num_int_base { public: typedef signed char _TYPE; static _TYPE min() _THROW0() {return (SCHAR_MIN); } static _TYPE max() _THROW0() {return (SCHAR_MAX); } static _TYPE epsilon() _THROW0() {return (0); } static _TYPE round_error() _THROW0() {return (0); } static _TYPE denorm_min() _THROW0() {return (0); } static _TYPE infinity() _THROW0() {return (0); } static _TYPE quiet_NaN() _THROW0() {return (0); } static _TYPE signaling_NaN() _THROW0() {return (0); } static const bool is_signed; static const int digits; static const int digits10; }; // CLASS numeric_limits class numeric_limits : public _Num_int_base { public: typedef unsigned char _TYPE; static _TYPE min() _THROW0() {return (0); } static _TYPE max() _THROW0() {return (UCHAR_MAX); } static _TYPE epsilon() _THROW0() {return (0); } static _TYPE round_error() _THROW0() {return (0); } static _TYPE denorm_min() _THROW0() {return (0); } static _TYPE infinity() _THROW0() {return (0); } static _TYPE quiet_NaN() _THROW0() {return (0); } static _TYPE signaling_NaN() _THROW0() {return (0); } static const bool is_signed; static const int digits; static const int digits10; }; // CLASS numeric_limits class numeric_limits : public _Num_int_base { public: typedef short _TYPE; static _TYPE min() _THROW0() {return (SHRT_MIN); } static _TYPE max() _THROW0() {return (SHRT_MAX); } static _TYPE epsilon() _THROW0() {return (0); } static _TYPE round_error() _THROW0() {return (0); } static _TYPE denorm_min() _THROW0() {return (0); } static _TYPE infinity() _THROW0() {return (0); } static _TYPE quiet_NaN() _THROW0() {return (0); } static _TYPE signaling_NaN() _THROW0() {return (0); } static const bool is_signed; static const int digits; static const int digits10; }; // CLASS numeric_limits class numeric_limits : public _Num_int_base { public: typedef unsigned short _TYPE; static _TYPE min() _THROW0() {return (0); } static _TYPE max() _THROW0() {return (USHRT_MAX); } static _TYPE epsilon() _THROW0() {return (0); } static _TYPE round_error() _THROW0() {return (0); } static _TYPE denorm_min() _THROW0() {return (0); } static _TYPE infinity() _THROW0() {return (0); } static _TYPE quiet_NaN() _THROW0() {return (0); } static _TYPE signaling_NaN() _THROW0() {return (0); } static const bool is_signed; static const int digits; static const int digits10; }; // CLASS numeric_limits class numeric_limits : public _Num_int_base { public: typedef int _TYPE; static _TYPE min() _THROW0() {return (INT_MIN); } static _TYPE max() _THROW0() {return (INT_MAX); } static _TYPE epsilon() _THROW0() {return (0); } static _TYPE round_error() _THROW0() {return (0); } static _TYPE denorm_min() _THROW0() {return (0); } static _TYPE infinity() _THROW0() {return (0); } static _TYPE quiet_NaN() _THROW0() {return (0); } static _TYPE signaling_NaN() _THROW0() {return (0); } static const bool is_signed; static const int digits; static const int digits10; }; // CLASS numeric_limits class numeric_limits : public _Num_int_base { public: typedef unsigned int _TYPE; static _TYPE min() _THROW0() {return (0); } static _TYPE max() _THROW0() {return (UINT_MAX); } static _TYPE epsilon() _THROW0() {return (0); } static _TYPE round_error() _THROW0() {return (0); } static _TYPE denorm_min() _THROW0() {return (0); } static _TYPE infinity() _THROW0() {return (0); } static _TYPE quiet_NaN() _THROW0() {return (0); } static _TYPE signaling_NaN() _THROW0() {return (0); } static const bool is_signed; static const int digits; static const int digits10; }; // CLASS numeric_limits class numeric_limits : public _Num_int_base { public: typedef long _TYPE; static _TYPE min() _THROW0() {return (LONG_MIN); } static _TYPE max() _THROW0() {return (LONG_MAX); } static _TYPE epsilon() _THROW0() {return (0); } static _TYPE round_error() _THROW0() {return (0); } static _TYPE denorm_min() _THROW0() {return (0); } static _TYPE infinity() _THROW0() {return (0); } static _TYPE quiet_NaN() _THROW0() {return (0); } static _TYPE signaling_NaN() _THROW0() {return (0); } static const bool is_signed; static const int digits; static const int digits10; }; // CLASS numeric_limits class numeric_limits : public _Num_int_base { public: typedef unsigned long _TYPE; static _TYPE min() _THROW0() {return (0); } static _TYPE max() _THROW0() {return (ULONG_MAX); } static _TYPE epsilon() _THROW0() {return (0); } static _TYPE round_error() _THROW0() {return (0); } static _TYPE denorm_min() _THROW0() {return (0); } static _TYPE infinity() _THROW0() {return (0); } static _TYPE quiet_NaN() _THROW0() {return (0); } static _TYPE signaling_NaN() _THROW0() {return (0); } static const bool is_signed; static const int digits; static const int digits10; }; // CLASS numeric_limits class numeric_limits : public _Num_float_base { public: typedef float _TYPE; static _TYPE min() _THROW0() {return (FLT_MIN); } static _TYPE max() _THROW0() {return (FLT_MAX); } static _TYPE epsilon() _THROW0() {return (FLT_EPSILON); } static _TYPE round_error() _THROW0() {return (0.5); } static _TYPE denorm_min() _THROW0() {return (_FDenorm._F); } static _TYPE infinity() _THROW0() {return (_FInf._F); } static _TYPE quiet_NaN() _THROW0() {return (_FNan._F); } static _TYPE signaling_NaN() _THROW0() {return (_FSnan._F); } static const int digits; static const int digits10; static const int max_exponent; static const int max_exponent10; static const int min_exponent; static const int min_exponent10; }; // CLASS numeric_limits class numeric_limits : public _Num_float_base { public: typedef double _TYPE; static _TYPE min() _THROW0() {return (DBL_MIN); } static _TYPE max() _THROW0() {return (DBL_MAX); } static _TYPE epsilon() _THROW0() {return (DBL_EPSILON); } static _TYPE round_error() _THROW0() {return (0.5); } static _TYPE denorm_min() _THROW0() {return (_Denorm._D); } static _TYPE infinity() _THROW0() {return (_Inf._D); } static _TYPE quiet_NaN() _THROW0() {return (_Nan._D); } static _TYPE signaling_NaN() _THROW0() {return (_Snan._D); } static const int digits; static const int digits10; static const int max_exponent; static const int max_exponent10; static const int min_exponent; static const int min_exponent10; }; // CLASS numeric_limits class numeric_limits : public _Num_float_base { public: typedef long double _TYPE; static _TYPE min() _THROW0() {return (LDBL_MIN); } static _TYPE max() _THROW0() {return (LDBL_MAX); } static _TYPE epsilon() _THROW0() {return (LDBL_EPSILON); } static _TYPE round_error() _THROW0() {return (0.5); } static _TYPE denorm_min() _THROW0() {return (_LDenorm._L); } static _TYPE infinity() _THROW0() {return (_LInf._L); } static _TYPE quiet_NaN() _THROW0() {return (_LNan._L); } static _TYPE signaling_NaN() _THROW0() {return (_LSnan._L); } static const int digits; static const int digits10; static const int max_exponent; static const int max_exponent10; static const int min_exponent; static const int min_exponent10; }; #ifdef _MSC_VER #pragma pack(pop) #endif /* _MSC_VER */ #endif /* _LIMITS_ */ /* * Copyright (c) 1995 by P.J. Plauger. ALL RIGHTS RESERVED. * Consult your license regarding permissions and restrictions. */