### complex (System Class)

##### 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)`

.