1 | /*
|
---|
2 | * *****************************************************************
|
---|
3 | * * *
|
---|
4 | * * Copyright (c) Digital Equipment Corporation, 1991, 1996 *
|
---|
5 | * * *
|
---|
6 | * * All Rights Reserved. Unpublished rights reserved under *
|
---|
7 | * * the copyright laws of the United States. *
|
---|
8 | * * *
|
---|
9 | * * The software contained on this media is proprietary to *
|
---|
10 | * * and embodies the confidential technology of Digital *
|
---|
11 | * * Equipment Corporation. Possession, use, duplication or *
|
---|
12 | * * dissemination of the software and media is authorized only *
|
---|
13 | * * pursuant to a valid written license from Digital Equipment *
|
---|
14 | * * Corporation. *
|
---|
15 | * * *
|
---|
16 | * * RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure *
|
---|
17 | * * by the U.S. Government is subject to restrictions as set *
|
---|
18 | * * forth in Subparagraph (c)(1)(ii) of DFARS 252.227-7013, *
|
---|
19 | * * or in FAR 52.227-19, as applicable. *
|
---|
20 | * * *
|
---|
21 | * *****************************************************************
|
---|
22 | */
|
---|
23 | /*
|
---|
24 | * HISTORY
|
---|
25 | */
|
---|
26 | /*
|
---|
27 | * (c) Copyright 1990, OPEN SOFTWARE FOUNDATION, INC.
|
---|
28 | * ALL RIGHTS RESERVED
|
---|
29 | */
|
---|
30 | /*
|
---|
31 | * OSF/1 Release 1.0
|
---|
32 | */
|
---|
33 | /*
|
---|
34 | * RESTRICTED RIGHTS LEGEND
|
---|
35 | * Use, Duplication or Disclosure by the Government is subject to
|
---|
36 | * restrictions as set forth in paragraph (b)(3)(B) of the rights in
|
---|
37 | * Technical Data and Computer Software clause in DAR 7-104.9(a).
|
---|
38 | */
|
---|
39 |
|
---|
40 | /*
|
---|
41 | * COMPONENT_NAME: (values.h) header file of common values
|
---|
42 | *
|
---|
43 | * ORIGINS: 27
|
---|
44 | *
|
---|
45 | * (C) COPYRIGHT International Business Machines Corp. 1985, 1988, 1989
|
---|
46 | * All Rights Reserved
|
---|
47 | * Licensed Materials - Property of IBM
|
---|
48 | *
|
---|
49 | * US Government Users Restricted Rights - Use, duplication or
|
---|
50 | * disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
|
---|
51 | */
|
---|
52 |
|
---|
53 | #ifndef _VALUES_H_
|
---|
54 | #define _VALUES_H_
|
---|
55 |
|
---|
56 | #include <limits.h>
|
---|
57 |
|
---|
58 | #define BITSPERBYTE CHAR_BIT
|
---|
59 | #define BITS(type) (BITSPERBYTE * sizeof(type))
|
---|
60 |
|
---|
61 | /* short, regular and long ints with only the high-order bit turned on */
|
---|
62 | #define HIBITS ((short)(1 << BITS(short) - 1))
|
---|
63 | #define HIBITI (1U << BITS(int) - 1)
|
---|
64 | #define HIBITL (1UL << BITS(long) - 1)
|
---|
65 |
|
---|
66 | /* largest short, regular and long int */
|
---|
67 | #define MAXSHORT ((short)~HIBITS)
|
---|
68 | #define MAXINT ((int)~HIBITI)
|
---|
69 | #define MAXLONG ((long)~HIBITL)
|
---|
70 |
|
---|
71 | /* various values that describe the binary floating-point representation
|
---|
72 | * DMAXEXP - the maximum exponent of a double (as returned by frexp())
|
---|
73 | * FMAXEXP - the maximum exponent of a float (as returned by frexp())
|
---|
74 | * DMINEXP - the minimum exponent of a double (as returned by frexp())
|
---|
75 | * FMINEXP - the minimum exponent of a float (as returned by frexp())
|
---|
76 | * MAXDOUBLE - the largest double
|
---|
77 | ((_EXPBASE ** DMAXEXP) * (1 - (_EXPBASE ** -DSIGNIF)))
|
---|
78 | * MAXFLOAT - the largest float
|
---|
79 | ((_EXPBASE ** FMAXEXP) * (1 - (_EXPBASE ** -FSIGNIF)))
|
---|
80 | * MINDOUBLE - the smallest double (_EXPBASE ** (DMINEXP - 1))
|
---|
81 | * MINFLOAT - the smallest float (_EXPBASE ** (FMINEXP - 1))
|
---|
82 | * DSIGNIF - the number of significant bits in a double
|
---|
83 | * FSIGNIF - the number of significant bits in a float
|
---|
84 | * DMAXPOWTWO - the largest power of two exactly representable as a double
|
---|
85 | * FMAXPOWTWO - the largest power of two exactly representable as a float
|
---|
86 | * LN_MAXDOUBLE - the natural log of the largest double -- log(MAXDOUBLE)
|
---|
87 | * LN_MINDOUBLE - the natural log of the smallest double -- log(MINDOUBLE)
|
---|
88 | * _DEXPLEN - the number of bits for the exponent of a double (11)
|
---|
89 | * _FEXPLEN - the number of bits for the exponent of a float (8)
|
---|
90 | *
|
---|
91 | * These values are no longer defined, however, they are reference in other
|
---|
92 | * defines to show how they were calculated.
|
---|
93 | *
|
---|
94 | * _EXPBASE - the exponent base (2)
|
---|
95 | * _IEEE - 1 if IEEE standard representation is used (1)
|
---|
96 | * _LENBASE - the number of bits in the exponent base (1 for binary)
|
---|
97 | * _HIDDENBIT - 1 if high-significance bit of mantissa is implicit
|
---|
98 | */
|
---|
99 | /* these are for the IEEE format machines */
|
---|
100 | #define MAXDOUBLE 1.7976931348623157e+308
|
---|
101 |
|
---|
102 | #ifndef _MAXFLOAT
|
---|
103 | #define _MAXFLOAT
|
---|
104 | #define MAXFLOAT ((float)3.40282346638528860e+38)
|
---|
105 | #endif
|
---|
106 |
|
---|
107 | #define MINDOUBLE 4.94065645841246544e-324
|
---|
108 | #define MINFLOAT ((float)1.40129846432481707e-45)
|
---|
109 | #define _IEEE 1
|
---|
110 | #define _DEXPLEN 11
|
---|
111 | #define _HIDDENBIT 1
|
---|
112 | #define DMINEXP (-(DMAXEXP + DSIGNIF - _HIDDENBIT - 3))
|
---|
113 | #define FMINEXP (-(FMAXEXP + FSIGNIF - _HIDDENBIT - 3))
|
---|
114 | #define DSIGNIF (BITS(double) - _DEXPLEN + _HIDDENBIT - 1)
|
---|
115 | #define FSIGNIF (BITS(float) - _FEXPLEN + _HIDDENBIT - 1)
|
---|
116 | #define DMAXPOWTWO ((double)(1L << BITS(int) - 2) * \
|
---|
117 | (1L<<DSIGNIF-BITS(int)+1))
|
---|
118 | #define FMAXPOWTWO ((float)(1L << FSIGNIF - 1))
|
---|
119 | #define DMAXEXP ((1 << _DEXPLEN - 1) - 1 + _IEEE)
|
---|
120 | #define FMAXEXP ((1 << _FEXPLEN - 1) - 1 + _IEEE)
|
---|
121 | #define LN_MAXDOUBLE (M_LN2 * DMAXEXP)
|
---|
122 | #define LN_MINDOUBLE (M_LN2 * (DMINEXP - 1))
|
---|
123 |
|
---|
124 | #define _DEXPLEN 11
|
---|
125 | #define _FEXPLEN 8
|
---|
126 |
|
---|
127 | #define H_PREC (DSIGNIF % 2 ? (1L << DSIGNIF/2) * M_SQRT2 : 1L << DSIGNIF/2)
|
---|
128 |
|
---|
129 | #define X_PLOSS ((double)(long)(M_PI * H_PREC))
|
---|
130 | #define X_TLOSS (M_PI * DMAXPOWTWO)
|
---|
131 |
|
---|
132 | /* The next values are duplicated in math.h. They have to be */
|
---|
133 | /* here too for to keep from having to include math.h. */
|
---|
134 | #define M_LN2 6.9314718055994530942E-1 /*Hex 2^-1 * 1.62E42FEFA39EF */
|
---|
135 | //#define M_PI 3.1415926535897932385E0 /*Hex 2^ 1 * 1.921FB54442D18 */
|
---|
136 | #define M_SQRT2 1.4142135623730950488E0 /*Hex 2^ 0 * 1.6A09E667F3BCD */
|
---|
137 |
|
---|
138 | #endif /* _VALUES_H_ */
|
---|