Static Semantics
- (1)
- The following attributes are defined for every fixed point subtype S:
- (2)
- S'Small
S'Small denotes the small of the type of S. The value of this attribute
is of the type universal_real. Small may be specified for nonderived fixed
point types via an attribute_definition_clause (see
13.3); the expression of such a clause shall be static.
- (3)
- S'Delta
S'Delta denotes the delta of the fixed point subtype S. The
value of this attribute is of the type universal_real.
- (4)
- S'Fore
S'Fore yields the minimum number of characters needed before
the decimal point for the decimal representation of any value
of the subtype S, assuming that the representation does not
include an exponent, but includes a one-character prefix that
is either a minus sign or a space. (This minimum number does
not include superfluous zeros or underlines, and is at least
2.) The value of this attribute is of the type universal_integer.
- (5)
- S'Aft
S'Aft yields the number of decimal digits needed after the
decimal point to accommodate the delta of the subtype S,
unless the delta of the subtype S is greater than 0.1, in
which case the attribute yields the value one. (S'Aft is the
smallest positive integer N for which (10**N)*S'Delta is
greater than or equal to one.) The value of this attribute
is of the type universal_integer.
- (6)
- The following additional attributes are defined for every decimal fixed
point subtype S:
- (7)
- S'Digits
S'Digits denotes the digits of the decimal fixed point
subtype S, which corresponds to the number of decimal digits
that are representable in objects of the subtype. The value
of this attribute is of the type universal_integer. Its
value is determined as follows:
- (8)
- For a first subtype or a subtype defined by a
subtype_indication with a digits_constraint, the
digits is the value of the expression given after
the reserved word digits;
- (9)
- For a subtype defined by a subtype_indication
without a digits_constraint, the digits of the
subtype is the same as that of the subtype
denoted by the subtype_mark in the subtype_indication.
- (10)
- The digits of a base subtype is the largest
integer D such that the range -(10**D-1)*delta ..
+(10**D-1)*delta is included in the base range of
the type.
- (11)
- S'Scale
S'Scale denotes the scale of the subtype S, defined as the
value N such that S'Delta = 10.0**(-N). The scale indicates
the position of the point relative to the rightmost
significant digits of values of subtype S. The value of this
attribute is of the type universal_integer.
- (12)
- S'Round
S'Round denotes a function with the following specification:
(13)
function S'Round(X : universal_real)
return S'Base
- (14)
The function returns the value obtained by rounding X
(away from 0, if X is midway between two values of the type
of S).
-
- (15)
(37) All subtypes of a fixed point type will have the same value for the
Delta attribute, in the absence of delta_constraints (see
J.3).
- (16)
(38) S'Scale is not always the same as S'Aft for a decimal subtype; for
example, if S'Delta = 1.0 then S'Aft is 1 while S'Scale is 0.
- (17)
(39) The predefined operations of a fixed point type include the
assignment operation, qualification, the membership tests, and explicit
conversion to and from other numeric types. They also include the
relational operators and the following predefined arithmetic operators:
the binary and unary adding operators - and +, multiplying operators,
and the unary operator abs.
- (18)
(40) As for all types, objects of a fixed point type have Size and Address
attributes (see 13.3). Other attributes of fixed
point types are defined in A.5.4.
-- Email comments, additions, corrections, gripes, kudos, etc. to:
Magnus Kempe -- Magnus.Kempe@di.epfl.ch
Copyright statement
Page last generated: 95-03-12