Google
 

Trailing-Edge - PDP-10 Archives - SRI_NIC_PERM_FS_1_19910112 - c/lib/gen/float.c
There are 2 other files named float.c in the archive. Click here to see a list.
/*
**	FLOAT.C - Floating-point data for <float.h> (new for ANSI C)
**
**	(c) Copyright Ken Harrenstien 1989
**
** Because the values defined in <float.h> are impossible to express as
** lexical constants, a data file is necessary.  Note that because
** union initialization cannot be done by pre-ANSI KCC, we have to use
** "type punning" across module boundaries -- <float.h> thinks these
** externals are defined with the proper data types.  Ha.
*/

#include <c-env.h>		/* Get site-dependent info */
#include <limits.h>

#if CPU_PDP10

/* All values must be normalized! */

/* PDP-10 float format is identical on all machines */
#define FLT_MAX		INT_MAX
#define FLT_EPSILON	((129-26)<<27) + (1<<26)
#define FLT_MIN		(1<<26)

#if CENV_DFL_H	/* PDP-10 Hardware format doubles */
#define DBL_MAX		INT_MAX,	INT_MAX
#define DBL_EPSILON	((129-(26+35))<<27) + (1<<26),	0
#define DBL_MIN		(1<<26),	0
#elif CENV_DFL_S	/* Software format doubles (KA-10) */
#define DBL_MAX		INT_MAX, (INT_MAX - (27<<27))
#define DBL_EPSILON	((129-(26+27))<<27) + (1<<26), (129-(26+27+27))<<27
#define DBL_MIN		(27<<27)+(1<<26), 0	/* Not sure about this */
#endif

#define LDBL_MAX	DBL_MAX
#define LDBL_EPSILON	DBL_EPSILON
#define LDBL_MIN	DBL_MIN

/* Maximum values */
int _fltmax =	{ FLT_MAX };
int _dblmax[2] = { DBL_MAX };
int _ldbmax[2] = { LDBL_MAX };

/* Epsilon values */
int _flteps =	{ FLT_EPSILON };
int _dbleps[2] = { DBL_EPSILON };
int _ldbeps[2] = { LDBL_EPSILON };

/* Minimum positive values */
int _fltmin = 	{ FLT_MIN };
int _dblmin[2] = { DBL_MIN };
int _ldbmin[2] = { LDBL_MIN };

#endif /* CPU_PDP10 */