blob: 57d776243523feeedb0fd7c245398ab79ed77fb0 [file] [log] [blame]
Georg Brandl8ec7f652007-08-15 14:28:01 +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 Brandl8ec7f652007-08-15 14:28:01 +000024
Benjamin Peterson4f6ec9d2008-12-20 02:51:26 +000025Number-theoretic and representation functions
26---------------------------------------------
Georg Brandl8ec7f652007-08-15 14:28:01 +000027
28.. function:: ceil(x)
29
Jeffrey Yasskin9871d8f2008-01-05 08:47:13 +000030 Return the ceiling of *x* as a float, the smallest integer value greater than or
31 equal to *x*.
Georg Brandl8ec7f652007-08-15 14:28:01 +000032
33
Christian Heimeseebb79c2008-01-03 22:32:26 +000034.. function:: copysign(x, y)
35
Mark Dickinson99e73f92010-04-06 19:50:03 +000036 Return *x* with the sign of *y*. On a platform that supports
37 signed zeros, ``copysign(1.0, -0.0)`` returns *-1.0*.
Christian Heimeseebb79c2008-01-03 22:32:26 +000038
Andrew M. Kuchling54966a52008-01-04 18:25:05 +000039 .. versionadded:: 2.6
Christian Heimeseebb79c2008-01-03 22:32:26 +000040
41
Georg Brandl8ec7f652007-08-15 14:28:01 +000042.. function:: fabs(x)
43
44 Return the absolute value of *x*.
45
Georg Brandl5da652e2008-06-18 09:28:22 +000046
Raymond Hettingerecbdd2e2008-06-09 06:54:45 +000047.. function:: factorial(x)
48
Mark Dickinsonf88f7392008-06-18 09:20:17 +000049 Return *x* factorial. Raises :exc:`ValueError` if *x* is not integral or
Raymond Hettingerecbdd2e2008-06-09 06:54:45 +000050 is negative.
Georg Brandl8ec7f652007-08-15 14:28:01 +000051
Georg Brandl5da652e2008-06-18 09:28:22 +000052 .. versionadded:: 2.6
53
54
Georg Brandl8ec7f652007-08-15 14:28:01 +000055.. function:: floor(x)
56
Jeffrey Yasskin9871d8f2008-01-05 08:47:13 +000057 Return the floor of *x* as a float, the largest integer value less than or equal
58 to *x*.
Georg Brandl8ec7f652007-08-15 14:28:01 +000059
60
61.. function:: fmod(x, y)
62
63 Return ``fmod(x, y)``, as defined by the platform C library. Note that the
64 Python expression ``x % y`` may not return the same result. The intent of the C
65 standard is that ``fmod(x, y)`` be exactly (mathematically; to infinite
66 precision) equal to ``x - n*y`` for some integer *n* such that the result has
67 the same sign as *x* and magnitude less than ``abs(y)``. Python's ``x % y``
68 returns a result with the sign of *y* instead, and may not be exactly computable
69 for float arguments. For example, ``fmod(-1e-100, 1e100)`` is ``-1e-100``, but
70 the result of Python's ``-1e-100 % 1e100`` is ``1e100-1e-100``, which cannot be
71 represented exactly as a float, and rounds to the surprising ``1e100``. For
72 this reason, function :func:`fmod` is generally preferred when working with
73 floats, while Python's ``x % y`` is preferred when working with integers.
74
75
76.. function:: frexp(x)
77
78 Return the mantissa and exponent of *x* as the pair ``(m, e)``. *m* is a float
79 and *e* is an integer such that ``x == m * 2**e`` exactly. If *x* is zero,
80 returns ``(0.0, 0)``, otherwise ``0.5 <= abs(m) < 1``. This is used to "pick
81 apart" the internal representation of a float in a portable way.
82
83
Mark Dickinsonfef6b132008-07-30 16:20:10 +000084.. function:: fsum(iterable)
Ezio Melotti57dfb222013-01-11 08:53:10 +020085.. testsetup::
86 >>> from math import fsum
Mark Dickinsonfef6b132008-07-30 16:20:10 +000087
88 Return an accurate floating point sum of values in the iterable. Avoids
Raymond Hettinger7d854952009-02-19 05:51:41 +000089 loss of precision by tracking multiple intermediate partial sums::
Mark Dickinsonfef6b132008-07-30 16:20:10 +000090
Raymond Hettinger7d854952009-02-19 05:51:41 +000091 >>> sum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
Mark Dickinson6b87f112009-11-24 14:27:02 +000092 0.9999999999999999
Raymond Hettinger7d854952009-02-19 05:51:41 +000093 >>> fsum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
94 1.0
Mark Dickinson23957cb2008-07-30 20:23:15 +000095
Raymond Hettinger7d854952009-02-19 05:51:41 +000096 The algorithm's accuracy depends on IEEE-754 arithmetic guarantees and the
97 typical case where the rounding mode is half-even. On some non-Windows
98 builds, the underlying C library uses extended precision addition and may
99 occasionally double-round an intermediate sum causing it to be off in its
100 least significant bit.
Mark Dickinson23957cb2008-07-30 20:23:15 +0000101
Raymond Hettinger749e6d02009-02-19 06:55:03 +0000102 For further discussion and two alternative approaches, see the `ASPN cookbook
103 recipes for accurate floating point summation
104 <http://code.activestate.com/recipes/393090/>`_\.
105
Mark Dickinsonfef6b132008-07-30 16:20:10 +0000106 .. versionadded:: 2.6
107
108
Christian Heimese2ca4242008-01-03 20:23:15 +0000109.. function:: isinf(x)
110
Mark Dickinson99e73f92010-04-06 19:50:03 +0000111 Check if the float *x* is positive or negative infinity.
Christian Heimese2ca4242008-01-03 20:23:15 +0000112
Andrew M. Kuchling54966a52008-01-04 18:25:05 +0000113 .. versionadded:: 2.6
Christian Heimese2ca4242008-01-03 20:23:15 +0000114
115
116.. function:: isnan(x)
117
Mark Dickinson99e73f92010-04-06 19:50:03 +0000118 Check if the float *x* is a NaN (not a number). For more information
119 on NaNs, see the IEEE 754 standards.
Christian Heimese2ca4242008-01-03 20:23:15 +0000120
Andrew M. Kuchling54966a52008-01-04 18:25:05 +0000121 .. versionadded:: 2.6
Christian Heimese2ca4242008-01-03 20:23:15 +0000122
123
Georg Brandl8ec7f652007-08-15 14:28:01 +0000124.. function:: ldexp(x, i)
125
126 Return ``x * (2**i)``. This is essentially the inverse of function
127 :func:`frexp`.
128
129
130.. function:: modf(x)
131
Benjamin Peterson2d54e722008-12-20 02:48:02 +0000132 Return the fractional and integer parts of *x*. Both results carry the sign
Benjamin Peterson9de72982008-12-20 22:49:24 +0000133 of *x* and are floats.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000134
Georg Brandl5da652e2008-06-18 09:28:22 +0000135
Jeffrey Yasskinca2b69f2008-02-01 06:22:46 +0000136.. function:: trunc(x)
137
138 Return the :class:`Real` value *x* truncated to an :class:`Integral` (usually
Benjamin Peterson8a08ce22010-07-01 23:35:37 +0000139 a long integer). Uses the ``__trunc__`` method.
Jeffrey Yasskinca2b69f2008-02-01 06:22:46 +0000140
141 .. versionadded:: 2.6
142
Georg Brandl5da652e2008-06-18 09:28:22 +0000143
Georg Brandl8ec7f652007-08-15 14:28:01 +0000144Note that :func:`frexp` and :func:`modf` have a different call/return pattern
145than their C equivalents: they take a single argument and return a pair of
146values, rather than returning their second return value through an 'output
147parameter' (there is no such thing in Python).
148
149For the :func:`ceil`, :func:`floor`, and :func:`modf` functions, note that *all*
150floating-point numbers of sufficiently large magnitude are exact integers.
151Python floats typically carry no more than 53 bits of precision (the same as the
152platform C double type), in which case any float *x* with ``abs(x) >= 2**52``
153necessarily has no fractional bits.
154
Benjamin Peterson4f6ec9d2008-12-20 02:51:26 +0000155
156Power and logarithmic functions
157-------------------------------
Georg Brandl8ec7f652007-08-15 14:28:01 +0000158
Georg Brandl8ec7f652007-08-15 14:28:01 +0000159.. function:: exp(x)
160
161 Return ``e**x``.
162
163
Mark Dickinson9cae1782009-12-16 20:13:40 +0000164.. function:: expm1(x)
165
166 Return ``e**x - 1``. For small floats *x*, the subtraction in
167 ``exp(x) - 1`` can result in a significant loss of precision; the
168 :func:`expm1` function provides a way to compute this quantity to
169 full precision::
170
171 >>> from math import exp, expm1
172 >>> exp(1e-5) - 1 # gives result accurate to 11 places
173 1.0000050000069649e-05
174 >>> expm1(1e-5) # result accurate to full precision
175 1.0000050000166668e-05
176
Mark Dickinson5ff37ae2009-12-19 11:07:23 +0000177 .. versionadded:: 2.7
178
Mark Dickinson9cae1782009-12-16 20:13:40 +0000179
Georg Brandl8ec7f652007-08-15 14:28:01 +0000180.. function:: log(x[, base])
181
Georg Brandl018ad1c2009-09-01 07:53:37 +0000182 With one argument, return the natural logarithm of *x* (to base *e*).
183
184 With two arguments, return the logarithm of *x* to the given *base*,
185 calculated as ``log(x)/log(base)``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000186
187 .. versionchanged:: 2.3
188 *base* argument added.
189
190
Christian Heimes6f341092008-04-18 23:13:07 +0000191.. function:: log1p(x)
192
193 Return the natural logarithm of *1+x* (base *e*). The
194 result is calculated in a way which is accurate for *x* near zero.
195
196 .. versionadded:: 2.6
197
198
Georg Brandl8ec7f652007-08-15 14:28:01 +0000199.. function:: log10(x)
200
Georg Brandl018ad1c2009-09-01 07:53:37 +0000201 Return the base-10 logarithm of *x*. This is usually more accurate
202 than ``log(x, 10)``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000203
204
205.. function:: pow(x, y)
206
Mark Dickinson48f7a4a2008-04-19 21:35:35 +0000207 Return ``x`` raised to the power ``y``. Exceptional cases follow
208 Annex 'F' of the C99 standard as far as possible. In particular,
209 ``pow(1.0, x)`` and ``pow(x, 0.0)`` always return ``1.0``, even
210 when ``x`` is a zero or a NaN. If both ``x`` and ``y`` are finite,
211 ``x`` is negative, and ``y`` is not an integer then ``pow(x, y)``
212 is undefined, and raises :exc:`ValueError`.
Christian Heimes6f341092008-04-18 23:13:07 +0000213
214 .. versionchanged:: 2.6
Mark Dickinson48f7a4a2008-04-19 21:35:35 +0000215 The outcome of ``1**nan`` and ``nan**0`` was undefined.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000216
217
218.. function:: sqrt(x)
219
220 Return the square root of *x*.
221
Georg Brandl8ec7f652007-08-15 14:28:01 +0000222
Benjamin Peterson4f6ec9d2008-12-20 02:51:26 +0000223Trigonometric functions
224-----------------------
Georg Brandl8ec7f652007-08-15 14:28:01 +0000225
226.. function:: acos(x)
227
228 Return the arc cosine of *x*, in radians.
229
230
231.. function:: asin(x)
232
233 Return the arc sine of *x*, in radians.
234
235
236.. function:: atan(x)
237
238 Return the arc tangent of *x*, in radians.
239
240
241.. function:: atan2(y, x)
242
243 Return ``atan(y / x)``, in radians. The result is between ``-pi`` and ``pi``.
244 The vector in the plane from the origin to point ``(x, y)`` makes this angle
245 with the positive X axis. The point of :func:`atan2` is that the signs of both
246 inputs are known to it, so it can compute the correct quadrant for the angle.
Mark Dickinson99e73f92010-04-06 19:50:03 +0000247 For example, ``atan(1)`` and ``atan2(1, 1)`` are both ``pi/4``, but ``atan2(-1,
Georg Brandl8ec7f652007-08-15 14:28:01 +0000248 -1)`` is ``-3*pi/4``.
249
250
251.. function:: cos(x)
252
253 Return the cosine of *x* radians.
254
255
256.. function:: hypot(x, y)
257
258 Return the Euclidean norm, ``sqrt(x*x + y*y)``. This is the length of the vector
259 from the origin to point ``(x, y)``.
260
261
262.. function:: sin(x)
263
264 Return the sine of *x* radians.
265
266
267.. function:: tan(x)
268
269 Return the tangent of *x* radians.
270
Georg Brandl8ec7f652007-08-15 14:28:01 +0000271
Benjamin Peterson4f6ec9d2008-12-20 02:51:26 +0000272Angular conversion
273------------------
Georg Brandl8ec7f652007-08-15 14:28:01 +0000274
275.. function:: degrees(x)
276
277 Converts angle *x* from radians to degrees.
278
279
280.. function:: radians(x)
281
282 Converts angle *x* from degrees to radians.
283
Georg Brandl8ec7f652007-08-15 14:28:01 +0000284
Benjamin Peterson4f6ec9d2008-12-20 02:51:26 +0000285Hyperbolic functions
286--------------------
Georg Brandl8ec7f652007-08-15 14:28:01 +0000287
Mark Dickinson47a84aa2008-04-19 21:49:22 +0000288.. function:: acosh(x)
289
290 Return the inverse hyperbolic cosine of *x*.
291
292 .. versionadded:: 2.6
293
294
295.. function:: asinh(x)
296
297 Return the inverse hyperbolic sine of *x*.
298
299 .. versionadded:: 2.6
300
301
302.. function:: atanh(x)
303
304 Return the inverse hyperbolic tangent of *x*.
305
306 .. versionadded:: 2.6
307
308
Georg Brandl8ec7f652007-08-15 14:28:01 +0000309.. function:: cosh(x)
310
311 Return the hyperbolic cosine of *x*.
312
313
314.. function:: sinh(x)
315
316 Return the hyperbolic sine of *x*.
317
318
319.. function:: tanh(x)
320
321 Return the hyperbolic tangent of *x*.
322
Christian Heimes6f341092008-04-18 23:13:07 +0000323
Mark Dickinsonb93fff02009-09-28 18:54:55 +0000324Special functions
325-----------------
326
Mark Dickinson5ff37ae2009-12-19 11:07:23 +0000327.. function:: erf(x)
328
329 Return the error function at *x*.
330
331 .. versionadded:: 2.7
332
333
334.. function:: erfc(x)
335
336 Return the complementary error function at *x*.
337
338 .. versionadded:: 2.7
339
340
Mark Dickinsonb93fff02009-09-28 18:54:55 +0000341.. function:: gamma(x)
342
343 Return the Gamma function at *x*.
344
345 .. versionadded:: 2.7
346
347
Mark Dickinson9be87bc2009-12-11 17:29:33 +0000348.. function:: lgamma(x)
349
350 Return the natural logarithm of the absolute value of the Gamma
351 function at *x*.
352
353 .. versionadded:: 2.7
354
355
Benjamin Peterson4f6ec9d2008-12-20 02:51:26 +0000356Constants
357---------
Georg Brandl8ec7f652007-08-15 14:28:01 +0000358
Georg Brandl8ec7f652007-08-15 14:28:01 +0000359.. data:: pi
360
Mark Dickinson99e73f92010-04-06 19:50:03 +0000361 The mathematical constant π = 3.141592..., to available precision.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000362
363
364.. data:: e
365
Mark Dickinson99e73f92010-04-06 19:50:03 +0000366 The mathematical constant e = 2.718281..., to available precision.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000367
Christian Heimes6f341092008-04-18 23:13:07 +0000368
Georg Brandl6c14e582009-10-22 11:48:10 +0000369.. impl-detail::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000370
371 The :mod:`math` module consists mostly of thin wrappers around the platform C
Mark Dickinson99e73f92010-04-06 19:50:03 +0000372 math library functions. Behavior in exceptional cases follows Annex F of
373 the C99 standard where appropriate. The current implementation will raise
374 :exc:`ValueError` for invalid operations like ``sqrt(-1.0)`` or ``log(0.0)``
375 (where C99 Annex F recommends signaling invalid operation or divide-by-zero),
376 and :exc:`OverflowError` for results that overflow (for example,
Mark Dickinsonad971d62010-04-06 22:18:23 +0000377 ``exp(1000.0)``). A NaN will not be returned from any of the functions
378 above unless one or more of the input arguments was a NaN; in that case,
379 most functions will return a NaN, but (again following C99 Annex F) there
Mark Dickinson99e73f92010-04-06 19:50:03 +0000380 are some exceptions to this rule, for example ``pow(float('nan'), 0.0)`` or
381 ``hypot(float('nan'), float('inf'))``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000382
Mark Dickinsone07acb52010-04-06 22:10:55 +0000383 Note that Python makes no effort to distinguish signaling NaNs from
384 quiet NaNs, and behavior for signaling NaNs remains unspecified.
385 Typical behavior is to treat all NaNs as though they were quiet.
Christian Heimes6f341092008-04-18 23:13:07 +0000386
Georg Brandl173b7392008-05-12 17:43:13 +0000387 .. versionchanged:: 2.6
Mark Dickinson99e73f92010-04-06 19:50:03 +0000388 Behavior in special cases now aims to follow C99 Annex F. In earlier
389 versions of Python the behavior in special cases was loosely specified.
Christian Heimes6f341092008-04-18 23:13:07 +0000390
Georg Brandl8ec7f652007-08-15 14:28:01 +0000391
392.. seealso::
393
394 Module :mod:`cmath`
395 Complex number versions of many of these functions.