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 implementationdependent, but it
is required by the standard that it covers the values from 1.0E38 to +1.0E38.
A userdefined 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
userdefined 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 userdefined) 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.
