Contents   Index   Search   Previous   Next
 G.2.2 Model-Oriented Attributes of Floating Point Types
1
   In implementations that support the Numerics Annex,
the model-oriented attributes of floating point types shall yield the
values defined here, in both the strict and the relaxed modes. These
definitions add conditions to those in 
A.5.3.
 
Static Semantics
2
   For every subtype
S of a floating point type T: 
3
-    S'Model_Mantissa
 - 
Yields the number of digits in the mantissa of the canonical form of
the model numbers of T (see A.5.3).
The value of this attribute shall be greater than or equal to Ceiling(d
· log(10) / log(T'Machine_Radix)) + 1, where d is
the requested decimal precision of T. In addition, it shall be
less than or equal to the value of T'Machine_Mantissa. This attribute
yields a value of the type universal_integer. 
 
4
-    S'Model_Emin
 - 
Yields the minimum exponent of the canonical form of the model numbers
of T (see A.5.3). The value of this
attribute shall be greater than or equal to the value of T'Machine_Emin.
This attribute yields a value of the type universal_integer. 
 
5
-    S'Safe_First
 - 
Yields the lower bound of the safe range of T. The value of this
attribute shall be a model number of T and greater than or equal
to the lower bound of the base range of T. In addition, if T
is declared by a floating_point_definition
or is derived from such a type, and the floating_point_definition
includes a real_range_specification
specifying a lower bound of lb, then the value of this attribute
shall be less than or equal to lb; otherwise, it shall be less
than or equal to -10.0 4 ·
d, where d is the requested decimal
precision of T. This attribute yields a value of the type universal_real.
 
6
-    S'Safe_Last
 - 
Yields the upper bound of the safe range of T. The value of this
attribute shall be a model number of T and less than or equal
to the upper bound of the base range of T. In addition, if T
is declared by a floating_point_definition
or is derived from such a type, and the floating_point_definition
includes a real_range_specification
specifying an upper bound of ub, then the value of this attribute
shall be greater than or equal to ub; otherwise, it shall be greater
than or equal to 10.0 4 ·
d, where d is the requested decimal precision
of T. This attribute yields a value of the type universal_real.
 
7
-    S'Model
 - 
Denotes a function (of a parameter X) whose specification is given
in A.5.3. If X is a model number of
T, the function yields X; otherwise, it yields the value
obtained by rounding or truncating X to either one of the adjacent
model numbers of T. Constraint_Error
is raised if the resulting model number is outside the safe range of
S. A zero result has the sign of X when S'Signed_Zeros is True.
 
8
   Subject to the constraints
given above, the values of S'Model_Mantissa and S'Safe_Last are to be
maximized, and the values of S'Model_Emin and S'Safe_First minimized,
by the implementation as follows: 
9
- First, S'Model_Mantissa is set to
the largest value for which values of S'Model_Emin, S'Safe_First, and
S'Safe_Last can be chosen so that the implementation satisfies the strict-mode
requirements of G.2.1 in terms of the model
numbers and safe range induced by these attributes.
 
10
- Next, S'Model_Emin is set to the smallest
value for which values of S'Safe_First and S'Safe_Last can be chosen
so that the implementation satisfies the strict-mode requirements of
G.2.1 in terms of the model numbers and safe
range induced by these attributes and the previously determined value
of S'Model_Mantissa.
 
11
- Finally, S'Safe_First and S'Safe_last
are set (in either order) to the smallest and largest values, respectively,
for which the implementation satisfies the strict-mode requirements of
G.2.1 in terms of the model numbers and safe
range induced by these attributes and the previously determined values
of S'Model_Mantissa and S'Model_Emin. 
 
Contents   Index   Search   Previous   Next   Legal