/*	@(#)libm.h 1.1 94/10/31 SMI	*/

/*
 * Copyright (c) 1988 by Sun Microsystems, Inc.
 */

#define TRUE  1
#define FALSE 0

extern double SVID_libm_err();

/* 
 * IEEE double precision constants 
 */
static double align__double = 0.0;
#ifdef i386
static long ln2x[] = 		{ 0xfefa39ef, 0x3fe62e42 };
static long ln2hix[] = 		{ 0xfee00000, 0x3fe62e42 };
static long ln2lox[] = 		{ 0x35793c76, 0x3dea39ef };
static long NaNx[] = 		{ 0xffffffff, 0x7fffffff };
static long sNaNx[] = 		{ 0x00000001, 0x7ff00000 };
static long Infx[] = 		{ 0x00000000, 0x7ff00000 };
static long two52x[] = 		{ 0x00000000, 0x43300000 };
static long twom52x[] = 	{ 0x00000000, 0x3cb00000 };
static long PI_RZx[] = 		{ 0x54442d18, 0x400921fb };
static long sqrt2x[] = 		{ 0x667f3bcd, 0x3ff6a09e };/* rounded up */
static long sqrt2p1_hix[] = 	{ 0x333f9de6, 0x4003504f };
static long sqrt2p1_lox[] = 	{ 0xf626cdd5, 0x3ca21165 };
static long fmaxx[] = 		{ 0xffffffff, 0x7fefffff };
static long fminx[] = 		{ 0x00000001, 0x00000000 };
static long fminnx[] = 		{ 0x00000000, 0x00100000 };
static long fmaxsx[] = 		{ 0xffffffff, 0x000fffff };
static long lnovftx[] = 	{ 0xfefa39ef, 0x40862e42 };/* chopped */
static long lnunftx[] = 	{ 0xd52d3052, 0xc0874910 };/* ln(minf/2) chop*/
static long invln2x[] = 	{ 0x652b82fe, 0x3ff71547 };
#else
static long ln2x[] = 		{ 0x3fe62e42, 0xfefa39ef };
static long ln2hix[] = 		{ 0x3fe62e42, 0xfee00000 };
static long ln2lox[] = 		{ 0x3dea39ef, 0x35793c76 };
static long NaNx[] = 		{ 0x7fffffff, 0xffffffff };
static long sNaNx[] = 		{ 0x7ff00000, 0x00000001 };
static long Infx[] = 		{ 0x7ff00000, 0x00000000 };
static long two52x[] = 		{ 0x43300000, 0x00000000 };
static long twom52x[] = 	{ 0x3cb00000, 0x00000000 };
static long PI_RZx[] = 		{ 0x400921fb, 0x54442d18 };
static long sqrt2x[] = 		{ 0x3ff6a09e, 0x667f3bcd };/* rounded up */
static long sqrt2p1_hix[] = 	{ 0x4003504f, 0x333f9de6 };
static long sqrt2p1_lox[] = 	{ 0x3ca21165, 0xf626cdd5 };
static long fmaxx[] = 		{ 0x7fefffff, 0xffffffff };
static long fminx[] = 		{ 0x00000000, 0x00000001 };
static long fminnx[] = 		{ 0x00100000, 0x00000000 };
static long fmaxsx[] = 		{ 0x000fffff, 0xffffffff };
static long lnovftx[] = 	{ 0x40862e42, 0xfefa39ef };/* chopped */
static long lnunftx[] = 	{ 0xc0874910, 0xd52d3052 };/* ln(minf/2) chop*/
static long invln2x[] = 	{ 0x3ff71547, 0x652b82fe };
#endif
#define ln2 		(*(double*)ln2x)
#define NaN 		(*(double*)NaNx)
#define sNaN 		(*(double*)sNaNx)
#define Inf 		(*(double*)Infx)
#define two52 		(*(double*)two52x)
#define twom52 		(*(double*)twom52x)
#define ln2hi 		(*(double*)ln2hix)
#define ln2lo 		(*(double*)ln2lox)
#define PI_RZ 		(*(double*)PI_RZx)
#define sqrt2 		(*(double*)sqrt2x)
#define sqrt2p1_hi 	(*(double*)sqrt2p1_hix)
#define sqrt2p1_lo 	(*(double*)sqrt2p1_lox)
#define fmax 		(*(double*)fmaxx)
#define fmin 		(*(double*)fminx)
#define fminn 		(*(double*)fminnx)
#define fmaxs 		(*(double*)fmaxsx)
#define lnovft 		(*(double*)lnovftx)
#define lnunft 		(*(double*)lnunftx)
#define invln2 		(*(double*)invln2x)
