/* basetype.h  (Steve Hill)  1.1  3/9/90$ */

/* basetype.h
 *
 * Contains basic type definitions.
 */

#ifdef PROTOTYPES
#	define PROTO(x) x
#else
#	define PROTO(x) ()
#endif

/* bool_t
 *
 * Why hasn't C got a boolean type?  Should TRUE be (1==1)?
 */

#define bool_t	int
#define FALSE	0
#define TRUE	1


/* address_t
 *
 * A general pointer type.
 */

typedef unsigned char * address_t;


/* real_t
 *
 * The type of reals.  We typedef it to allow for later changes.
 */

typedef double real_t;

#define REAL_ZERO	((real_t) 0.0)
#define REAL_ONE	((real_t) 1.0)
#define REAL_TWO	((real_t) 2.0)
#define REAL_FOUR	((real_t) 4.0)
#define REAL_TINY	((real_t) 1.0e-6)
#define REAL_PI		((real_t) 3.1415926535)

#define REAL_BIG	((real_t) 1e38)

#define RealAbs(v)		(((v) < REAL_ZERO) ? (-(v)) : (v))
#define RealMin(r1, r2)		(((r1) < (r2)) ? (r1) : (r2))
#define RealMax(r1, r2)		(((r1) > (r2)) ? (r1) : (r2))
#define RealSame(r1, r2)	(RealAbs((r1) - (r2)) < REAL_TINY)
#define RealSort(r1, r2)	{if ((r1) > (r2)) {real_t t; t = r1; r1 = r2; r2 = t;}}


#define RealPrint(F, R)		{fprintf(F, "%f\n", R);}
