For the four defined subtypes of **float**, it is true that intermediate between the type **short-float** and the type **long-float** are the type **single-float** and the type **double-float**. The precise definition of these categories is *implementation-defined*. The precision (measured in "bits", computed as `p * log`

) and the exponent size (also measured in "bits," computed as _{2}b`log`

, where _{2}(n + 1)`n`

is the maximum exponent value) is recommended to be at least as great as the values in the below table. Each of the defined subtypes of **float** might or might not have a minus zero.

Format | Minimum Precision | Minimum Exponent Size |
---|---|---|

Short | 13 bits | 5 bits |

Single | 24 bits | 8 bits |

Double | 50 bits | 8 bits |

Long | 50 bits | 8 bits |

There can be fewer than four internal representations for *floats*. If there are fewer distinct representations, the following rules apply:

- Two internal representations can be arranged in either of the following ways:
- Three internal representations can be arranged in either of the following ways:

Abbreviating.

**short-float**[*short-lower-limit*[*short-upper-limit*]]**single-float**[*single-lower-limit*[*single-upper-limit*]]**double-float**[*double-lower-limit*[*double-upper-limit*]]**long-float**[*long-lower-limit*[*long-upper-limit*]]

*short-lower-limit*, *short-upper-limit* - *interval designators* for *type* **short-float**. The default for each *lower-limit* and *upper-limit* is the *symbol* *****.

*single-lower-limit*, *single-upper-limit* - *interval designators* for *type* **single-float**. The default for each *lower-limit* and *upper-limit* is the *symbol* *****.

*double-lower-limit*, *double-upper-limit* - *interval designators* for *type* **double-float**. The default for each *lower-limit* and *upper-limit* is the *symbol* *****.

*long-lower-limit*, *long-upper-limit* - *interval designators* for *type* **long-float**. The default for each *lower-limit* and *upper-limit* is the *symbol* *****.

Each of these denotes the set of *floats* of the indicated *type* that are on the interval specified by the *interval designators*.

\issue{REAL-NUMBER-TYPE:X3J13-MAR-89} \issue{REAL-NUMBER-TYPE:X3J13-MAR-89} \issue{REAL-NUMBER-TYPE:X3J13-MAR-89} \issue{REAL-NUMBER-TYPE:X3J13-MAR-89}