Contents   Index   Search   Previous   Next
 J.3 Reduced Accuracy Subtypes
1
   A digits_constraint
may be used to define a floating point subtype with a new value for its
requested decimal precision, as reflected by its Digits attribute. Similarly,
a delta_constraint may be used to
define an ordinary fixed point subtype with a new value for its delta,
as reflected by its Delta attribute. 
1.a
Discussion: It might
be more direct to make these attributes specifiable via an attribute_definition_clause,
and eliminate the syntax for these _constraints.
Syntax
2
delta_constraint
::= delta static_expression [
range_constraint]
 
Name Resolution Rules
3
   {expected type (delta_constraint
expression) [partial]} The 
expression
of a 
delta_constraint is expected
to be of any real type. 
 
Legality Rules
4
   The expression
of a delta_constraint shall be static.
5
   For a subtype_indication
with a delta_constraint, the subtype_mark
shall denote an ordinary fixed point subtype.
6
   {notwithstanding}
For a 
subtype_indication
with a 
digits_constraint, the 
subtype_mark
shall denote either a decimal fixed point subtype or a floating point
subtype (notwithstanding the rule given in 
3.5.9
that only allows a decimal fixed point subtype). 
 
6.a
Discussion: We may need
a better way to deal with obsolescent features with rules that contradict
those of the non-obsolescent parts of the standard. 
Static Semantics
7
   A subtype_indication
with a subtype_mark that denotes
an ordinary fixed point subtype and a delta_constraint
defines an ordinary fixed point subtype with a delta given by
the value of the expression of the
delta_constraint. If the delta_constraint
includes a range_constraint, then
the ordinary fixed point subtype is constrained by the range_constraint.
8
   A subtype_indication
with a subtype_mark that denotes
a floating point subtype and a digits_constraint
defines a floating point subtype with a requested decimal precision (as
reflected by its Digits attribute) given by the value of the expression
of the digits_constraint. If the
digits_constraint includes a range_constraint,
then the floating point subtype is constrained by the range_constraint.
Dynamic Semantics
9
   {compatibility (delta_constraint
with an ordinary fixed point subtype) [partial]} A
delta_constraint is 
compatible
with an ordinary fixed point subtype if the value of the 
expression
is no less than the 
delta of the subtype, and the 
range_constraint,
if any, is compatible with the subtype.
 
10
    {compatibility (digits_constraint
with a floating point subtype) [partial]} A
digits_constraint is 
compatible
with a floating point subtype if the value of the 
expression
is no greater than the requested decimal precision of the subtype, and
the 
range_constraint, if any, is
compatible with the subtype.
 
11
    {elaboration (delta_constraint)
[partial]} The elaboration of a 
delta_constraint
consists of the elaboration of the 
range_constraint,
if any. 
 
11.a
Reason: A numeric subtype
is considered ``constrained'' only if a range constraint applies to it.
The only effect of a digits_constraint
or a delta_constraint without a
range_constraint is to specify the
value of the corresponding Digits or Delta attribute in the new subtype.
The set of values of the subtype is not ``constrained'' in any way by
such _constraints. 
Wording Changes from Ada 83
11.b
In Ada 83, a delta_constraint
is called a fixed_point_constraint, and a digits_constraint
is called a floating_point_constraint. We have adopted other terms because
digits_constraints apply primarily
to decimal fixed point types now (they apply to floating point types
only as an obsolescent feature). 
Contents   Index   Search   Previous   Next   Legal