Floating Point Type
Formal Definition
Floating point
type provides an approximation of the real number value.
Simplified Syntax
type type_name is
real_number_left_bound downto
real_number_right_bound;
type type_name is
real_number_left_bound to real_number_right_bound;
Description
A floating point type is a
numeric type consisting of real numbers which values are constrained
by a specified range.
There exists only one predefined floating point type: REAL. The range
of the values for the type REAL are implementation-dependent, but it
is required by the standard that it covers the values from -1.0E38 to +1.0E38.
A user-defined floating point type
can be constructed on the basis of the predefined REAL type by
constraining its range (example 1). The bounds of the range of a
user-defined floating point type should be in the form of locally
static expression. The expression is classified as a locally static
if it is possible to determine its value without running the code.
The value of an expression used as a range for a floating point type
must also be of floating point type, not necessarily the same for
both bounds (example 2). Negative bounds are allowed.
All floating point types (including user-defined) have the same set
of arithmetic operators, namely: addition, subtraction,
multiplication, division, absolute function and exponentiation.
Examples
Example 1
type Voltage_Level is range
-5.5 to +5.5;
type Int_64K is range
- 65536.00 to 65535.00;
Example 2
type APPROX_VALUES_DOWNTO is range
(2.0**(N+1)) - 1.0 downto 0.0;
type APPROX_VALUES_TO is range
0.0 to (2.0**(N+1))
- 1.0;
Important Notes
-
In order to add, subtract, multiply or divide integer object to/from
a real object, type conversion of the integer object is needed. The
only exception from this rule is multiplication and division of
universal integer and universal real.
-
The floating point types are not synthesizeable by any of the
existing tools. Their use is thus very limited.
|