]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - gnu/include/values.h
This commit was generated by cvs2svn to compensate for changes in r77349,
[FreeBSD/FreeBSD.git] / gnu / include / values.h
1 #if __GNUC__
2 #warning "this file includes <values.h> which is obsoleted, use <limits.h> or <float.h> instead"
3 #endif
4
5 /*
6 Copyright (C) 1988 Free Software Foundation
7     written by Doug Lea (dl@rocky.oswego.edu)
8
9 This file is part of the GNU C++ Library.  This library is free
10 software; you can redistribute it and/or modify it under the terms of
11 the GNU Library General Public License as published by the Free
12 Software Foundation; either version 2 of the License, or (at your
13 option) any later version.  This library is distributed in the hope
14 that it will be useful, but WITHOUT ANY WARRANTY; without even the
15 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
16 PURPOSE.  See the GNU Library General Public License for more details.
17 You should have received a copy of the GNU Library General Public
18 License along with this library; if not, write to the Free Software
19 Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
20 */
21
22
23 #ifndef _VALUES_H_
24 #define _VALUES_H_
25
26 #define BITSPERBYTE 8
27 #define BITS(type)  (BITSPERBYTE * (int)sizeof(type))
28
29 #define CHARBITS    BITS(char)
30 #define SHORTBITS   BITS(short)
31 #define INTBITS     BITS(int)
32 #define LONGBITS    BITS(long)
33 #define PTRBITS     BITS(char*)
34 #define DOUBLEBITS  BITS(double)
35 #define FLOATBITS   BITS(float)
36
37 #define MINSHORT    ((short)(1 << (SHORTBITS - 1)))
38 #define MININT      (1 << (INTBITS - 1))
39 #define MINLONG     (1L << (LONGBITS - 1))
40
41 #define MAXSHORT    ((short)~MINSHORT)
42 #define MAXINT      (~MININT)
43 #define MAXLONG     (~MINLONG)
44
45 #define HIBITS  MINSHORT
46 #define HIBITL  MINLONG
47
48 #if defined(sun) || defined(hp300) || defined(hpux) || defined(masscomp) || defined(sgi)
49 #ifdef masscomp
50 #define MAXDOUBLE                                                       \
51 ({                                                                      \
52   double maxdouble_val;                                                 \
53                                                                         \
54   __asm ("fmove%.d #0x7fefffffffffffff,%0"      /* Max double */        \
55          : "=f" (maxdouble_val)                                         \
56          : /* no inputs */);                                            \
57   maxdouble_val;                                                        \
58 })
59 #define MAXFLOAT ((float) 3.40e+38)
60 #else
61 #define MAXDOUBLE   1.79769313486231470e+308
62 #define MAXFLOAT    ((float)3.40282346638528860e+38)
63 #endif
64 #define MINDOUBLE   4.94065645841246544e-324
65 #define MINFLOAT    ((float)1.40129846432481707e-45)
66 #define _IEEE       1
67 #define _DEXPLEN    11
68 #define _FEXPLEN    8
69 #define _HIDDENBIT  1
70 #define DMINEXP     (-(DMAXEXP + DSIGNIF - _HIDDENBIT - 3))
71 #define FMINEXP     (-(FMAXEXP + FSIGNIF - _HIDDENBIT - 3))
72 #define DMAXEXP     ((1 << _DEXPLEN - 1) - 1 + _IEEE)
73 #define FMAXEXP     ((1 << _FEXPLEN - 1) - 1 + _IEEE)
74
75 #elif defined(sony)
76 #define MAXDOUBLE   1.79769313486231470e+308
77 #define MAXFLOAT    ((float)3.40282346638528860e+38)
78 #define MINDOUBLE   2.2250738585072010e-308
79 #define MINFLOAT    ((float)1.17549435e-38)
80 #define _IEEE       1
81 #define _DEXPLEN    11
82 #define _FEXPLEN    8
83 #define _HIDDENBIT  1
84 #define DMINEXP     (-(DMAXEXP + DSIGNIF - _HIDDENBIT - 3))
85 #define FMINEXP     (-(FMAXEXP + FSIGNIF - _HIDDENBIT - 3))
86 #define DMAXEXP     ((1 << _DEXPLEN - 1) - 1 + _IEEE)
87 #define FMAXEXP     ((1 << _FEXPLEN - 1) - 1 + _IEEE)
88
89 #elif defined(sequent)
90 extern double _maxdouble, _mindouble;
91 extern float _maxfloat, _minfloat;
92 #define MAXDOUBLE       _maxdouble
93 #define MAXFLOAT        _maxfloat
94 #define MINDOUBLE       _mindouble
95 #define MINFLOAT        _minfloat
96 #define _IEEE       1
97 #define _DEXPLEN    11
98 #define _FEXPLEN    8
99 #define _HIDDENBIT  1
100 #define DMINEXP     (-(DMAXEXP - 3))
101 #define FMINEXP     (-(FMAXEXP - 3))
102 #define DMAXEXP     ((1 << _DEXPLEN - 1) - 1 + _IEEE)
103 #define FMAXEXP     ((1 << _FEXPLEN - 1) - 1 + _IEEE)
104
105 #elif defined(i386)
106 #define MAXDOUBLE   1.79769313486231570e+308
107 #define MAXFLOAT    ((float)3.40282346638528860e+38)
108 #define MINDOUBLE   2.22507385850720140e-308
109 #define MINFLOAT    ((float)1.17549435082228750e-38)
110 #define _IEEE       0
111 #define _DEXPLEN    11
112 #define _FEXPLEN    8
113 #define _HIDDENBIT  1
114 #define DMINEXP     (-DMAXEXP)
115 #define FMINEXP     (-FMAXEXP)
116 #define DMAXEXP     ((1 << _DEXPLEN - 1) - 1 + _IEEE)
117 #define FMAXEXP     ((1 << _FEXPLEN - 1) - 1 + _IEEE)
118
119 /* from Andrew Klossner <andrew%frip.wv.tek.com@relay.cs.net> */
120 #elif defined(m88k)
121         /* These are "good" guesses ...
122            I'll figure out the true mins and maxes later, at the time I find
123            out the mins and maxes that the compiler can tokenize. */
124 #define MAXDOUBLE   1.79769313486231e+308
125 #define MAXFLOAT    ((float)3.40282346638528e+38)
126 #define MINDOUBLE   2.22507385850720e-308
127 #define MINFLOAT    ((float)1.17549435082228e-38)
128 #define _IEEE       1
129 #define _DEXPLEN    11
130 #define _FEXPLEN    8
131 #define _HIDDENBIT  1
132 #define DMINEXP     (1-DMAXEXP)
133 #define FMINEXP     (1-FMAXEXP)
134 #define DMAXEXP     ((1 << _DEXPLEN - 1) - 1 + _IEEE)
135 #define FMAXEXP     ((1 << _FEXPLEN - 1) - 1 + _IEEE)
136
137 #elif defined(convex)
138 #define MAXDOUBLE   8.9884656743115785e+306
139 #define MAXFLOAT    ((float) 1.70141173e+38)
140 #define MINDOUBLE   5.5626846462680035e-308
141 #define MINFLOAT    ((float) 2.93873588e-39)
142 #define _IEEE       0
143 #define _DEXPLEN    11
144 #define _FEXPLEN    8
145 #define _HIDDENBIT  1
146 #define DMINEXP     (-DMAXEXP)
147 #define FMINEXP     (-FMAXEXP)
148 #define DMAXEXP     ((1 << _DEXPLEN - 1) - 1 + _IEEE)
149 #define FMAXEXP     ((1 << _FEXPLEN - 1) - 1 + _IEEE)
150
151 /* #elif defined(vax) */
152 /* use vax versions by default -- they seem to be the most conservative */
153 #else
154
155 #define MAXDOUBLE   1.701411834604692293e+38
156 #define MINDOUBLE   (2.938735877055718770e-39)
157
158 #define MAXFLOAT    1.7014117331926443e+38
159 #define MINFLOAT    2.9387358770557188e-39
160
161 #define _IEEE       0
162 #define _DEXPLEN    8
163 #define _FEXPLEN    8
164 #define _HIDDENBIT  1
165 #define DMINEXP     (-DMAXEXP)
166 #define FMINEXP     (-FMAXEXP)
167 #define DMAXEXP     ((1 << _DEXPLEN - 1) - 1 + _IEEE)
168 #define FMAXEXP     ((1 << _FEXPLEN - 1) - 1 + _IEEE)
169 #endif
170
171 #define DSIGNIF     (DOUBLEBITS - _DEXPLEN + _HIDDENBIT - 1)
172 #define FSIGNIF     (FLOATBITS  - _FEXPLEN + _HIDDENBIT - 1)
173 #define DMAXPOWTWO  ((double)(1L << LONGBITS -2)*(1L << DSIGNIF - LONGBITS +1))
174 #define FMAXPOWTWO  ((float)(1L << FSIGNIF - 1))
175
176 #endif  /* !_VALUES_H_ */
177