12.10 Implementation Parameters

The values of the named constants defined in this section are implementation-dependent. They may be useful for parameterizing code in some situations.

[Constant] most-positive-fixnum
[Constant] most-negative-fixnum

The value of most-positive-fixnum is that fixnum closest in value to positive infinity provided by the implementation.

The value of most-negative-fixnum is that fixnum closest in value to negative infinity provided by the implementation.

X3J13 voted in January 1989 to specify that fixnum must be a supertype of the type (signed-byte 16), and additionally that the value of array-dimension-limit must be a fixnum. This implies that the value of most-negative-fixnum must be less than or equal to − 215, and the value of most-positive-fixnum must be greater than or equal to both 215 − 1 and the value of array-dimension-limit.


[Constant] most-positive-short-float
[Constant] least-positive-short-float
[Constant] least-negative-short-float
[Constant] most-negative-short-float

The value of most-positive-short-float is that short-format floating-point number closest in value to (but not equal to) positive infinity provided by the implementation.

The value of least-positive-short-float is that positive short-format floating-point number closest in value to (but not equal to) zero provided by the implementation.

The value of least-negative-short-float is that negative short-format floating-point number closest in value to (but not equal to) zero provided by the implementation. (Note that even if an implementation supports minus zero as a distinct short floating-point value, least-negative-short-float must not be minus zero.)

X3J13 voted in June 1989 to clarify that these definitions are to be taken quite literally. In implementations that support denormalized numbers, the values of least-positive-short-float and least-negative-short-float may be denormalized.

The value of most-negative-short-float is that short-format floating-point number closest in value to (but not equal to) negative infinity provided by the implementation.


[Constant] most-positive-single-float
[Constant] least-positive-single-float
[Constant] least-negative-single-float
[Constant] most-negative-single-float
[Constant] most-positive-double-float
[Constant] least-positive-double-float
[Constant] least-negative-double-float
[Constant] most-negative-double-float
[Constant] most-positive-long-float
[Constant] least-positive-long-float
[Constant] least-negative-long-float
[Constant] most-negative-long-float

These are analogous to the constants defined above for short-format floating-point numbers.


[Constant] least-positive-normalized-short-float
[Constant] least-negative-normalized-short-float

X3J13 voted in June 1989 to add these constants to the language.

The value of least-positive-normalized-short-float is that positive normalized short-format floating-point number closest in value to (but not equal to) zero provided by the implementation. In implementations that do not support denormalized numbers this may be the same as the value of least-positive-short-float.

The value of least-negative-normalized-short-float is that negative normalized short-format floating-point number closest in value to (but not equal to) zero provided by the implementation. (Note that even if an implementation supports minus zero as a distinct short floating-point value, least-negative-normalized-short-float must not be minus zero.) In implementations that do not support denormalized numbers this may be the same as the value of least-positive-short-float.


[Constant] least-positive-normalized-single-float
[Constant] least-negative-normalized-single-float
[Constant] least-positive-normalized-double-float
[Constant] least-negative-normalized-double-float
[Constant] least-positive-normalized-long-float
[Constant] least-negative-normalized-long-float

These are analogous to the constants defined above for short-format floating-point numbers.


[Constant] short-float-epsilon
[Constant] single-float-epsilon
[Constant] double-float-epsilon
[Constant] long-float-epsilon

These constants have as value, for each floating-point format, the smallest positive floating-point number e of that format such that the expression

(not (= (float 1 e) (+ (float 1 e) e)))

is true when actually evaluated.


[Constant] short-float-negative-epsilon
[Constant] single-float-negative-epsilon
[Constant] double-float-negative-epsilon
[Constant] long-float-negative-epsilon

These constants have as value, for each floating-point format, the smallest positive floating-point number e of that format such that the expression

(not (= (float 1 e) (- (float 1 e) e)))

is true when actually evaluated.