objc/
[official-gcc.git] / gcc / ada / ttypef.ads
blobc4524e4c85c7e367665023016a03ef6e072d15af
1 ------------------------------------------------------------------------------
2 -- --
3 -- GNAT COMPILER COMPONENTS --
4 -- --
5 -- T T Y P E F --
6 -- --
7 -- S p e c --
8 -- --
9 -- Copyright (C) 1992-2001 Free Software Foundation, Inc. --
10 -- --
11 -- GNAT is free software; you can redistribute it and/or modify it under --
12 -- terms of the GNU General Public License as published by the Free Soft- --
13 -- ware Foundation; either version 2, or (at your option) any later ver- --
14 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
15 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
16 -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
17 -- for more details. You should have received a copy of the GNU General --
18 -- Public License distributed with GNAT; see file COPYING. If not, write --
19 -- to the Free Software Foundation, 51 Franklin Street, Fifth Floor, --
20 -- Boston, MA 02110-1301, USA. --
21 -- --
22 -- GNAT was originally developed by the GNAT team at New York University. --
23 -- Extensive contributions were provided by Ada Core Technologies Inc. --
24 -- --
25 ------------------------------------------------------------------------------
27 -- This module contains values for the predefined floating-point attributes.
28 -- All references to these attribute values in a program being compiled must
29 -- use the values in this package, not the values returned by referencing
30 -- the corresponding attributes (since that would give host machine values).
31 -- Boolean-valued attributes are defined in System.Parameters, because they
32 -- need a finer control than what is provided by the formats described below.
34 -- The codes for the eight floating-point formats supported are:
36 -- IEEES - IEEE Single Float
37 -- IEEEL - IEEE Double Float
38 -- IEEEX - IEEE Double Extended Float
39 -- VAXFF - VAX F Float
40 -- VAXDF - VAX D Float
41 -- VAXGF - VAX G Float
42 -- AAMPS - AAMP 32-bit Float
43 -- AAMPL - AAMP 48-bit Float
45 package Ttypef is
47 ----------------------------------
48 -- Universal Integer Attributes --
49 ----------------------------------
51 -- Note that the constant declarations below specify values
52 -- using the Ada model, so IEEES_Machine_Emax does not specify
53 -- the IEEE definition of the single precision float type,
54 -- but the value of the Ada attribute which is one higher
55 -- as the binary point is at a different location.
57 IEEES_Digits : constant := 6;
58 IEEEL_Digits : constant := 15;
59 IEEEX_Digits : constant := 18;
60 VAXFF_Digits : constant := 6;
61 VAXDF_Digits : constant := 9;
62 VAXGF_Digits : constant := 15;
63 AAMPS_Digits : constant := 6;
64 AAMPL_Digits : constant := 9;
66 IEEES_Machine_Emax : constant := 128;
67 IEEEL_Machine_Emax : constant := 1024;
68 IEEEX_Machine_Emax : constant := 16384;
69 VAXFF_Machine_Emax : constant := 127;
70 VAXDF_Machine_Emax : constant := 127;
71 VAXGF_Machine_Emax : constant := 1023;
72 AAMPS_Machine_Emax : constant := 127;
73 AAMPL_Machine_Emax : constant := 127;
75 IEEES_Machine_Emin : constant := -125;
76 IEEEL_Machine_Emin : constant := -1021;
77 IEEEX_Machine_Emin : constant := -16381;
78 VAXFF_Machine_Emin : constant := -127;
79 VAXDF_Machine_Emin : constant := -127;
80 VAXGF_Machine_Emin : constant := -1023;
81 AAMPS_Machine_Emin : constant := -127;
82 AAMPL_Machine_Emin : constant := -127;
84 IEEES_Machine_Mantissa : constant := 24;
85 IEEEL_Machine_Mantissa : constant := 53;
86 IEEEX_Machine_Mantissa : constant := 64;
87 VAXFF_Machine_Mantissa : constant := 24;
88 VAXDF_Machine_Mantissa : constant := 56;
89 VAXGF_Machine_Mantissa : constant := 53;
90 AAMPS_Machine_Mantissa : constant := 24;
91 AAMPL_Machine_Mantissa : constant := 40;
93 IEEES_Model_Emin : constant := -125;
94 IEEEL_Model_Emin : constant := -1021;
95 IEEEX_Model_Emin : constant := -16381;
96 VAXFF_Model_Emin : constant := -127;
97 VAXDF_Model_Emin : constant := -127;
98 VAXGF_Model_Emin : constant := -1023;
99 AAMPS_Model_Emin : constant := -127;
100 AAMPL_Model_Emin : constant := -127;
102 IEEES_Model_Mantissa : constant := 24;
103 IEEEL_Model_Mantissa : constant := 53;
104 IEEEX_Model_Mantissa : constant := 64;
105 VAXFF_Model_Mantissa : constant := 24;
106 VAXDF_Model_Mantissa : constant := 56;
107 VAXGF_Model_Mantissa : constant := 53;
108 AAMPS_Model_Mantissa : constant := 24;
109 AAMPL_Model_Mantissa : constant := 40;
111 IEEES_Safe_Emax : constant := 128;
112 IEEEL_Safe_Emax : constant := 1024;
113 IEEEX_Safe_Emax : constant := 16384;
114 VAXFF_Safe_Emax : constant := 127;
115 VAXDF_Safe_Emax : constant := 127;
116 VAXGF_Safe_Emax : constant := 1023;
117 AAMPS_Safe_Emax : constant := 127;
118 AAMPL_Safe_Emax : constant := 127;
120 -------------------------------
121 -- Universal Real Attributes --
122 -------------------------------
124 IEEES_Model_Epsilon : constant := 2#1.0#E-23;
125 IEEEL_Model_Epsilon : constant := 2#1.0#E-52;
126 IEEEX_Model_Epsilon : constant := 2#1.0#E-63;
127 VAXFF_Model_Epsilon : constant := 16#0.1000_000#E-4;
128 VAXDF_Model_Epsilon : constant := 16#0.4000_0000_0000_000#E-7;
129 VAXGF_Model_Epsilon : constant := 16#0.4000_0000_0000_00#E-12;
130 AAMPS_Model_Epsilon : constant := 2#1.0#E-23;
131 AAMPL_Model_Epsilon : constant := 2#1.0#E-39;
133 IEEES_Model_Small : constant := 2#1.0#E-126;
134 IEEEL_Model_Small : constant := 2#1.0#E-1022;
135 IEEEX_Model_Small : constant := 2#1.0#E-16381;
136 VAXFF_Model_Small : constant := 16#0.8000_000#E-21;
137 VAXDF_Model_Small : constant := 16#0.8000_0000_0000_000#E-31;
138 VAXGF_Model_Small : constant := 16#0.8000_0000_0000_00#E-51;
139 AAMPS_Model_Small : constant := 16#0.8000_000#E-21;
140 AAMPL_Model_Small : constant := 16#0.8000_0000_000#E-31;
142 IEEES_Safe_First : constant := -16#0.FFFF_FF#E+32;
143 IEEEL_Safe_First : constant := -16#0.FFFF_FFFF_FFFF_F8#E+256;
144 IEEEX_Safe_First : constant := -16#0.FFFF_FFFF_FFFF_FFFF#E+4096;
145 VAXFF_Safe_First : constant := -16#0.7FFF_FF8#E+32;
146 VAXDF_Safe_First : constant := -16#0.7FFF_FFFF_FFFF_FF8#E-38;
147 VAXGF_Safe_First : constant := -16#0.7FFF_FFFF_FFFF_FC#E-256;
148 AAMPS_Safe_First : constant := -16#0.7FFF_FF8#E+32;
149 AAMPL_Safe_First : constant := -16#0.7FFF_FFFF_FF8#E+32;
151 IEEES_Safe_Large : constant := 16#0.FFFF_FF#E+32;
152 IEEEL_Safe_Large : constant := 16#0.FFFF_FFFF_FFFF_F8#E+256;
153 IEEEX_Safe_Large : constant := 16#0.FFFF_FFFF_FFFF_FFFF#E+4096;
154 VAXFF_Safe_Large : constant := 16#0.7FFF_FC0#E+32;
155 VAXDF_Safe_Large : constant := 16#0.7FFF_FFFF_0000_000#E+32;
156 VAXGF_Safe_Large : constant := 16#0.7FFF_FFFF_FFFF_F0#E+256;
157 AAMPS_Safe_Large : constant := 16#0.7FFF_FC0#E+32;
158 AAMPL_Safe_Large : constant := 16#0.7FFF_FFFF#E+32;
160 IEEES_Safe_Last : constant := 16#0.FFFF_FF#E+32;
161 IEEEL_Safe_Last : constant := 16#0.FFFF_FFFF_FFFF_F8#E+256;
162 IEEEX_Safe_Last : constant := 16#0.FFFF_FFFF_FFFF_FFFF#E+4096;
163 VAXFF_Safe_Last : constant := 16#0.7FFF_FF8#E+32;
164 VAXDF_Safe_Last : constant := 16#0.7FFF_FFFF_FFFF_FC0#E+32;
165 VAXGF_Safe_Last : constant := 16#0.7FFF_FFFF_FFFF_FC#E+256;
166 AAMPS_Safe_Last : constant := 16#0.7FFF_FF8#E+32;
167 AAMPL_Safe_Last : constant := 16#0.7FFF_FFFF_FF8#E+32;
169 IEEES_Safe_Small : constant := 2#1.0#E-126;
170 IEEEL_Safe_Small : constant := 2#1.0#E-1022;
171 IEEEX_Safe_Small : constant := 2#1.0#E-16381;
172 VAXFF_Safe_Small : constant := 16#0.1000_000#E-31;
173 VAXDF_Safe_Small : constant := 16#0.1000_0000_0000_000#E-31;
174 VAXGF_Safe_Small : constant := 16#0.1000_0000_0000_00#E-255;
175 AAMPS_Safe_Small : constant := 16#0.1000_000#E-31;
176 AAMPL_Safe_Small : constant := 16#0.1000_0000_000#E-31;
178 ----------------------
179 -- Typed Attributes --
180 ----------------------
182 -- The attributes First and Last are typed attributes in Ada, and yield
183 -- values of the appropriate float type. However we still describe them
184 -- as universal real values in this file, since we are talking about the
185 -- target floating-point types, not the host floating-point types.
187 IEEES_First : constant := -16#0.FFFF_FF#E+32;
188 IEEEL_First : constant := -16#0.FFFF_FFFF_FFFF_F8#E+256;
189 IEEEX_First : constant := -16#0.FFFF_FFFF_FFFF_FFFF#E+4096;
190 VAXFF_First : constant := -16#0.7FFF_FF8#E+32;
191 VAXDF_First : constant := -16#0.7FFF_FFFF_FFFF_FF8#E+32;
192 VAXGF_First : constant := -16#0.7FFF_FFFF_FFFF_FC#E+256;
193 AAMPS_First : constant := -16#0.7FFF_FF8#E+32;
194 AAMPL_First : constant := -16#0.7FFF_FFFF_FF8#E+32;
196 IEEES_Last : constant := 16#0.FFFF_FF#E+32;
197 IEEEL_Last : constant := 16#0.FFFF_FFFF_FFFF_F8#E+256;
198 IEEEX_Last : constant := 16#0.FFFF_FFFF_FFFF_FFFF#E+4096;
199 VAXFF_Last : constant := 16#0.7FFF_FF8#E+32;
200 VAXDF_Last : constant := 16#0.7FFF_FFFF_FFFF_FC0#E+32;
201 VAXGF_Last : constant := 16#0.7FFF_FFFF_FFFF_FC#E+256;
202 AAMPS_Last : constant := 16#0.7FFF_FF8#E+32;
203 AAMPL_Last : constant := 16#0.7FFF_FFFF_FF8#E+32;
205 end Ttypef;