xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/float.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi /* Copyright (C) 2002, 2007 Free Software Foundation, Inc.
2*53ee8cc1Swenshuai.xi 
3*53ee8cc1Swenshuai.xi This file is part of GCC.
4*53ee8cc1Swenshuai.xi 
5*53ee8cc1Swenshuai.xi GCC is free software; you can redistribute it and/or modify
6*53ee8cc1Swenshuai.xi it under the terms of the GNU General Public License as published by
7*53ee8cc1Swenshuai.xi the Free Software Foundation; either version 2, or (at your option)
8*53ee8cc1Swenshuai.xi any later version.
9*53ee8cc1Swenshuai.xi 
10*53ee8cc1Swenshuai.xi GCC is distributed in the hope that it will be useful,
11*53ee8cc1Swenshuai.xi but WITHOUT ANY WARRANTY; without even the implied warranty of
12*53ee8cc1Swenshuai.xi MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13*53ee8cc1Swenshuai.xi GNU General Public License for more details.
14*53ee8cc1Swenshuai.xi 
15*53ee8cc1Swenshuai.xi You should have received a copy of the GNU General Public License
16*53ee8cc1Swenshuai.xi along with GCC; see the file COPYING.  If not, write to
17*53ee8cc1Swenshuai.xi the Free Software Foundation, 51 Franklin Street, Fifth Floor,
18*53ee8cc1Swenshuai.xi Boston, MA 02110-1301, USA.  */
19*53ee8cc1Swenshuai.xi 
20*53ee8cc1Swenshuai.xi /* As a special exception, if you include this header file into source
21*53ee8cc1Swenshuai.xi    files compiled by GCC, this header file does not by itself cause
22*53ee8cc1Swenshuai.xi    the resulting executable to be covered by the GNU General Public
23*53ee8cc1Swenshuai.xi    License.  This exception does not however invalidate any other
24*53ee8cc1Swenshuai.xi    reasons why the executable file might be covered by the GNU General
25*53ee8cc1Swenshuai.xi    Public License.  */
26*53ee8cc1Swenshuai.xi 
27*53ee8cc1Swenshuai.xi /*
28*53ee8cc1Swenshuai.xi  * ISO C Standard:  5.2.4.2.2  Characteristics of floating types <float.h>
29*53ee8cc1Swenshuai.xi  */
30*53ee8cc1Swenshuai.xi 
31*53ee8cc1Swenshuai.xi #ifndef _FLOAT_H___
32*53ee8cc1Swenshuai.xi #define _FLOAT_H___
33*53ee8cc1Swenshuai.xi 
34*53ee8cc1Swenshuai.xi /* Radix of exponent representation, b. */
35*53ee8cc1Swenshuai.xi #undef FLT_RADIX
36*53ee8cc1Swenshuai.xi #define FLT_RADIX	__FLT_RADIX__
37*53ee8cc1Swenshuai.xi 
38*53ee8cc1Swenshuai.xi /* Number of base-FLT_RADIX digits in the significand, p.  */
39*53ee8cc1Swenshuai.xi #undef FLT_MANT_DIG
40*53ee8cc1Swenshuai.xi #undef DBL_MANT_DIG
41*53ee8cc1Swenshuai.xi #undef LDBL_MANT_DIG
42*53ee8cc1Swenshuai.xi #define FLT_MANT_DIG	__FLT_MANT_DIG__
43*53ee8cc1Swenshuai.xi #define DBL_MANT_DIG	__DBL_MANT_DIG__
44*53ee8cc1Swenshuai.xi #define LDBL_MANT_DIG	__LDBL_MANT_DIG__
45*53ee8cc1Swenshuai.xi 
46*53ee8cc1Swenshuai.xi /* Number of decimal digits, q, such that any floating-point number with q
47*53ee8cc1Swenshuai.xi    decimal digits can be rounded into a floating-point number with p radix b
48*53ee8cc1Swenshuai.xi    digits and back again without change to the q decimal digits,
49*53ee8cc1Swenshuai.xi 
50*53ee8cc1Swenshuai.xi 	p * log10(b)			if b is a power of 10
51*53ee8cc1Swenshuai.xi 	floor((p - 1) * log10(b))	otherwise
52*53ee8cc1Swenshuai.xi */
53*53ee8cc1Swenshuai.xi #undef FLT_DIG
54*53ee8cc1Swenshuai.xi #undef DBL_DIG
55*53ee8cc1Swenshuai.xi #undef LDBL_DIG
56*53ee8cc1Swenshuai.xi #define FLT_DIG		__FLT_DIG__
57*53ee8cc1Swenshuai.xi #define DBL_DIG		__DBL_DIG__
58*53ee8cc1Swenshuai.xi #define LDBL_DIG	__LDBL_DIG__
59*53ee8cc1Swenshuai.xi 
60*53ee8cc1Swenshuai.xi /* Minimum int x such that FLT_RADIX**(x-1) is a normalized float, emin */
61*53ee8cc1Swenshuai.xi #undef FLT_MIN_EXP
62*53ee8cc1Swenshuai.xi #undef DBL_MIN_EXP
63*53ee8cc1Swenshuai.xi #undef LDBL_MIN_EXP
64*53ee8cc1Swenshuai.xi #define FLT_MIN_EXP	__FLT_MIN_EXP__
65*53ee8cc1Swenshuai.xi #define DBL_MIN_EXP	__DBL_MIN_EXP__
66*53ee8cc1Swenshuai.xi #define LDBL_MIN_EXP	__LDBL_MIN_EXP__
67*53ee8cc1Swenshuai.xi 
68*53ee8cc1Swenshuai.xi /* Minimum negative integer such that 10 raised to that power is in the
69*53ee8cc1Swenshuai.xi    range of normalized floating-point numbers,
70*53ee8cc1Swenshuai.xi 
71*53ee8cc1Swenshuai.xi 	ceil(log10(b) * (emin - 1))
72*53ee8cc1Swenshuai.xi */
73*53ee8cc1Swenshuai.xi #undef FLT_MIN_10_EXP
74*53ee8cc1Swenshuai.xi #undef DBL_MIN_10_EXP
75*53ee8cc1Swenshuai.xi #undef LDBL_MIN_10_EXP
76*53ee8cc1Swenshuai.xi #define FLT_MIN_10_EXP	__FLT_MIN_10_EXP__
77*53ee8cc1Swenshuai.xi #define DBL_MIN_10_EXP	__DBL_MIN_10_EXP__
78*53ee8cc1Swenshuai.xi #define LDBL_MIN_10_EXP	__LDBL_MIN_10_EXP__
79*53ee8cc1Swenshuai.xi 
80*53ee8cc1Swenshuai.xi /* Maximum int x such that FLT_RADIX**(x-1) is a representable float, emax.  */
81*53ee8cc1Swenshuai.xi #undef FLT_MAX_EXP
82*53ee8cc1Swenshuai.xi #undef DBL_MAX_EXP
83*53ee8cc1Swenshuai.xi #undef LDBL_MAX_EXP
84*53ee8cc1Swenshuai.xi #define FLT_MAX_EXP	__FLT_MAX_EXP__
85*53ee8cc1Swenshuai.xi #define DBL_MAX_EXP	__DBL_MAX_EXP__
86*53ee8cc1Swenshuai.xi #define LDBL_MAX_EXP	__LDBL_MAX_EXP__
87*53ee8cc1Swenshuai.xi 
88*53ee8cc1Swenshuai.xi /* Maximum integer such that 10 raised to that power is in the range of
89*53ee8cc1Swenshuai.xi    representable finite floating-point numbers,
90*53ee8cc1Swenshuai.xi 
91*53ee8cc1Swenshuai.xi 	floor(log10((1 - b**-p) * b**emax))
92*53ee8cc1Swenshuai.xi */
93*53ee8cc1Swenshuai.xi #undef FLT_MAX_10_EXP
94*53ee8cc1Swenshuai.xi #undef DBL_MAX_10_EXP
95*53ee8cc1Swenshuai.xi #undef LDBL_MAX_10_EXP
96*53ee8cc1Swenshuai.xi #define FLT_MAX_10_EXP	__FLT_MAX_10_EXP__
97*53ee8cc1Swenshuai.xi #define DBL_MAX_10_EXP	__DBL_MAX_10_EXP__
98*53ee8cc1Swenshuai.xi #define LDBL_MAX_10_EXP	__LDBL_MAX_10_EXP__
99*53ee8cc1Swenshuai.xi 
100*53ee8cc1Swenshuai.xi /* Maximum representable finite floating-point number,
101*53ee8cc1Swenshuai.xi 
102*53ee8cc1Swenshuai.xi 	(1 - b**-p) * b**emax
103*53ee8cc1Swenshuai.xi */
104*53ee8cc1Swenshuai.xi #undef FLT_MAX
105*53ee8cc1Swenshuai.xi #undef DBL_MAX
106*53ee8cc1Swenshuai.xi #undef LDBL_MAX
107*53ee8cc1Swenshuai.xi #define FLT_MAX		__FLT_MAX__
108*53ee8cc1Swenshuai.xi #define DBL_MAX		__DBL_MAX__
109*53ee8cc1Swenshuai.xi #define LDBL_MAX	__LDBL_MAX__
110*53ee8cc1Swenshuai.xi 
111*53ee8cc1Swenshuai.xi /* The difference between 1 and the least value greater than 1 that is
112*53ee8cc1Swenshuai.xi    representable in the given floating point type, b**1-p.  */
113*53ee8cc1Swenshuai.xi #undef FLT_EPSILON
114*53ee8cc1Swenshuai.xi #undef DBL_EPSILON
115*53ee8cc1Swenshuai.xi #undef LDBL_EPSILON
116*53ee8cc1Swenshuai.xi #define FLT_EPSILON	__FLT_EPSILON__
117*53ee8cc1Swenshuai.xi #define DBL_EPSILON	__DBL_EPSILON__
118*53ee8cc1Swenshuai.xi #define LDBL_EPSILON	__LDBL_EPSILON__
119*53ee8cc1Swenshuai.xi 
120*53ee8cc1Swenshuai.xi /* Minimum normalized positive floating-point number, b**(emin - 1).  */
121*53ee8cc1Swenshuai.xi #undef FLT_MIN
122*53ee8cc1Swenshuai.xi #undef DBL_MIN
123*53ee8cc1Swenshuai.xi #undef LDBL_MIN
124*53ee8cc1Swenshuai.xi #define FLT_MIN		__FLT_MIN__
125*53ee8cc1Swenshuai.xi #define DBL_MIN		__DBL_MIN__
126*53ee8cc1Swenshuai.xi #define LDBL_MIN	__LDBL_MIN__
127*53ee8cc1Swenshuai.xi 
128*53ee8cc1Swenshuai.xi /* Addition rounds to 0: zero, 1: nearest, 2: +inf, 3: -inf, -1: unknown.  */
129*53ee8cc1Swenshuai.xi /* ??? This is supposed to change with calls to fesetround in <fenv.h>.  */
130*53ee8cc1Swenshuai.xi #undef FLT_ROUNDS
131*53ee8cc1Swenshuai.xi #define FLT_ROUNDS 1
132*53ee8cc1Swenshuai.xi 
133*53ee8cc1Swenshuai.xi #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
134*53ee8cc1Swenshuai.xi /* The floating-point expression evaluation method.
135*53ee8cc1Swenshuai.xi         -1  indeterminate
136*53ee8cc1Swenshuai.xi          0  evaluate all operations and constants just to the range and
137*53ee8cc1Swenshuai.xi             precision of the type
138*53ee8cc1Swenshuai.xi          1  evaluate operations and constants of type float and double
139*53ee8cc1Swenshuai.xi             to the range and precision of the double type, evaluate
140*53ee8cc1Swenshuai.xi             long double operations and constants to the range and
141*53ee8cc1Swenshuai.xi             precision of the long double type
142*53ee8cc1Swenshuai.xi          2  evaluate all operations and constants to the range and
143*53ee8cc1Swenshuai.xi             precision of the long double type
144*53ee8cc1Swenshuai.xi 
145*53ee8cc1Swenshuai.xi    ??? This ought to change with the setting of the fp control word;
146*53ee8cc1Swenshuai.xi    the value provided by the compiler assumes the widest setting.  */
147*53ee8cc1Swenshuai.xi #undef FLT_EVAL_METHOD
148*53ee8cc1Swenshuai.xi #define FLT_EVAL_METHOD	__FLT_EVAL_METHOD__
149*53ee8cc1Swenshuai.xi 
150*53ee8cc1Swenshuai.xi /* Number of decimal digits, n, such that any floating-point number in the
151*53ee8cc1Swenshuai.xi    widest supported floating type with pmax radix b digits can be rounded
152*53ee8cc1Swenshuai.xi    to a floating-point number with n decimal digits and back again without
153*53ee8cc1Swenshuai.xi    change to the value,
154*53ee8cc1Swenshuai.xi 
155*53ee8cc1Swenshuai.xi 	pmax * log10(b)			if b is a power of 10
156*53ee8cc1Swenshuai.xi 	ceil(1 + pmax * log10(b))	otherwise
157*53ee8cc1Swenshuai.xi */
158*53ee8cc1Swenshuai.xi #undef DECIMAL_DIG
159*53ee8cc1Swenshuai.xi #define DECIMAL_DIG	__DECIMAL_DIG__
160*53ee8cc1Swenshuai.xi 
161*53ee8cc1Swenshuai.xi #endif /* C99 */
162*53ee8cc1Swenshuai.xi 
163*53ee8cc1Swenshuai.xi #ifdef __STDC_WANT_DEC_FP__
164*53ee8cc1Swenshuai.xi /* Draft Technical Report 24732, extension for decimal floating-point
165*53ee8cc1Swenshuai.xi    arithmetic: Characteristic of decimal floating types <float.h>.  */
166*53ee8cc1Swenshuai.xi 
167*53ee8cc1Swenshuai.xi /* Number of base-FLT_RADIX digits in the significand, p.  */
168*53ee8cc1Swenshuai.xi #undef DEC32_MANT_DIG
169*53ee8cc1Swenshuai.xi #undef DEC64_MANT_DIG
170*53ee8cc1Swenshuai.xi #undef DEC128_MANT_DIG
171*53ee8cc1Swenshuai.xi #define DEC32_MANT_DIG	__DEC32_MANT_DIG__
172*53ee8cc1Swenshuai.xi #define DEC64_MANT_DIG	__DEC64_MANT_DIG__
173*53ee8cc1Swenshuai.xi #define DEC128_MANT_DIG	__DEC128_MANT_DIG__
174*53ee8cc1Swenshuai.xi 
175*53ee8cc1Swenshuai.xi /* Minimum exponent. */
176*53ee8cc1Swenshuai.xi #undef DEC32_MIN_EXP
177*53ee8cc1Swenshuai.xi #undef DEC64_MIN_EXP
178*53ee8cc1Swenshuai.xi #undef DEC128_MIN_EXP
179*53ee8cc1Swenshuai.xi #define DEC32_MIN_EXP	__DEC32_MIN_EXP__
180*53ee8cc1Swenshuai.xi #define DEC64_MIN_EXP	__DEC64_MIN_EXP__
181*53ee8cc1Swenshuai.xi #define DEC128_MIN_EXP	__DEC128_MIN_EXP__
182*53ee8cc1Swenshuai.xi 
183*53ee8cc1Swenshuai.xi /* Maximum exponent. */
184*53ee8cc1Swenshuai.xi #undef DEC32_MAX_EXP
185*53ee8cc1Swenshuai.xi #undef DEC64_MAX_EXP
186*53ee8cc1Swenshuai.xi #undef DEC128_MAX_EXP
187*53ee8cc1Swenshuai.xi #define DEC32_MAX_EXP	__DEC32_MAX_EXP__
188*53ee8cc1Swenshuai.xi #define DEC64_MAX_EXP	__DEC64_MAX_EXP__
189*53ee8cc1Swenshuai.xi #define DEC128_MAX_EXP	__DEC128_MAX_EXP__
190*53ee8cc1Swenshuai.xi 
191*53ee8cc1Swenshuai.xi /* Maximum representable finite decimal floating-point number
192*53ee8cc1Swenshuai.xi    (there are 6, 15, and 33 9s after the decimal points respectively). */
193*53ee8cc1Swenshuai.xi #undef DEC32_MAX
194*53ee8cc1Swenshuai.xi #undef DEC64_MAX
195*53ee8cc1Swenshuai.xi #undef DEC128_MAX
196*53ee8cc1Swenshuai.xi #define DEC32_MAX   __DEC32_MAX__
197*53ee8cc1Swenshuai.xi #define DEC64_MAX   __DEC64_MAX__
198*53ee8cc1Swenshuai.xi #define DEC128_MAX  __DEC128_MAX__
199*53ee8cc1Swenshuai.xi 
200*53ee8cc1Swenshuai.xi /* The difference between 1 and the least value greater than 1 that is
201*53ee8cc1Swenshuai.xi    representable in the given floating point type. */
202*53ee8cc1Swenshuai.xi #undef DEC32_EPSILON
203*53ee8cc1Swenshuai.xi #undef DEC64_EPSILON
204*53ee8cc1Swenshuai.xi #undef DEC128_EPSILON
205*53ee8cc1Swenshuai.xi #define DEC32_EPSILON	__DEC32_EPSILON__
206*53ee8cc1Swenshuai.xi #define DEC64_EPSILON	__DEC64_EPSILON__
207*53ee8cc1Swenshuai.xi #define DEC128_EPSILON	__DEC128_EPSILON__
208*53ee8cc1Swenshuai.xi 
209*53ee8cc1Swenshuai.xi /* Minimum normalized positive floating-point number. */
210*53ee8cc1Swenshuai.xi #undef DEC32_MIN
211*53ee8cc1Swenshuai.xi #undef DEC64_MIN
212*53ee8cc1Swenshuai.xi #undef DEC128_MIN
213*53ee8cc1Swenshuai.xi #define DEC32_MIN	__DEC32_MIN__
214*53ee8cc1Swenshuai.xi #define DEC64_MIN	__DEC64_MIN__
215*53ee8cc1Swenshuai.xi #define DEC128_MIN	__DEC128_MIN__
216*53ee8cc1Swenshuai.xi 
217*53ee8cc1Swenshuai.xi /* Minimum denormalized positive floating-point number. */
218*53ee8cc1Swenshuai.xi #undef DEC32_DEN
219*53ee8cc1Swenshuai.xi #undef DEC64_DEN
220*53ee8cc1Swenshuai.xi #undef DEC128_DEN
221*53ee8cc1Swenshuai.xi #define DEC32_DEN       __DEC32_DEN__
222*53ee8cc1Swenshuai.xi #define DEC64_DEN       __DEC64_DEN__
223*53ee8cc1Swenshuai.xi #define DEC128_DEN      __DEC128_DEN__
224*53ee8cc1Swenshuai.xi 
225*53ee8cc1Swenshuai.xi /* The floating-point expression evaluation method.
226*53ee8cc1Swenshuai.xi          -1  indeterminate
227*53ee8cc1Swenshuai.xi          0  evaluate all operations and constants just to the range and
228*53ee8cc1Swenshuai.xi             precision of the type
229*53ee8cc1Swenshuai.xi          1  evaluate operations and constants of type _Decimal32
230*53ee8cc1Swenshuai.xi 	    and _Decimal64 to the range and precision of the _Decimal64
231*53ee8cc1Swenshuai.xi             type, evaluate _Decimal128 operations and constants to the
232*53ee8cc1Swenshuai.xi 	    range and precision of the _Decimal128 type;
233*53ee8cc1Swenshuai.xi 	 2  evaluate all operations and constants to the range and
234*53ee8cc1Swenshuai.xi 	    precision of the _Decimal128 type.  */
235*53ee8cc1Swenshuai.xi 
236*53ee8cc1Swenshuai.xi #undef DECFLT_EVAL_METHOD
237*53ee8cc1Swenshuai.xi #define DECFLT_EVAL_METHOD	__DECFLT_EVAL_METHOD__
238*53ee8cc1Swenshuai.xi 
239*53ee8cc1Swenshuai.xi #endif /* __STDC_WANT_DEC_FP__ */
240*53ee8cc1Swenshuai.xi 
241*53ee8cc1Swenshuai.xi #endif /* _FLOAT_H___ */
242