blob: e5ffba0d2cc918f706b3bc896708fa2c2678e1ac [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)
85
86 Return an accurate floating point sum of values in the iterable. Avoids
Raymond Hettinger7d854952009-02-19 05:51:41 +000087 loss of precision by tracking multiple intermediate partial sums::
Mark Dickinsonfef6b132008-07-30 16:20:10 +000088
Raymond Hettinger7d854952009-02-19 05:51:41 +000089 >>> sum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
Mark Dickinson6b87f112009-11-24 14:27:02 +000090 0.9999999999999999
Raymond Hettinger7d854952009-02-19 05:51:41 +000091 >>> fsum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
92 1.0
Mark Dickinson23957cb2008-07-30 20:23:15 +000093
Raymond Hettinger7d854952009-02-19 05:51:41 +000094 The algorithm's accuracy depends on IEEE-754 arithmetic guarantees and the
95 typical case where the rounding mode is half-even. On some non-Windows
96 builds, the underlying C library uses extended precision addition and may
97 occasionally double-round an intermediate sum causing it to be off in its
98 least significant bit.
Mark Dickinson23957cb2008-07-30 20:23:15 +000099
Raymond Hettinger749e6d02009-02-19 06:55:03 +0000100 For further discussion and two alternative approaches, see the `ASPN cookbook
101 recipes for accurate floating point summation
102 <http://code.activestate.com/recipes/393090/>`_\.
103
Mark Dickinsonfef6b132008-07-30 16:20:10 +0000104 .. versionadded:: 2.6
105
106
Christian Heimese2ca4242008-01-03 20:23:15 +0000107.. function:: isinf(x)
108
Mark Dickinson99e73f92010-04-06 19:50:03 +0000109 Check if the float *x* is positive or negative infinity.
Christian Heimese2ca4242008-01-03 20:23:15 +0000110
Andrew M. Kuchling54966a52008-01-04 18:25:05 +0000111 .. versionadded:: 2.6
Christian Heimese2ca4242008-01-03 20:23:15 +0000112
113
114.. function:: isnan(x)
115
Mark Dickinson99e73f92010-04-06 19:50:03 +0000116 Check if the float *x* is a NaN (not a number). For more information
117 on NaNs, see the IEEE 754 standards.
Christian Heimese2ca4242008-01-03 20:23:15 +0000118
Andrew M. Kuchling54966a52008-01-04 18:25:05 +0000119 .. versionadded:: 2.6
Christian Heimese2ca4242008-01-03 20:23:15 +0000120
121
Georg Brandl8ec7f652007-08-15 14:28:01 +0000122.. function:: ldexp(x, i)
123
124 Return ``x * (2**i)``. This is essentially the inverse of function
125 :func:`frexp`.
126
127
128.. function:: modf(x)
129
Benjamin Peterson2d54e722008-12-20 02:48:02 +0000130 Return the fractional and integer parts of *x*. Both results carry the sign
Benjamin Peterson9de72982008-12-20 22:49:24 +0000131 of *x* and are floats.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000132
Georg Brandl5da652e2008-06-18 09:28:22 +0000133
Jeffrey Yasskinca2b69f2008-02-01 06:22:46 +0000134.. function:: trunc(x)
135
136 Return the :class:`Real` value *x* truncated to an :class:`Integral` (usually
Benjamin Peterson8a08ce22010-07-01 23:35:37 +0000137 a long integer). Uses the ``__trunc__`` method.
Jeffrey Yasskinca2b69f2008-02-01 06:22:46 +0000138
139 .. versionadded:: 2.6
140
Georg Brandl5da652e2008-06-18 09:28:22 +0000141
Georg Brandl8ec7f652007-08-15 14:28:01 +0000142Note that :func:`frexp` and :func:`modf` have a different call/return pattern
143than their C equivalents: they take a single argument and return a pair of
144values, rather than returning their second return value through an 'output
145parameter' (there is no such thing in Python).
146
147For the :func:`ceil`, :func:`floor`, and :func:`modf` functions, note that *all*
148floating-point numbers of sufficiently large magnitude are exact integers.
149Python floats typically carry no more than 53 bits of precision (the same as the
150platform C double type), in which case any float *x* with ``abs(x) >= 2**52``
151necessarily has no fractional bits.
152
Benjamin Peterson4f6ec9d2008-12-20 02:51:26 +0000153
154Power and logarithmic functions
155-------------------------------
Georg Brandl8ec7f652007-08-15 14:28:01 +0000156
Georg Brandl8ec7f652007-08-15 14:28:01 +0000157.. function:: exp(x)
158
159 Return ``e**x``.
160
161
Mark Dickinson9cae1782009-12-16 20:13:40 +0000162.. function:: expm1(x)
163
164 Return ``e**x - 1``. For small floats *x*, the subtraction in
165 ``exp(x) - 1`` can result in a significant loss of precision; the
166 :func:`expm1` function provides a way to compute this quantity to
167 full precision::
168
169 >>> from math import exp, expm1
170 >>> exp(1e-5) - 1 # gives result accurate to 11 places
171 1.0000050000069649e-05
172 >>> expm1(1e-5) # result accurate to full precision
173 1.0000050000166668e-05
174
Mark Dickinson5ff37ae2009-12-19 11:07:23 +0000175 .. versionadded:: 2.7
176
Mark Dickinson9cae1782009-12-16 20:13:40 +0000177
Georg Brandl8ec7f652007-08-15 14:28:01 +0000178.. function:: log(x[, base])
179
Georg Brandl018ad1c2009-09-01 07:53:37 +0000180 With one argument, return the natural logarithm of *x* (to base *e*).
181
182 With two arguments, return the logarithm of *x* to the given *base*,
183 calculated as ``log(x)/log(base)``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000184
185 .. versionchanged:: 2.3
186 *base* argument added.
187
188
Christian Heimes6f341092008-04-18 23:13:07 +0000189.. function:: log1p(x)
190
191 Return the natural logarithm of *1+x* (base *e*). The
192 result is calculated in a way which is accurate for *x* near zero.
193
194 .. versionadded:: 2.6
195
196
Georg Brandl8ec7f652007-08-15 14:28:01 +0000197.. function:: log10(x)
198
Georg Brandl018ad1c2009-09-01 07:53:37 +0000199 Return the base-10 logarithm of *x*. This is usually more accurate
200 than ``log(x, 10)``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000201
202
203.. function:: pow(x, y)
204
Mark Dickinson48f7a4a2008-04-19 21:35:35 +0000205 Return ``x`` raised to the power ``y``. Exceptional cases follow
206 Annex 'F' of the C99 standard as far as possible. In particular,
207 ``pow(1.0, x)`` and ``pow(x, 0.0)`` always return ``1.0``, even
208 when ``x`` is a zero or a NaN. If both ``x`` and ``y`` are finite,
209 ``x`` is negative, and ``y`` is not an integer then ``pow(x, y)``
210 is undefined, and raises :exc:`ValueError`.
Christian Heimes6f341092008-04-18 23:13:07 +0000211
212 .. versionchanged:: 2.6
Mark Dickinson48f7a4a2008-04-19 21:35:35 +0000213 The outcome of ``1**nan`` and ``nan**0`` was undefined.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000214
215
216.. function:: sqrt(x)
217
218 Return the square root of *x*.
219
Georg Brandl8ec7f652007-08-15 14:28:01 +0000220
Benjamin Peterson4f6ec9d2008-12-20 02:51:26 +0000221Trigonometric functions
222-----------------------
Georg Brandl8ec7f652007-08-15 14:28:01 +0000223
224.. function:: acos(x)
225
226 Return the arc cosine of *x*, in radians.
227
228
229.. function:: asin(x)
230
231 Return the arc sine of *x*, in radians.
232
233
234.. function:: atan(x)
235
236 Return the arc tangent of *x*, in radians.
237
238
239.. function:: atan2(y, x)
240
241 Return ``atan(y / x)``, in radians. The result is between ``-pi`` and ``pi``.
242 The vector in the plane from the origin to point ``(x, y)`` makes this angle
243 with the positive X axis. The point of :func:`atan2` is that the signs of both
244 inputs are known to it, so it can compute the correct quadrant for the angle.
Mark Dickinson99e73f92010-04-06 19:50:03 +0000245 For example, ``atan(1)`` and ``atan2(1, 1)`` are both ``pi/4``, but ``atan2(-1,
Georg Brandl8ec7f652007-08-15 14:28:01 +0000246 -1)`` is ``-3*pi/4``.
247
248
249.. function:: cos(x)
250
251 Return the cosine of *x* radians.
252
253
254.. function:: hypot(x, y)
255
256 Return the Euclidean norm, ``sqrt(x*x + y*y)``. This is the length of the vector
257 from the origin to point ``(x, y)``.
258
259
260.. function:: sin(x)
261
262 Return the sine of *x* radians.
263
264
265.. function:: tan(x)
266
267 Return the tangent of *x* radians.
268
Georg Brandl8ec7f652007-08-15 14:28:01 +0000269
Benjamin Peterson4f6ec9d2008-12-20 02:51:26 +0000270Angular conversion
271------------------
Georg Brandl8ec7f652007-08-15 14:28:01 +0000272
273.. function:: degrees(x)
274
275 Converts angle *x* from radians to degrees.
276
277
278.. function:: radians(x)
279
280 Converts angle *x* from degrees to radians.
281
Georg Brandl8ec7f652007-08-15 14:28:01 +0000282
Benjamin Peterson4f6ec9d2008-12-20 02:51:26 +0000283Hyperbolic functions
284--------------------
Georg Brandl8ec7f652007-08-15 14:28:01 +0000285
Mark Dickinson47a84aa2008-04-19 21:49:22 +0000286.. function:: acosh(x)
287
288 Return the inverse hyperbolic cosine of *x*.
289
290 .. versionadded:: 2.6
291
292
293.. function:: asinh(x)
294
295 Return the inverse hyperbolic sine of *x*.
296
297 .. versionadded:: 2.6
298
299
300.. function:: atanh(x)
301
302 Return the inverse hyperbolic tangent of *x*.
303
304 .. versionadded:: 2.6
305
306
Georg Brandl8ec7f652007-08-15 14:28:01 +0000307.. function:: cosh(x)
308
309 Return the hyperbolic cosine of *x*.
310
311
312.. function:: sinh(x)
313
314 Return the hyperbolic sine of *x*.
315
316
317.. function:: tanh(x)
318
319 Return the hyperbolic tangent of *x*.
320
Christian Heimes6f341092008-04-18 23:13:07 +0000321
Mark Dickinsonb93fff02009-09-28 18:54:55 +0000322Special functions
323-----------------
324
Mark Dickinson5ff37ae2009-12-19 11:07:23 +0000325.. function:: erf(x)
326
327 Return the error function at *x*.
328
329 .. versionadded:: 2.7
330
331
332.. function:: erfc(x)
333
334 Return the complementary error function at *x*.
335
336 .. versionadded:: 2.7
337
338
Mark Dickinsonb93fff02009-09-28 18:54:55 +0000339.. function:: gamma(x)
340
341 Return the Gamma function at *x*.
342
343 .. versionadded:: 2.7
344
345
Mark Dickinson9be87bc2009-12-11 17:29:33 +0000346.. function:: lgamma(x)
347
348 Return the natural logarithm of the absolute value of the Gamma
349 function at *x*.
350
351 .. versionadded:: 2.7
352
353
Benjamin Peterson4f6ec9d2008-12-20 02:51:26 +0000354Constants
355---------
Georg Brandl8ec7f652007-08-15 14:28:01 +0000356
Georg Brandl8ec7f652007-08-15 14:28:01 +0000357.. data:: pi
358
Mark Dickinson99e73f92010-04-06 19:50:03 +0000359 The mathematical constant π = 3.141592..., to available precision.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000360
361
362.. data:: e
363
Mark Dickinson99e73f92010-04-06 19:50:03 +0000364 The mathematical constant e = 2.718281..., to available precision.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000365
Christian Heimes6f341092008-04-18 23:13:07 +0000366
Georg Brandl6c14e582009-10-22 11:48:10 +0000367.. impl-detail::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000368
369 The :mod:`math` module consists mostly of thin wrappers around the platform C
Mark Dickinson99e73f92010-04-06 19:50:03 +0000370 math library functions. Behavior in exceptional cases follows Annex F of
371 the C99 standard where appropriate. The current implementation will raise
372 :exc:`ValueError` for invalid operations like ``sqrt(-1.0)`` or ``log(0.0)``
373 (where C99 Annex F recommends signaling invalid operation or divide-by-zero),
374 and :exc:`OverflowError` for results that overflow (for example,
Mark Dickinsonad971d62010-04-06 22:18:23 +0000375 ``exp(1000.0)``). A NaN will not be returned from any of the functions
376 above unless one or more of the input arguments was a NaN; in that case,
377 most functions will return a NaN, but (again following C99 Annex F) there
Mark Dickinson99e73f92010-04-06 19:50:03 +0000378 are some exceptions to this rule, for example ``pow(float('nan'), 0.0)`` or
379 ``hypot(float('nan'), float('inf'))``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000380
Mark Dickinsone07acb52010-04-06 22:10:55 +0000381 Note that Python makes no effort to distinguish signaling NaNs from
382 quiet NaNs, and behavior for signaling NaNs remains unspecified.
383 Typical behavior is to treat all NaNs as though they were quiet.
Christian Heimes6f341092008-04-18 23:13:07 +0000384
Georg Brandl173b7392008-05-12 17:43:13 +0000385 .. versionchanged:: 2.6
Mark Dickinson99e73f92010-04-06 19:50:03 +0000386 Behavior in special cases now aims to follow C99 Annex F. In earlier
387 versions of Python the behavior in special cases was loosely specified.
Christian Heimes6f341092008-04-18 23:13:07 +0000388
Georg Brandl8ec7f652007-08-15 14:28:01 +0000389
390.. seealso::
391
392 Module :mod:`cmath`
393 Complex number versions of many of these functions.