This module is always available. It provides access to mathematical functions for complex numbers. The functions are:
j, both continuous from above. These branch cuts should be considered a bug to be corrected in a future release. The correct branch cuts should extend along the imaginary axis, one from
1jup to ∞
jand continuous from the right, and one from -
1jdown to -∞
jand continuous from the left.
1jalong the imaginary axis to ∞
j, continuous from the left. The other extends from -
1jalong the imaginary axis to -∞
j, continuous from the left. (This should probably be changed so the upper cut becomes continuous from the other side.)
The module also defines two mathematical constants:
Note that the selection of functions is similar, but not identical, to
that in module math . The reason for having
two modules is that some users aren't interested in complex numbers,
and perhaps don't even know what they are. They would rather have
math.sqrt(-1) raise an exception than return a complex number.
Also note that the functions defined in cmath always return a
complex number, even if the answer can be expressed as a real number
(in which case the complex number has an imaginary part of zero).
A note on branch cuts: They are curves along which the given function fails to be continuous. They are a necessary feature of many complex functions. It is assumed that if you need to compute with complex functions, you will understand about branch cuts. Consult almost any (not too elementary) book on complex variables for enlightenment. For information of the proper choice of branch cuts for numerical purposes, a good reference should be the following:
Kahan, W: Branch cuts for complex elementary functions; or, Much ado about nothings's sign bit. In Iserles, A., and Powell, M. (eds.), The state of the art in numerical analysis. Clarendon Press (1987) pp165-211.