CLHS: System Class COMPLEX

#

System Class COMPLEX

Class Precedence List:

complex, number, t

Description:

The type complex includes all mathematical complex numbers other than those included in the type rational. Complexes are expressed in Cartesian form with a real part and an imaginary part, each of which is a real. The real part and imaginary part are either both rational or both of the same float type. The imaginary part can be a float zero, but can never be a rational zero, for such a number is always represented by Common Lisp as a rational rather than a complex.

Compound Type Specifier Kind:

Specializing.

Compound Type Specifier Syntax:

complex [typespec | *]

Compound Type Specifier Arguments:

typespec---a type specifier that denotes a subtype of type real.

Compound Type Specifier Description:

Every element of this type is a complex whose real part and imaginary part are each of type `(upgraded-complex-part-type` typespec`)`. This type encompasses those complexes that can result by giving numbers of type typespec to complex.

`(complex` type-specifier`)` refers to all complexes that can result from giving numbers of type type-specifier to the function complex, plus all other complexes of the same specialized representation.

See Also:

Section 12.1.5.3 (Rule of Canonical Representation for Complex Rationals), Section 2.3.2 (Constructing Numbers from Tokens), Section 22.1.3.1.4 (Printing Complexes)

Notes:

The input syntax for a complex with real part r and imaginary part i is `#C(r i)`. For further details, see Section 2.4 (Standard Macro Characters).

For every float, n, there is a complex which represents the same mathematical number and which can be obtained by `(COERCE n 'COMPLEX)`.

The following X3J13 cleanup issue, not part of the specification, applies to this section:

- ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING

Copyright 1996-2005, LispWorks Ltd. All rights reserved.