OSDN Git Service

2002-04-12 Eric Norum <eric.norum@usask.ca>
[pf3gnuchains/gcc-fork.git] / gcc / config / float-sparc.h
1 /* float.h for target with IEEE 32, 64 and 128 bit SPARC floating point formats
2    (on sparc-linux long double is 64 bit, while on sparc64-linux 128 bit) */
3 #ifndef _FLOAT_H_
4 #define _FLOAT_H_
5 /* Produced by enquire version 4.3, CWI, Amsterdam */
6
7    /* Radix of exponent representation */
8 #undef FLT_RADIX
9 #define FLT_RADIX 2
10    /* Number of base-FLT_RADIX digits in the significand of a float */
11 #undef FLT_MANT_DIG
12 #define FLT_MANT_DIG 24
13    /* Number of decimal digits of precision in a float */
14 #undef FLT_DIG
15 #define FLT_DIG 6
16    /* Addition rounds to 0: zero, 1: nearest, 2: +inf, 3: -inf, -1: unknown */
17 #undef FLT_ROUNDS
18 #define FLT_ROUNDS 1
19    /* Difference between 1.0 and the minimum float greater than 1.0 */
20 #undef FLT_EPSILON
21 #define FLT_EPSILON 1.19209290e-07F
22    /* Minimum int x such that FLT_RADIX**(x-1) is a normalised float */
23 #undef FLT_MIN_EXP
24 #define FLT_MIN_EXP (-125)
25    /* Minimum normalised float */
26 #undef FLT_MIN
27 #define FLT_MIN 1.17549435e-38F
28    /* Minimum int x such that 10**x is a normalised float */
29 #undef FLT_MIN_10_EXP
30 #define FLT_MIN_10_EXP (-37)
31    /* Maximum int x such that FLT_RADIX**(x-1) is a representable float */
32 #undef FLT_MAX_EXP
33 #define FLT_MAX_EXP 128
34    /* Maximum float */
35 #undef FLT_MAX
36 #define FLT_MAX 3.40282347e+38F
37    /* Maximum int x such that 10**x is a representable float */
38 #undef FLT_MAX_10_EXP
39 #define FLT_MAX_10_EXP 38
40
41    /* Number of base-FLT_RADIX digits in the significand of a double */
42 #undef DBL_MANT_DIG
43 #define DBL_MANT_DIG 53
44    /* Number of decimal digits of precision in a double */
45 #undef DBL_DIG
46 #define DBL_DIG 15
47    /* Difference between 1.0 and the minimum double greater than 1.0 */
48 #undef DBL_EPSILON
49 #define DBL_EPSILON 2.2204460492503131e-16
50    /* Minimum int x such that FLT_RADIX**(x-1) is a normalised double */
51 #undef DBL_MIN_EXP
52 #define DBL_MIN_EXP (-1021)
53    /* Minimum normalised double */
54 #undef DBL_MIN
55 #define DBL_MIN 2.2250738585072014e-308
56    /* Minimum int x such that 10**x is a normalised double */
57 #undef DBL_MIN_10_EXP
58 #define DBL_MIN_10_EXP (-307)
59    /* Maximum int x such that FLT_RADIX**(x-1) is a representable double */
60 #undef DBL_MAX_EXP
61 #define DBL_MAX_EXP 1024
62    /* Maximum double */
63 #undef DBL_MAX
64 #define DBL_MAX 1.7976931348623157e+308
65    /* Maximum int x such that 10**x is a representable double */
66 #undef DBL_MAX_10_EXP
67 #define DBL_MAX_10_EXP 308
68
69 #if defined(__sparcv9) || defined(__arch64__)
70
71    /* Number of base-FLT_RADIX digits in the significand of a long double */
72 #undef LDBL_MANT_DIG
73 #define LDBL_MANT_DIG 113
74    /* Number of decimal digits of precision in a long double */
75 #undef LDBL_DIG
76 #define LDBL_DIG 33
77    /* Difference between 1.0 and the minimum long double greater than 1.0 */
78 #undef LDBL_EPSILON
79 #define LDBL_EPSILON 1.925929944387235853055977942584927319E-34L
80    /* Minimum int x such that FLT_RADIX**(x-1) is a normalised long double */
81 #undef LDBL_MIN_EXP
82 #define LDBL_MIN_EXP (-16381)
83    /* Minimum normalised long double */
84 #undef LDBL_MIN
85 #define LDBL_MIN 3.362103143112093506262677817321752603E-4932L
86    /* Minimum int x such that 10**x is a normalised long double */
87 #undef LDBL_MIN_10_EXP
88 #define LDBL_MIN_10_EXP (-4931)
89    /* Maximum int x such that FLT_RADIX**(x-1) is a representable long double */
90 #undef LDBL_MAX_EXP
91 #define LDBL_MAX_EXP 16384
92    /* Maximum long double */
93 #undef LDBL_MAX
94 #define LDBL_MAX 1.189731495357231765085759326628007016E+4932L
95    /* Maximum int x such that 10**x is a representable long double */
96 #undef LDBL_MAX_10_EXP
97 #define LDBL_MAX_10_EXP 4932
98
99 #else /* sparc32 */
100
101 #undef LDBL_MANT_DIG
102 #define LDBL_MANT_DIG DBL_MANT_DIG
103 #undef LDBL_DIG
104 #define LDBL_DIG DBL_DIG
105 #undef LDBL_EPSILON
106 #define LDBL_EPSILON DBL_EPSILON
107 #undef LDBL_MIN_EXP
108 #define LDBL_MIN_EXP DBL_MIN_EXP
109 #undef LDBL_MIN
110 #define LDBL_MIN DBL_MIN
111 #undef LDBL_MIN_10_EXP
112 #define LDBL_MIN_10_EXP DBL_MIN_10_EXP
113 #undef LDBL_MAX_EXP
114 #define LDBL_MAX_EXP DBL_MAX_EXP
115 #undef LDBL_MAX
116 #define LDBL_MAX DBL_MAX
117 #undef LDBL_MAX_10_EXP
118 #define LDBL_MAX_10_EXP DBL_MAX_10_EXP
119
120 #endif /* sparc32 */
121
122 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
123    /* The floating-point expression evaluation method.
124         -1  indeterminate
125          0  evaluate all operations and constants just to the range and
126             precision of the type
127          1  evaluate operations and constants of type float and double
128             to the range and precision of the double type, evaluate
129             long double operations and constants to the range and
130             precision of the long double type
131          2  evaluate all operations and constants to the range and
132             precision of the long double type
133    */
134 # undef FLT_EVAL_METHOD
135 # define FLT_EVAL_METHOD        0
136
137    /* Number of decimal digits to enable rounding to the given number of
138       decimal digits without loss of precision.
139          if FLT_RADIX == 10^n:  #mantissa * log10 (FLT_RADIX)
140          else                :  ceil (1 + #mantissa * log10 (FLT_RADIX))
141       where #mantissa is the number of bits in the mantissa of the widest
142       supported floating-point type.
143    */
144 # undef DECIMAL_DIG
145 # if LDBL_MANT_DIG == 53
146 #  define DECIMAL_DIG   17
147 # else
148 #  define DECIMAL_DIG   36
149 # endif
150
151 #endif  /* C99 */
152
153 #endif /*  _FLOAT_H_ */