Next: Exactness, Previous: Reals and Rationals, Up: Numbers [Contents][Index]

Complex numbers are the set of numbers that describe all possible points
in a two-dimensional space. The two coordinates of a particular point
in this space are known as the *real* and *imaginary* parts of
the complex number that describes that point.

In Guile, complex numbers are written in rectangular form as the sum of
their real and imaginary parts, using the symbol `i`

to indicate
the imaginary part.

3+4i ⇒ 3.0+4.0i (* 3-8i 2.3+0.3i) ⇒ 9.3-17.5i

Polar form can also be used, with an ‘`@`’ between magnitude and
angle,

1@3.141592 ⇒ -1.0 (approx) -1@1.57079 ⇒ 0.0-1.0i (approx)

Guile represents a complex number as a pair of inexact reals, so the real and imaginary parts of a complex number have the same properties of inexactness and limited precision as single inexact real numbers.

Note that each part of a complex number may contain any inexact real
value, including the special values ‘`+nan.0`’, ‘`+inf.0`’ and
‘`-inf.0`’, as well as either of the signed zeroes ‘`0.0`’ or
‘`-0.0`’.

- Scheme Procedure:
**complex?***z* - C Function:
**scm_complex_p***(z)* Return

`#t`

if`z`is a complex number,`#f`

otherwise. Note that the sets of real, rational and integer values form subsets of the set of complex numbers, i.e. the predicate will also be fulfilled if`z`is a real, rational or integer number.

- C Function:
*int***scm_is_complex***(SCM val)* Equivalent to

`scm_is_true (scm_complex_p (val))`

.