complex
realpart &optional imagpart ⇒ complex
complex returns a number whose real part is realpart and whose imaginary part is imagpart.
If realpart is a rational and imagpart is the rational number zero, the result of complex is realpart, a rational. Otherwise, the result is a complex.
If either realpart or imagpart is a float,
the non-float is converted to a float
before the complex is created.
If imagpart is not supplied, the imaginary part is a
zero of the same type as realpart; i.e., (coerce 0 (type-of realpart))
is
effectively used.
Type upgrading implies a movement upwards in the type hierarchy lattice. In the case of complexes, the type-specifier
[Reviewer Note by Barmar: What type specifier?]
must be a subtype of
(upgraded-complex-part-type type-specifier)
.
If type-specifier1 is a subtype of type-specifier2, then
(upgraded-complex-element-type 'type-specifier1)
must also be a subtype of
(upgraded-complex-element-type 'type-specifier2)
.
Two disjoint types can be upgraded into
the same thing.
(complex 0) ⇒ 0
(complex 0.0) ⇒ #C(0.0 0.0)
(complex 1 1/2) ⇒ #C(1 1/2)
(complex 1 .99) ⇒ #C(1.0 0.99)
(complex 3/2 0.0) ⇒ #C(1.5 0.0)
realpart; imagpart , imagpart
#c(a b) ≡ #.(complex a b)