76 lines
3.0 KiB
C
76 lines
3.0 KiB
C
/* @(#)libm.h 1.1 92/07/30 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)
|