blob: 1e9611e3648844371182b9e0e9dc39077c5d88bf [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001
2:mod:`math` --- Mathematical functions
3======================================
4
5.. module:: math
6 :synopsis: Mathematical functions (sin() etc.).
7
8
9This module is always available. It provides access to the mathematical
10functions defined by the C standard.
11
12These functions cannot be used with complex numbers; use the functions of the
13same name from the :mod:`cmath` module if you require support for complex
14numbers. The distinction between functions which support complex numbers and
15those which don't is made since most users do not want to learn quite as much
16mathematics as required to understand complex numbers. Receiving an exception
17instead of a complex result allows earlier detection of the unexpected complex
18number used as a parameter, so that the programmer can determine how and why it
19was generated in the first place.
20
21The following functions are provided by this module. Except when explicitly
22noted otherwise, all return values are floats.
23
Georg Brandl116aa622007-08-15 14:28:22 +000024
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +000025Number-theoretic and representation functions
26---------------------------------------------
Georg Brandl116aa622007-08-15 14:28:22 +000027
28.. function:: ceil(x)
29
Georg Brandl2a033732008-04-05 17:37:09 +000030 Return the ceiling of *x*, the smallest integer greater than or equal to *x*.
31 If *x* is not a float, delegates to ``x.__ceil__()``, which should return an
32 :class:`Integral` value.
Christian Heimes072c0f12008-01-03 23:01:04 +000033
34
35.. function:: copysign(x, y)
36
37 Return *x* with the sign of *y*. ``copysign`` copies the sign bit of an IEEE
38 754 float, ``copysign(1, -0.0)`` returns *-1.0*.
39
Georg Brandl116aa622007-08-15 14:28:22 +000040
41.. function:: fabs(x)
42
43 Return the absolute value of *x*.
44
Georg Brandlc28e1fa2008-06-10 19:20:26 +000045.. function:: factorial(x)
46
Benjamin Petersonfea6a942008-07-02 16:11:42 +000047 Return *x* factorial. Raises :exc:`ValueError` if *x* is not integral or
Georg Brandlc28e1fa2008-06-10 19:20:26 +000048 is negative.
Georg Brandl116aa622007-08-15 14:28:22 +000049
50.. function:: floor(x)
51
Georg Brandl2a033732008-04-05 17:37:09 +000052 Return the floor of *x*, the largest integer less than or equal to *x*.
53 If *x* is not a float, delegates to ``x.__floor__()``, which should return an
54 :class:`Integral` value.
Georg Brandl116aa622007-08-15 14:28:22 +000055
56
57.. function:: fmod(x, y)
58
59 Return ``fmod(x, y)``, as defined by the platform C library. Note that the
60 Python expression ``x % y`` may not return the same result. The intent of the C
61 standard is that ``fmod(x, y)`` be exactly (mathematically; to infinite
62 precision) equal to ``x - n*y`` for some integer *n* such that the result has
63 the same sign as *x* and magnitude less than ``abs(y)``. Python's ``x % y``
64 returns a result with the sign of *y* instead, and may not be exactly computable
65 for float arguments. For example, ``fmod(-1e-100, 1e100)`` is ``-1e-100``, but
66 the result of Python's ``-1e-100 % 1e100`` is ``1e100-1e-100``, which cannot be
67 represented exactly as a float, and rounds to the surprising ``1e100``. For
68 this reason, function :func:`fmod` is generally preferred when working with
69 floats, while Python's ``x % y`` is preferred when working with integers.
70
71
72.. function:: frexp(x)
73
74 Return the mantissa and exponent of *x* as the pair ``(m, e)``. *m* is a float
75 and *e* is an integer such that ``x == m * 2**e`` exactly. If *x* is zero,
76 returns ``(0.0, 0)``, otherwise ``0.5 <= abs(m) < 1``. This is used to "pick
77 apart" the internal representation of a float in a portable way.
78
79
Mark Dickinsonaa7633a2008-08-01 08:16:13 +000080.. function:: fsum(iterable)
81
82 Return an accurate floating point sum of values in the iterable. Avoids
83 loss of precision by tracking multiple intermediate partial sums. The
84 algorithm's accuracy depends on IEEE-754 arithmetic guarantees and the
85 typical case where the rounding mode is half-even.
86
87 .. note::
88
Mark Dickinson4aab7112008-08-01 09:14:03 +000089 The accuracy of fsum() may be impaired on builds that use
90 extended precision addition and then double-round the results.
Mark Dickinsonaa7633a2008-08-01 08:16:13 +000091
Mark Dickinsonaa7633a2008-08-01 08:16:13 +000092
Christian Heimes072c0f12008-01-03 23:01:04 +000093.. function:: isinf(x)
94
95 Checks if the float *x* is positive or negative infinite.
96
Christian Heimes072c0f12008-01-03 23:01:04 +000097
98.. function:: isnan(x)
99
100 Checks if the float *x* is a NaN (not a number). NaNs are part of the
101 IEEE 754 standards. Operation like but not limited to ``inf * 0``,
102 ``inf / inf`` or any operation involving a NaN, e.g. ``nan * 1``, return
103 a NaN.
104
Christian Heimes072c0f12008-01-03 23:01:04 +0000105
Georg Brandl116aa622007-08-15 14:28:22 +0000106.. function:: ldexp(x, i)
107
108 Return ``x * (2**i)``. This is essentially the inverse of function
109 :func:`frexp`.
110
111
112.. function:: modf(x)
113
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +0000114 Return the fractional and integer parts of *x*. Both results carry the sign
115 of *x* and are floats.
Georg Brandl116aa622007-08-15 14:28:22 +0000116
Christian Heimes400adb02008-02-01 08:12:03 +0000117
118.. function:: trunc(x)
119
120 Return the :class:`Real` value *x* truncated to an :class:`Integral` (usually
121 a long integer). Delegates to ``x.__trunc__()``.
122
Christian Heimes400adb02008-02-01 08:12:03 +0000123
Georg Brandl116aa622007-08-15 14:28:22 +0000124Note that :func:`frexp` and :func:`modf` have a different call/return pattern
125than their C equivalents: they take a single argument and return a pair of
126values, rather than returning their second return value through an 'output
127parameter' (there is no such thing in Python).
128
129For the :func:`ceil`, :func:`floor`, and :func:`modf` functions, note that *all*
130floating-point numbers of sufficiently large magnitude are exact integers.
131Python floats typically carry no more than 53 bits of precision (the same as the
132platform C double type), in which case any float *x* with ``abs(x) >= 2**52``
133necessarily has no fractional bits.
134
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +0000135
136Power and logarithmic functions
137-------------------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000138
Georg Brandl116aa622007-08-15 14:28:22 +0000139.. function:: exp(x)
140
141 Return ``e**x``.
142
143
144.. function:: log(x[, base])
145
146 Return the logarithm of *x* to the given *base*. If the *base* is not specified,
147 return the natural logarithm of *x* (that is, the logarithm to base *e*).
148
Georg Brandl116aa622007-08-15 14:28:22 +0000149
Christian Heimes53876d92008-04-19 00:31:39 +0000150.. function:: log1p(x)
151
152 Return the natural logarithm of *1+x* (base *e*). The
153 result is calculated in a way which is accurate for *x* near zero.
154
Christian Heimes53876d92008-04-19 00:31:39 +0000155
Georg Brandl116aa622007-08-15 14:28:22 +0000156.. function:: log10(x)
157
158 Return the base-10 logarithm of *x*.
159
160
161.. function:: pow(x, y)
162
Christian Heimesa342c012008-04-20 21:01:16 +0000163 Return ``x`` raised to the power ``y``. Exceptional cases follow
164 Annex 'F' of the C99 standard as far as possible. In particular,
165 ``pow(1.0, x)`` and ``pow(x, 0.0)`` always return ``1.0``, even
166 when ``x`` is a zero or a NaN. If both ``x`` and ``y`` are finite,
167 ``x`` is negative, and ``y`` is not an integer then ``pow(x, y)``
168 is undefined, and raises :exc:`ValueError`.
Christian Heimes53876d92008-04-19 00:31:39 +0000169
Georg Brandl116aa622007-08-15 14:28:22 +0000170
171.. function:: sqrt(x)
172
173 Return the square root of *x*.
174
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +0000175Trigonometric functions
176-----------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000177
178
179.. function:: acos(x)
180
181 Return the arc cosine of *x*, in radians.
182
183
184.. function:: asin(x)
185
186 Return the arc sine of *x*, in radians.
187
188
189.. function:: atan(x)
190
191 Return the arc tangent of *x*, in radians.
192
193
194.. function:: atan2(y, x)
195
196 Return ``atan(y / x)``, in radians. The result is between ``-pi`` and ``pi``.
197 The vector in the plane from the origin to point ``(x, y)`` makes this angle
198 with the positive X axis. The point of :func:`atan2` is that the signs of both
199 inputs are known to it, so it can compute the correct quadrant for the angle.
200 For example, ``atan(1``) and ``atan2(1, 1)`` are both ``pi/4``, but ``atan2(-1,
201 -1)`` is ``-3*pi/4``.
202
203
204.. function:: cos(x)
205
206 Return the cosine of *x* radians.
207
208
209.. function:: hypot(x, y)
210
211 Return the Euclidean norm, ``sqrt(x*x + y*y)``. This is the length of the vector
212 from the origin to point ``(x, y)``.
213
214
215.. function:: sin(x)
216
217 Return the sine of *x* radians.
218
219
220.. function:: tan(x)
221
222 Return the tangent of *x* radians.
223
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +0000224Angular conversion
225------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000226
227
228.. function:: degrees(x)
229
230 Converts angle *x* from radians to degrees.
231
232
233.. function:: radians(x)
234
235 Converts angle *x* from degrees to radians.
236
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +0000237Hyperbolic functions
238--------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000239
240
Christian Heimesa342c012008-04-20 21:01:16 +0000241.. function:: acosh(x)
242
243 Return the inverse hyperbolic cosine of *x*.
244
Christian Heimesa342c012008-04-20 21:01:16 +0000245
246.. function:: asinh(x)
247
248 Return the inverse hyperbolic sine of *x*.
249
Christian Heimesa342c012008-04-20 21:01:16 +0000250
251.. function:: atanh(x)
252
253 Return the inverse hyperbolic tangent of *x*.
254
Christian Heimesa342c012008-04-20 21:01:16 +0000255
Georg Brandl116aa622007-08-15 14:28:22 +0000256.. function:: cosh(x)
257
258 Return the hyperbolic cosine of *x*.
259
260
261.. function:: sinh(x)
262
263 Return the hyperbolic sine of *x*.
264
265
266.. function:: tanh(x)
267
268 Return the hyperbolic tangent of *x*.
269
Christian Heimes53876d92008-04-19 00:31:39 +0000270
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +0000271Constants
272=========
Georg Brandl116aa622007-08-15 14:28:22 +0000273
274.. data:: pi
275
276 The mathematical constant *pi*.
277
278
279.. data:: e
280
281 The mathematical constant *e*.
282
Christian Heimes53876d92008-04-19 00:31:39 +0000283
Georg Brandl116aa622007-08-15 14:28:22 +0000284.. note::
285
286 The :mod:`math` module consists mostly of thin wrappers around the platform C
287 math library functions. Behavior in exceptional cases is loosely specified
288 by the C standards, and Python inherits much of its math-function
289 error-reporting behavior from the platform C implementation. As a result,
290 the specific exceptions raised in error cases (and even whether some
291 arguments are considered to be exceptional at all) are not defined in any
292 useful cross-platform or cross-release way. For example, whether
293 ``math.log(0)`` returns ``-Inf`` or raises :exc:`ValueError` or
294 :exc:`OverflowError` isn't defined, and in cases where ``math.log(0)`` raises
295 :exc:`OverflowError`, ``math.log(0L)`` may raise :exc:`ValueError` instead.
296
Christian Heimesa342c012008-04-20 21:01:16 +0000297 All functions return a quiet *NaN* if at least one of the args is *NaN*.
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000298 Signaling *NaN*\s raise an exception. The exception type still depends on the
Christian Heimes53876d92008-04-19 00:31:39 +0000299 platform and libm implementation. It's usually :exc:`ValueError` for *EDOM*
300 and :exc:`OverflowError` for errno *ERANGE*.
301
Georg Brandl116aa622007-08-15 14:28:22 +0000302
303.. seealso::
304
305 Module :mod:`cmath`
306 Complex number versions of many of these functions.