@@ -14,8 +14,81 @@ method: these methods are used to convert the object to a complex or
14
14
floating-point number, respectively, and the function is then applied to the
15
15
result of the conversion.
16
16
17
- The functions are :
17
+ .. note : :
18
18
19
+ On platforms with hardware and system-level support for signed
20
+ zeros, functions involving branch cuts are continuous on *both *
21
+ sides of the branch cut: the sign of the zero distinguishes one
22
+ side of the branch cut from the other. On platforms that do not
23
+ support signed zeros the continuity is as specified below.
24
+
25
+
26
+ Complex coordinates
27
+ -------------------
28
+
29
+ Complex numbers can be expressed by two important coordinate systems.
30
+ Python's :class: `complex ` type uses rectangular coordinates where a number
31
+ on the complex plain is defined by two floats, the real part and the imaginary
32
+ part.
33
+
34
+ Definition::
35
+
36
+ z = x + 1j * y
37
+
38
+ x := real(z)
39
+ y := imag(z)
40
+
41
+ In engineering the polar coordinate system is popular for complex numbers. In
42
+ polar coordinates a complex number is defined by the radius *r * and the phase
43
+ angle *φ *. The radius *r * is the absolute value of the complex, which can be
44
+ viewed as distance from (0, 0). The radius *r * is always 0 or a positive float.
45
+ The phase angle *φ * is the counter clockwise angle from the positive x axis,
46
+ e.g. *1 * has the angle *0 *, *1j * has the angle *π/2 * and *-1 * the angle *-π *.
47
+
48
+ .. note ::
49
+ While :func: `phase ` and func:`polar ` return *+π * for a negative real they
50
+ may return *-π * for a complex with a very small negative imaginary
51
+ part, e.g. *-1-1E-300j *.
52
+
53
+
54
+ Definition::
55
+
56
+ z = r * exp(1j * φ)
57
+ z = r * cis(φ)
58
+
59
+ r := abs(z) := sqrt(real(z)**2 + imag(z)**2)
60
+ phi := phase(z) := atan2(imag(z), real(z))
61
+ cis(φ) := cos(φ) + 1j * sin(φ)
62
+
63
+
64
+ .. function :: phase(x)
65
+
66
+ Return phase, also known as the argument, of a complex.
67
+
68
+ .. versionadded :: 2.6
69
+
70
+
71
+ .. function :: polar(x)
72
+
73
+ Convert a :class: `complex ` from rectangular coordinates to polar
74
+ coordinates. The function returns a tuple with the two elements
75
+ *r * and *phi *. *r * is the distance from 0 and *phi * the phase
76
+ angle.
77
+
78
+ .. versionadded :: 2.6
79
+
80
+
81
+ .. function :: rect(r, phi)
82
+
83
+ Convert from polar coordinates to rectangular coordinates and return
84
+ a :class: `complex `.
85
+
86
+ .. versionadded :: 2.6
87
+
88
+
89
+
90
+ cmath functions
91
+ ---------------
19
92
20
93
.. function :: acos(x)
21
94
@@ -37,30 +110,35 @@ The functions are:
37
110
38
111
.. function :: asinh(x)
39
112
40
- Return the hyperbolic arc sine of *x *. There are two branch cuts, extending
41
- left from ``±1j `` to ``±∞j ``, both continuous from above. These branch cuts
42
- should be considered a bug to be corrected in a future release. The correct
43
- branch cuts should extend along the imaginary axis, one from ``1j `` up to
44
- ``∞j `` and continuous from the right, and one from ``-1j `` down to ``-∞j ``
45
- and continuous from the left.
113
+ Return the hyperbolic arc sine of *x *. There are two branch cuts:
114
+ One extends from ``1j `` along the imaginary axis to ``∞j ``,
115
+ continuous from the right. The other extends from ``-1j `` along
116
+ the imaginary axis to ``-∞j ``, continuous from the left.
117
+
118
+ .. versionchanged :: 2.6
119
+ branch cuts moved to match those recommended by the C99 standard
46
120
47
121
48
122
.. function :: atan(x)
49
123
50
124
Return the arc tangent of *x *. There are two branch cuts: One extends from
51
- ``1j `` along the imaginary axis to ``∞j ``, continuous from the left . The
125
+ ``1j `` along the imaginary axis to ``∞j ``, continuous from the right . The
52
126
other extends from ``-1j `` along the imaginary axis to ``-∞j ``, continuous
53
- from the left. (This should probably be changed so the upper cut becomes
54
- continuous from the other side.)
127
+ from the left.
128
+
129
+ .. versionchanged :: 2.6
130
+ direction of continuity of upper cut reversed
55
131
56
132
57
133
.. function :: atanh(x)
58
134
59
135
Return the hyperbolic arc tangent of *x *. There are two branch cuts: One
60
- extends from ``1 `` along the real axis to ``∞ ``, continuous from above . The
136
+ extends from ``1 `` along the real axis to ``∞ ``, continuous from below . The
61
137
other extends from ``-1 `` along the real axis to ``-∞ ``, continuous from
62
- above. (This should probably be changed so the right cut becomes continuous
63
- from the other side.)
138
+ above.
139
+
140
+ .. versionchanged :: 2.6
141
+ direction of continuity of right cut reversed
64
142
65
143
66
144
.. function :: cos(x)
@@ -78,6 +156,21 @@ The functions are:
78
156
Return the exponential value ``e**x ``.
79
157
80
158
159
+ .. function :: isinf(x)
160
+
161
+ Return *True * if the real or the imaginary part of x is positive
162
+ or negative infinity.
163
+
164
+ .. versionadded :: 2.6
165
+
166
+
167
+ .. function :: isnan(x)
168
+
169
+ Return *True * if the real or imaginary part of x is not a number (NaN).
170
+
171
+ .. versionadded :: 2.6
172
+
173
+
81
174
.. function :: log(x[, base])
82
175
83
176
Returns the logarithm of *x * to the given *base *. If the *base * is not
@@ -154,3 +247,4 @@ cuts for numerical purposes, a good reference should be the following:
154
247
nothing's sign bit. In Iserles, A., and Powell, M. (eds.), The state of the art
155
248
in numerical analysis. Clarendon Press (1987) pp165-211.
156
249
250
+
0 commit comments