CLCS
Type

short-float, single-float, double-float, long-float

Supertypes

short-float: short-float, float, real, number, t

single-float: single-float, float, real, number, t

double-float: double-float, float, real, number, t

long-float: long-float, float, real, number, t

Description

For the four defined subtypes of type 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_2b) and the exponent size (also measured in "bits," computed as \log_2(n+1), where n is the maximum exponent value) is recommended to be at least as great as the values in Figure 12–11. Each of the defined subtypes of type float might or might not have a minus zero.

Format Minimum Precision Minimum Exponent Size
Short13 bits5 bits
Single24 bits8 bits
Double50 bits8 bits
Long50 bits8 bits
Figure 12–11: Recommended Minimum Floating-Point Precision and Exponent Size

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

  • If there is only one, it is the type single-float. In this representation, an object is simultaneously of types single-float, double-float, short-float, and long-float.

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

    • Two types are provided: single-float and short-float. An object is simultaneously of types single-float, double-float, and long-float.

    • Two types are provided: single-float and double-float. An object is simultaneously of types single-float and short-float, or double-float and long-float.

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

    • Three types are provided: short-float, single-float, and double-float. An object can simultaneously be of type double-float and long-float.

    • Three types are provided: single-float, double-float, and long-float. An object can simultaneously be of types single-float and short-float.

Compound Type Specifier Kind

Abbreviating.

Compound Type Specifier Syntax

(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]]})

Compound Type Specifier Arguments

short-lower-limit, short-upper-limitinterval designators for type short-float. The defaults for each of lower-limit and upper-limit is the symbol *.
single-lower-limit, single-upper-limitinterval designators for type single-float. The defaults for each of lower-limit and upper-limit is the symbol *.
double-lower-limit, double-upper-limitinterval designators for type double-float. The defaults for each of lower-limit and upper-limit is the symbol *.
long-lower-limit, long-upper-limitinterval designators for type long-float. The defaults for each of lower-limit and upper-limit is the symbol *.

Compound Type Specifier Description

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