diff options
Diffstat (limited to 'gcc/ada/doc')
-rw-r--r-- | gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst | 30 |
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 |