| \section{\module{cmath} --- | 
 |          Mathematical functions for complex numbers} | 
 |  | 
 | \declaremodule{builtin}{cmath} | 
 | \modulesynopsis{Mathematical functions for complex numbers.} | 
 |  | 
 | This module is always available.  It provides access to mathematical | 
 | functions for complex numbers.  The functions are: | 
 |  | 
 | \begin{funcdesc}{acos}{x} | 
 | Return the arc cosine of \var{x}. | 
 | There are two branch cuts: | 
 | One extends right from 1 along the real axis to \infinity, continuous | 
 | from below. | 
 | The other extends left from -1 along the real axis to -\infinity, | 
 | continuous from above. | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{acosh}{x} | 
 | Return the hyperbolic arc cosine of \var{x}. | 
 | There is one branch cut, extending left from 1 along the real axis | 
 | to -\infinity, continuous from above. | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{asin}{x} | 
 | Return the arc sine of \var{x}. | 
 | This has the same branch cuts as \function{acos()}. | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{asinh}{x} | 
 | Return the hyperbolic arc sine of \var{x}. | 
 | There are two branch cuts, extending left from \plusminus\code{1j} to | 
 | \plusminus-\infinity\code{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 \code{1j} up to \infinity\code{j} and continuous from the | 
 | right, and one from -\code{1j} down to -\infinity\code{j} and | 
 | continuous from the left. | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{atan}{x} | 
 | Return the arc tangent of \var{x}. | 
 | There are two branch cuts: | 
 | One extends from \code{1j} along the imaginary axis to | 
 | \infinity\code{j}, continuous from the left. | 
 | The other extends from -\code{1j} along the imaginary axis to | 
 | -\infinity\code{j}, continuous from the left. | 
 | (This should probably be changed so the upper cut becomes continuous | 
 | from the other side.) | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{atanh}{x} | 
 | Return the hyperbolic arc tangent of \var{x}. | 
 | There are two branch cuts: | 
 | One extends from 1 along the real axis to \infinity, continuous | 
 | from above. | 
 | The other extends from -1 along the real axis to -\infinity, | 
 | continuous from above. | 
 | (This should probably be changed so the right cut becomes continuous from | 
 | the other side.) | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{cos}{x} | 
 | Return the cosine of \var{x}. | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{cosh}{x} | 
 | Return the hyperbolic cosine of \var{x}. | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{exp}{x} | 
 | Return the exponential value \code{e**\var{x}}. | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{log}{x} | 
 | Return the natural logarithm of \var{x}. | 
 | There is one branch cut, from 0 along the negative real axis to | 
 | -\infinity, continuous from above. | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{log10}{x} | 
 | Return the base-10 logarithm of \var{x}. | 
 | This has the same branch cut as \function{log()}. | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{sin}{x} | 
 | Return the sine of \var{x}. | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{sinh}{x} | 
 | Return the hyperbolic sine of \var{x}. | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{sqrt}{x} | 
 | Return the square root of \var{x}. | 
 | This has the same branch cut as \function{log()}. | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{tan}{x} | 
 | Return the tangent of \var{x}. | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{tanh}{x} | 
 | Return the hyperbolic tangent of \var{x}. | 
 | \end{funcdesc} | 
 |  | 
 | The module also defines two mathematical constants: | 
 |  | 
 | \begin{datadesc}{pi} | 
 | The mathematical constant \emph{pi}, as a real. | 
 | \end{datadesc} | 
 |  | 
 | \begin{datadesc}{e} | 
 | The mathematical constant \emph{e}, as a real. | 
 | \end{datadesc} | 
 |  | 
 | Note that the selection of functions is similar, but not identical, to | 
 | that in module \refmodule{math}\refbimodindex{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 | 
 | \code{math.sqrt(-1)} raise an exception than return a complex number. | 
 | Also note that the functions defined in \module{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: | 
 |  | 
 | \begin{seealso} | 
 |   \seetext{Kahan, W:  Branch cuts for complex elementary functions; | 
 |            or, Much ado about nothings's sign bit.  In Iserles, A., | 
 |            and Powell, M. (eds.), \citetitle{The state of the art in | 
 |            numerical analysis}. Clarendon Press (1987) pp165-211.} | 
 | \end{seealso} |