Contents Index Search Previous Next
3.5.6 Real Types
Real types provide approximations
to the real numbers, with relative bounds on errors for floating point
types, and with absolute bounds for fixed point types.
A type defined by a real_type_definition
is implicitly derived from root_real
, an anonymous predefined
(specific) real type. Hence, all real types, whether floating point or
fixed point, are in the derivation class rooted at root_real
are all of the type universal_real
, the universal type (see 3.4.1
for the class rooted at root_real
, allowing their use with the
operations of any real type.
operators have a result type of universal_fixed
the universal type for the class of fixed point types, allowing the result
of the multiplication or division to be used where any specific fixed
point type is expected.
The elaboration of a real_type_definition
consists of the elaboration of the floating_point_definition
or the fixed_point_definition
An implementation shall perform the run-time evaluation
of a use of a predefined operator of root_real with an accuracy
at least as great as that of any floating point type definable by a floating_point_definition.
For the execution of a predefined operation of
a real type, the implementation need not raise Constraint_Error if the
result is outside the base range of the type, so long as the correct
result is produced, or the Machine_Overflows attribute of the type is
false (see G.2
An implementation may provide
nonstandard real types
, descendants of root_real
declared outside of the specification of package Standard, which need
not have all the standard characteristics of a type defined by a real_type_definition
For example, a nonstandard real type might have an asymmetric or unsigned
base range, or its predefined operations might wrap around or ``saturate''
rather than overflow (modular or saturating arithmetic), or it might
not conform to the accuracy model (see G.2
Any type descended from a nonstandard real type is also nonstandard.
An implementation may place arbitrary restrictions on the use of such
types; it is implementation defined whether operators that are predefined
for ``any real type'' are defined for a particular nonstandard real type.
In any case, such types are not permitted as explicit_generic_actual_parameter
for formal scalar types -- see 12.5.2
32 As stated, real literals
are of the anonymous predefined real type universal_real. Other
real types have no literals. However, the overload resolution rules (see
8.6) allow expressions of the type universal_real
whenever a real type is expected.
Contents Index Search Previous Next Legal