| 
									
										
										
										
											1998-08-10 19:42:37 +00:00
										 |  |  | \section{\module{cmath} --- | 
					
						
							| 
									
										
										
										
											1999-04-21 16:29:18 +00:00
										 |  |  |          Mathematical functions for complex numbers} | 
					
						
							| 
									
										
										
										
											1998-07-23 17:59:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-04-21 16:29:18 +00:00
										 |  |  | \declaremodule{builtin}{cmath} | 
					
						
							| 
									
										
										
										
											1998-07-23 17:59:49 +00:00
										 |  |  | \modulesynopsis{Mathematical functions for complex numbers.} | 
					
						
							| 
									
										
										
										
											1997-07-17 16:13:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-04-21 16:29:18 +00:00
										 |  |  | This module is always available.  It provides access to mathematical | 
					
						
							|  |  |  | functions for complex numbers.  The functions are: | 
					
						
							| 
									
										
										
										
											1997-09-30 20:14:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-07-17 16:13:45 +00:00
										 |  |  | \begin{funcdesc}{acos}{x} | 
					
						
							| 
									
										
										
										
											1997-09-30 20:14:50 +00:00
										 |  |  | Return the arc cosine of \var{x}. | 
					
						
							| 
									
										
										
										
											2001-06-23 03:16:29 +00:00
										 |  |  | 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. | 
					
						
							| 
									
										
										
										
											1997-09-30 20:14:50 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{acosh}{x} | 
					
						
							|  |  |  | Return the hyperbolic arc cosine of \var{x}. | 
					
						
							| 
									
										
										
										
											2001-06-23 03:16:29 +00:00
										 |  |  | There is one branch cut, extending left from 1 along the real axis | 
					
						
							|  |  |  | to -\infinity, continuous from above. | 
					
						
							| 
									
										
										
										
											1997-09-30 20:14:50 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{asin}{x} | 
					
						
							|  |  |  | Return the arc sine of \var{x}. | 
					
						
							| 
									
										
										
										
											2001-06-23 03:16:29 +00:00
										 |  |  | This has the same branch cuts as \function{acos()}. | 
					
						
							| 
									
										
										
										
											1997-09-30 20:14:50 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{asinh}{x} | 
					
						
							|  |  |  | Return the hyperbolic arc sine of \var{x}. | 
					
						
							| 
									
										
										
										
											2001-06-23 03:16:29 +00:00
										 |  |  | 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. | 
					
						
							| 
									
										
										
										
											1997-09-30 20:14:50 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{atan}{x} | 
					
						
							|  |  |  | Return the arc tangent of \var{x}. | 
					
						
							| 
									
										
										
										
											2001-06-23 03:16:29 +00:00
										 |  |  | 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.) | 
					
						
							| 
									
										
										
										
											1997-09-30 20:14:50 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{atanh}{x} | 
					
						
							|  |  |  | Return the hyperbolic arc tangent of \var{x}. | 
					
						
							| 
									
										
										
										
											2001-06-23 03:16:29 +00:00
										 |  |  | 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.) | 
					
						
							| 
									
										
										
										
											1997-09-30 20:14:50 +00:00
										 |  |  | \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} | 
					
						
							| 
									
										
										
										
											1998-02-11 22:33:28 +00:00
										 |  |  | Return the exponential value \code{e**\var{x}}. | 
					
						
							| 
									
										
										
										
											1997-09-30 20:14:50 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{log}{x} | 
					
						
							|  |  |  | Return the natural logarithm of \var{x}. | 
					
						
							| 
									
										
										
										
											2001-06-23 03:16:29 +00:00
										 |  |  | There is one branch cut, from 0 along the negative real axis to | 
					
						
							|  |  |  | -\infinity, continuous from above. | 
					
						
							| 
									
										
										
										
											1997-09-30 20:14:50 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{log10}{x} | 
					
						
							|  |  |  | Return the base-10 logarithm of \var{x}. | 
					
						
							| 
									
										
										
										
											2001-06-23 03:16:29 +00:00
										 |  |  | This has the same branch cut as \function{log()}. | 
					
						
							| 
									
										
										
										
											1997-09-30 20:14:50 +00:00
										 |  |  | \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}. | 
					
						
							| 
									
										
										
										
											2001-06-23 03:16:29 +00:00
										 |  |  | This has the same branch cut as \function{log()}. | 
					
						
							| 
									
										
										
										
											1997-09-30 20:14:50 +00:00
										 |  |  | \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} | 
					
						
							| 
									
										
										
										
											1997-07-17 16:13:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | The module also defines two mathematical constants: | 
					
						
							| 
									
										
										
										
											1997-09-30 20:14:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-07-17 16:13:45 +00:00
										 |  |  | \begin{datadesc}{pi} | 
					
						
							| 
									
										
										
										
											1997-09-30 20:14:50 +00:00
										 |  |  | The mathematical constant \emph{pi}, as a real. | 
					
						
							|  |  |  | \end{datadesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{datadesc}{e} | 
					
						
							|  |  |  | The mathematical constant \emph{e}, as a real. | 
					
						
							| 
									
										
										
										
											1997-07-17 16:13:45 +00:00
										 |  |  | \end{datadesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Note that the selection of functions is similar, but not identical, to | 
					
						
							| 
									
										
										
										
											1999-04-21 16:29:18 +00:00
										 |  |  | that in module \refmodule{math}\refbimodindex{math}.  The reason for having | 
					
						
							| 
									
										
										
										
											1999-06-29 15:53:52 +00:00
										 |  |  | two modules is that some users aren't interested in complex numbers, | 
					
						
							| 
									
										
										
										
											1998-01-09 21:30:03 +00:00
										 |  |  | 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. | 
					
						
							| 
									
										
										
										
											1999-04-21 16:29:18 +00:00
										 |  |  | Also note that the functions defined in \module{cmath} always return a | 
					
						
							| 
									
										
										
										
											1998-01-09 21:30:03 +00:00
										 |  |  | 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). | 
					
						
							| 
									
										
										
										
											2001-06-23 03:16:29 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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} |