aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/doc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ada/doc')
-rw-r--r--gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst30
1 files changed, 20 insertions, 10 deletions
diff --git a/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst b/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
index 14516e7..7dc28c2 100644
--- a/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
+++ b/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
@@ -153,16 +153,26 @@ The small is the largest power of two that does not exceed the delta.
"What combinations of small, range, and digits are
supported for fixed point types. See 3.5.9(10)."
-For an ordinary fixed point type, the small must lie in 2.0**(-80) .. 2.0**80
-and the range in -10.0**36 .. 10.0**36; any combination is permitted that
-does not result in a mantissa larger than 63 bits. However, if the mantissa
-is larger than 53 bits on machines where Long_Long_Float is 64 bits (true
-of all architectures except x86), then the output from Text_IO may be
-accurate to only 53 bits, rather than the full mantissa. This is because
-floating-point conversions may be used to convert fixed point.
-
-For a decimal fixed point type, the small must lie in 10.0**(-18) .. 10.0**18
-and the digits in 1 .. 18.
+For an ordinary fixed point type, on 32-bit platforms, the small must lie in
+2.0**(-80) .. 2.0**80 and the range in -9.0E+36 .. 9.0E+36; any combination
+is permitted that does not result in a mantissa larger than 63 bits.
+
+On 64-bit platforms, the small must lie in 2.0**(-127) .. 2.0**127 and the
+range in -1.0E+76 .. 1.0E+76; any combination is permitted that does not
+result in a mantissa larger than 63 bits, and any combination is permitted
+that results in a mantissa between 64 and 127 bits if the small is either
+an integer or the reciprocal of an integer.
+
+If the small is either an integer or the reciprocal of an integer, which
+is the case if no ``small`` clause is provided, then the operations of the
+fixed point type are entirely implemented by means of integer instructions.
+In the other cases, some operations, in particular input and output, may be
+implemented by means of floating-point instructions and may be affected by
+accuracy issues on architectures other than x86.
+
+For a decimal fixed point type, on 32-bit platforms, the small must lie in
+1.0E-18 .. 1.0E+18 and the digits in 1 .. 18. On 64-bit platforms, the
+small must lie in 1.0E-38 .. 1.0E+38 and the digits in 1 .. 38.
*
"The result of ``Tags.Expanded_Name`` for types declared