www.pudn.com > linuxcici1.rar > FLOAT.H


/*	float.h 
 
	Defines implementation specific macros for dealing with 
	floating point. 
 
	Copyright (c) Borland International 1987,1988 
	All Rights Reserved. 
*/ 
#if __STDC__ 
#define _Cdecl 
#else 
#define _Cdecl	cdecl 
#endif 
 
#define FLT_RADIX			2 
#define FLT_ROUNDS			1 
#define FLT_GUARD			1 
#define FLT_NORMALIZE			1 
 
#define DBL_DIG				15 
#define FLT_DIG				6 
#define LDBL_DIG			19 
 
#define DBL_MANT_DIG			53 
#define FLT_MANT_DIG			24 
#define LDBL_MANT_DIG			64 
 
#define DBL_EPSILON			2.2204460492503131E-16 
#define FLT_EPSILON			1.19209290E-07F 
#define LDBL_EPSILON			1.084202172485504E-19 
 
/* smallest positive IEEE normal numbers */ 
#define DBL_MIN				2.2250738585072014E-308 
#define FLT_MIN				1.17549435E-38F 
#define LDBL_MIN				_tiny_ldble 
 
#define DBL_MAX			_huge_dble 
#define FLT_MAX			_huge_flt 
#define LDBL_MAX			_huge_ldble 
 
#define DBL_MAX_EXP			+1024 
#define FLT_MAX_EXP			+128 
#define LDBL_MAX_EXP			+16384 
 
#define DBL_MAX_10_EXP			+308 
#define FLT_MAX_10_EXP			+38 
#define LDBL_MAX_10_EXP			+4932 
 
#define DBL_MIN_10_EXP			-307 
#define FLT_MIN_10_EXP			-37 
#define LDBL_MIN_10_EXP			-4931 
 
#define DBL_MIN_EXP			-1021 
#define FLT_MIN_EXP			-125 
#define LDBL_MIN_EXP			-16381 
 
extern float _Cdecl _huge_flt; 
extern double _Cdecl _huge_dble; 
extern long double _Cdecl _huge_ldble; 
extern long double _Cdecl _tiny_ldble; 
 
unsigned int _Cdecl _clear87(void); 
unsigned int _Cdecl _control87(unsigned int new, unsigned int mask); 
void	     _Cdecl _fpreset(void); 
unsigned int _Cdecl _status87(void); 
 
/* 8087/80287 Status Word format   */ 
 
#define SW_INVALID		0x0001	/* Invalid operation		*/ 
#define SW_DENORMAL		0x0002	/* Denormalized operand		*/ 
#define SW_ZERODIVIDE		0x0004	/* Zero divide			*/ 
#define SW_OVERFLOW		0x0008	/* Overflow			*/ 
#define SW_UNDERFLOW		0x0010	/* Underflow			*/ 
#define SW_INEXACT		0x0020	/* Precision (Inexact result)	*/ 
 
/* 8087/80287 Control Word format */ 
 
#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			*/ 
 
/* 8087/80287 Initial Control Word */ 
/* use affine infinity, mask underflow and precision exceptions */ 
 
#define CW_DEFAULT	(RC_NEAR+PC_64+IC_AFFINE+EM_UNDERFLOW+EM_INEXACT) 
 
/*  
	SIGFPE signal error types (for integer & float exceptions).  
*/ 
#define	FPE_INTOVFLOW		126	/* 80x86 Interrupt on overflow	*/ 
#define	FPE_INTDIV0		127	/* 80x86 Integer divide by zero	*/ 
 
#define	FPE_INVALID		129	/* 80x87 invalid operation	*/ 
#define	FPE_ZERODIVIDE		131	/* 80x87 divide by zero		*/ 
#define	FPE_OVERFLOW		132	/* 80x87 arithmetic overflow	*/ 
#define	FPE_UNDERFLOW		133	/* 80x87 arithmetic underflow	*/ 
#define	FPE_INEXACT		134	/* 80x87 precision loss		*/ 
#define	FPE_EXPLICITGEN		140	/* When SIGFPE is raise()'d	*/ 
 
/*  
			SIGSEGV signal error types. 
*/ 
#define	SEGV_BOUND		10	/* A BOUND violation (SIGSEGV)	*/ 
#define	SEGV_EXPLICITGEN	11	/* When SIGSEGV is raise()'d	*/ 
 
/*  
			SIGILL signal error types. 
*/ 
#define	ILL_EXECUTION		20	/* Illegal operation exception	*/ 
#define	ILL_EXPLICITGEN		21	/* When SIGILL is raise()'d	*/