blob: c5a77f1fab9fd6601bccd77cfdab493d9618bb00 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001:mod:`math` --- Mathematical functions
2======================================
3
4.. module:: math
5 :synopsis: Mathematical functions (sin() etc.).
6
Łukasz Langa288234f2013-01-18 13:40:43 +01007.. testsetup::
8
9 from math import fsum
Georg Brandl116aa622007-08-15 14:28:22 +000010
Terry Jan Reedyfa089b92016-06-11 15:02:54 -040011--------------
12
Ned Batchelder6faad352019-05-17 05:59:14 -040013This module provides access to the mathematical functions defined by the C
14standard.
Georg Brandl116aa622007-08-15 14:28:22 +000015
16These functions cannot be used with complex numbers; use the functions of the
17same name from the :mod:`cmath` module if you require support for complex
18numbers. The distinction between functions which support complex numbers and
19those which don't is made since most users do not want to learn quite as much
20mathematics as required to understand complex numbers. Receiving an exception
21instead of a complex result allows earlier detection of the unexpected complex
22number used as a parameter, so that the programmer can determine how and why it
23was generated in the first place.
24
25The following functions are provided by this module. Except when explicitly
26noted otherwise, all return values are floats.
27
Georg Brandl116aa622007-08-15 14:28:22 +000028
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +000029Number-theoretic and representation functions
30---------------------------------------------
Georg Brandl116aa622007-08-15 14:28:22 +000031
32.. function:: ceil(x)
33
Georg Brandl2a033732008-04-05 17:37:09 +000034 Return the ceiling of *x*, the smallest integer greater than or equal to *x*.
35 If *x* is not a float, delegates to ``x.__ceil__()``, which should return an
Serhiy Storchakabfdcd432013-10-13 23:09:14 +030036 :class:`~numbers.Integral` value.
Christian Heimes072c0f12008-01-03 23:01:04 +000037
38
Raymond Hettingerb7fade42019-06-01 15:01:46 -070039.. function:: comb(n, k)
40
41 Return the number of ways to choose *k* items from *n* items without repetition
42 and without order.
43
44 Also called the binomial coefficient. It is mathematically equal to the expression
45 ``n! / (k! (n - k)!)``. It is equivalent to the coefficient of the *k*-th term in the
46 polynomial expansion of the expression ``(1 + x) ** n``.
47
48 Raises :exc:`TypeError` if the arguments not integers.
49 Raises :exc:`ValueError` if the arguments are negative or if *k* > *n*.
50
51 .. versionadded:: 3.8
52
53
Christian Heimes072c0f12008-01-03 23:01:04 +000054.. function:: copysign(x, y)
55
Andrew Kuchling8cb1ec32014-02-16 11:11:25 -050056 Return a float with the magnitude (absolute value) of *x* but the sign of
57 *y*. On platforms that support signed zeros, ``copysign(1.0, -0.0)``
58 returns *-1.0*.
Christian Heimes072c0f12008-01-03 23:01:04 +000059
Serhiy Storchakadbaf7462017-05-04 12:25:09 +030060
Georg Brandl116aa622007-08-15 14:28:22 +000061.. function:: fabs(x)
62
63 Return the absolute value of *x*.
64
Serhiy Storchakadbaf7462017-05-04 12:25:09 +030065
Georg Brandlc28e1fa2008-06-10 19:20:26 +000066.. function:: factorial(x)
67
Akshay Sharma46126712019-05-31 22:11:17 +053068 Return *x* factorial as an integer. Raises :exc:`ValueError` if *x* is not integral or
Georg Brandlc28e1fa2008-06-10 19:20:26 +000069 is negative.
Georg Brandl116aa622007-08-15 14:28:22 +000070
Serhiy Storchakadbaf7462017-05-04 12:25:09 +030071
Georg Brandl116aa622007-08-15 14:28:22 +000072.. function:: floor(x)
73
Georg Brandl2a033732008-04-05 17:37:09 +000074 Return the floor of *x*, the largest integer less than or equal to *x*.
75 If *x* is not a float, delegates to ``x.__floor__()``, which should return an
Serhiy Storchakabfdcd432013-10-13 23:09:14 +030076 :class:`~numbers.Integral` value.
Georg Brandl116aa622007-08-15 14:28:22 +000077
78
79.. function:: fmod(x, y)
80
81 Return ``fmod(x, y)``, as defined by the platform C library. Note that the
82 Python expression ``x % y`` may not return the same result. The intent of the C
83 standard is that ``fmod(x, y)`` be exactly (mathematically; to infinite
84 precision) equal to ``x - n*y`` for some integer *n* such that the result has
85 the same sign as *x* and magnitude less than ``abs(y)``. Python's ``x % y``
86 returns a result with the sign of *y* instead, and may not be exactly computable
87 for float arguments. For example, ``fmod(-1e-100, 1e100)`` is ``-1e-100``, but
88 the result of Python's ``-1e-100 % 1e100`` is ``1e100-1e-100``, which cannot be
89 represented exactly as a float, and rounds to the surprising ``1e100``. For
90 this reason, function :func:`fmod` is generally preferred when working with
91 floats, while Python's ``x % y`` is preferred when working with integers.
92
93
94.. function:: frexp(x)
95
96 Return the mantissa and exponent of *x* as the pair ``(m, e)``. *m* is a float
97 and *e* is an integer such that ``x == m * 2**e`` exactly. If *x* is zero,
98 returns ``(0.0, 0)``, otherwise ``0.5 <= abs(m) < 1``. This is used to "pick
99 apart" the internal representation of a float in a portable way.
100
101
Mark Dickinsonaa7633a2008-08-01 08:16:13 +0000102.. function:: fsum(iterable)
103
104 Return an accurate floating point sum of values in the iterable. Avoids
Raymond Hettingerf3936f82009-02-19 05:48:05 +0000105 loss of precision by tracking multiple intermediate partial sums::
Mark Dickinsonaa7633a2008-08-01 08:16:13 +0000106
Raymond Hettingerf3936f82009-02-19 05:48:05 +0000107 >>> sum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
Mark Dickinson5a55b612009-06-28 20:59:42 +0000108 0.9999999999999999
Raymond Hettingerf3936f82009-02-19 05:48:05 +0000109 >>> fsum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
110 1.0
Mark Dickinsonaa7633a2008-08-01 08:16:13 +0000111
Raymond Hettingerf3936f82009-02-19 05:48:05 +0000112 The algorithm's accuracy depends on IEEE-754 arithmetic guarantees and the
113 typical case where the rounding mode is half-even. On some non-Windows
114 builds, the underlying C library uses extended precision addition and may
115 occasionally double-round an intermediate sum causing it to be off in its
116 least significant bit.
Mark Dickinsonaa7633a2008-08-01 08:16:13 +0000117
Raymond Hettinger477be822009-02-19 06:44:30 +0000118 For further discussion and two alternative approaches, see the `ASPN cookbook
119 recipes for accurate floating point summation
Georg Brandl5d941342016-02-26 19:37:12 +0100120 <https://code.activestate.com/recipes/393090/>`_\.
Raymond Hettinger477be822009-02-19 06:44:30 +0000121
Mark Dickinsonaa7633a2008-08-01 08:16:13 +0000122
Serhiy Storchaka48e47aa2015-05-13 00:19:51 +0300123.. function:: gcd(a, b)
124
125 Return the greatest common divisor of the integers *a* and *b*. If either
126 *a* or *b* is nonzero, then the value of ``gcd(a, b)`` is the largest
127 positive integer that divides both *a* and *b*. ``gcd(0, 0)`` returns
128 ``0``.
129
Benjamin Petersone960d182015-05-12 17:24:17 -0400130 .. versionadded:: 3.5
131
Serhiy Storchaka48e47aa2015-05-13 00:19:51 +0300132
Tal Einatd5519ed2015-05-31 22:05:00 +0300133.. function:: isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)
134
135 Return ``True`` if the values *a* and *b* are close to each other and
136 ``False`` otherwise.
137
138 Whether or not two values are considered close is determined according to
139 given absolute and relative tolerances.
140
141 *rel_tol* is the relative tolerance -- it is the maximum allowed difference
142 between *a* and *b*, relative to the larger absolute value of *a* or *b*.
143 For example, to set a tolerance of 5%, pass ``rel_tol=0.05``. The default
144 tolerance is ``1e-09``, which assures that the two values are the same
145 within about 9 decimal digits. *rel_tol* must be greater than zero.
146
147 *abs_tol* is the minimum absolute tolerance -- useful for comparisons near
148 zero. *abs_tol* must be at least zero.
149
150 If no errors occur, the result will be:
151 ``abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)``.
152
153 The IEEE 754 special values of ``NaN``, ``inf``, and ``-inf`` will be
154 handled according to IEEE rules. Specifically, ``NaN`` is not considered
155 close to any other value, including ``NaN``. ``inf`` and ``-inf`` are only
156 considered close to themselves.
157
158 .. versionadded:: 3.5
159
160 .. seealso::
161
162 :pep:`485` -- A function for testing approximate equality
163
164
Mark Dickinson8e0c9962010-07-11 17:38:24 +0000165.. function:: isfinite(x)
166
167 Return ``True`` if *x* is neither an infinity nor a NaN, and
168 ``False`` otherwise. (Note that ``0.0`` *is* considered finite.)
169
Mark Dickinsonc7622422010-07-11 19:47:37 +0000170 .. versionadded:: 3.2
171
Mark Dickinson8e0c9962010-07-11 17:38:24 +0000172
Christian Heimes072c0f12008-01-03 23:01:04 +0000173.. function:: isinf(x)
174
Mark Dickinsonc7622422010-07-11 19:47:37 +0000175 Return ``True`` if *x* is a positive or negative infinity, and
176 ``False`` otherwise.
Christian Heimes072c0f12008-01-03 23:01:04 +0000177
Christian Heimes072c0f12008-01-03 23:01:04 +0000178
179.. function:: isnan(x)
180
Mark Dickinsonc7622422010-07-11 19:47:37 +0000181 Return ``True`` if *x* is a NaN (not a number), and ``False`` otherwise.
Christian Heimes072c0f12008-01-03 23:01:04 +0000182
Christian Heimes072c0f12008-01-03 23:01:04 +0000183
Mark Dickinson73934b92019-05-18 12:29:50 +0100184.. function:: isqrt(n)
185
186 Return the integer square root of the nonnegative integer *n*. This is the
187 floor of the exact square root of *n*, or equivalently the greatest integer
188 *a* such that *a*\ ² |nbsp| ≤ |nbsp| *n*.
189
190 For some applications, it may be more convenient to have the least integer
191 *a* such that *n* |nbsp| ≤ |nbsp| *a*\ ², or in other words the ceiling of
192 the exact square root of *n*. For positive *n*, this can be computed using
193 ``a = 1 + isqrt(n - 1)``.
194
195 .. versionadded:: 3.8
196
197
Georg Brandl116aa622007-08-15 14:28:22 +0000198.. function:: ldexp(x, i)
199
200 Return ``x * (2**i)``. This is essentially the inverse of function
201 :func:`frexp`.
202
203
204.. function:: modf(x)
205
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +0000206 Return the fractional and integer parts of *x*. Both results carry the sign
207 of *x* and are floats.
Georg Brandl116aa622007-08-15 14:28:22 +0000208
Christian Heimes400adb02008-02-01 08:12:03 +0000209
Serhiy Storchaka5ae299a2019-06-02 11:16:49 +0300210.. function:: perm(n, k)
211
212 Return the number of ways to choose *k* items from *n* items
213 without repetition and with order.
214
215 It is mathematically equal to the expression ``n! / (n - k)!``.
216
217 Raises :exc:`TypeError` if the arguments not integers.
218 Raises :exc:`ValueError` if the arguments are negative or if *k* > *n*.
219
220 .. versionadded:: 3.8
221
222
Pablo Galindobc098512019-02-07 07:04:02 +0000223.. function:: prod(iterable, *, start=1)
224
225 Calculate the product of all the elements in the input *iterable*.
226 The default *start* value for the product is ``1``.
227
228 When the iterable is empty, return the start value. This function is
229 intended specifically for use with numeric values and may reject
230 non-numeric types.
231
232 .. versionadded:: 3.8
233
234
Mark Dickinsona0ce3752017-04-05 18:34:27 +0100235.. function:: remainder(x, y)
236
237 Return the IEEE 754-style remainder of *x* with respect to *y*. For
238 finite *x* and finite nonzero *y*, this is the difference ``x - n*y``,
239 where ``n`` is the closest integer to the exact value of the quotient ``x /
240 y``. If ``x / y`` is exactly halfway between two consecutive integers, the
241 nearest *even* integer is used for ``n``. The remainder ``r = remainder(x,
242 y)`` thus always satisfies ``abs(r) <= 0.5 * abs(y)``.
243
244 Special cases follow IEEE 754: in particular, ``remainder(x, math.inf)`` is
245 *x* for any finite *x*, and ``remainder(x, 0)`` and
246 ``remainder(math.inf, x)`` raise :exc:`ValueError` for any non-NaN *x*.
247 If the result of the remainder operation is zero, that zero will have
248 the same sign as *x*.
249
250 On platforms using IEEE 754 binary floating-point, the result of this
251 operation is always exactly representable: no rounding error is introduced.
252
253 .. versionadded:: 3.7
254
255
Christian Heimes400adb02008-02-01 08:12:03 +0000256.. function:: trunc(x)
257
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300258 Return the :class:`~numbers.Real` value *x* truncated to an
259 :class:`~numbers.Integral` (usually an integer). Delegates to
Eric Appelt308eab92018-03-10 02:44:12 -0600260 :meth:`x.__trunc__() <object.__trunc__>`.
Christian Heimes400adb02008-02-01 08:12:03 +0000261
Christian Heimes400adb02008-02-01 08:12:03 +0000262
Georg Brandl116aa622007-08-15 14:28:22 +0000263Note that :func:`frexp` and :func:`modf` have a different call/return pattern
264than their C equivalents: they take a single argument and return a pair of
265values, rather than returning their second return value through an 'output
266parameter' (there is no such thing in Python).
267
268For the :func:`ceil`, :func:`floor`, and :func:`modf` functions, note that *all*
269floating-point numbers of sufficiently large magnitude are exact integers.
270Python floats typically carry no more than 53 bits of precision (the same as the
271platform C double type), in which case any float *x* with ``abs(x) >= 2**52``
272necessarily has no fractional bits.
273
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +0000274
275Power and logarithmic functions
276-------------------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000277
Georg Brandl116aa622007-08-15 14:28:22 +0000278.. function:: exp(x)
279
Serhiy Storchakadbaf7462017-05-04 12:25:09 +0300280 Return *e* raised to the power *x*, where *e* = 2.718281... is the base
281 of natural logarithms. This is usually more accurate than ``math.e ** x``
282 or ``pow(math.e, x)``.
283
Georg Brandl116aa622007-08-15 14:28:22 +0000284
Mark Dickinson664b5112009-12-16 20:23:42 +0000285.. function:: expm1(x)
286
Serhiy Storchakadbaf7462017-05-04 12:25:09 +0300287 Return *e* raised to the power *x*, minus 1. Here *e* is the base of natural
288 logarithms. For small floats *x*, the subtraction in ``exp(x) - 1``
Raymond Hettinger1081d482011-03-31 12:04:53 -0700289 can result in a `significant loss of precision
Georg Brandl5d941342016-02-26 19:37:12 +0100290 <https://en.wikipedia.org/wiki/Loss_of_significance>`_\; the :func:`expm1`
Raymond Hettinger1081d482011-03-31 12:04:53 -0700291 function provides a way to compute this quantity to full precision::
Mark Dickinson664b5112009-12-16 20:23:42 +0000292
293 >>> from math import exp, expm1
294 >>> exp(1e-5) - 1 # gives result accurate to 11 places
295 1.0000050000069649e-05
296 >>> expm1(1e-5) # result accurate to full precision
297 1.0000050000166668e-05
298
Mark Dickinson45f992a2009-12-19 11:20:49 +0000299 .. versionadded:: 3.2
300
Mark Dickinson664b5112009-12-16 20:23:42 +0000301
Georg Brandl116aa622007-08-15 14:28:22 +0000302.. function:: log(x[, base])
303
Georg Brandla6053b42009-09-01 08:11:14 +0000304 With one argument, return the natural logarithm of *x* (to base *e*).
305
306 With two arguments, return the logarithm of *x* to the given *base*,
307 calculated as ``log(x)/log(base)``.
Georg Brandl116aa622007-08-15 14:28:22 +0000308
Georg Brandl116aa622007-08-15 14:28:22 +0000309
Christian Heimes53876d92008-04-19 00:31:39 +0000310.. function:: log1p(x)
311
312 Return the natural logarithm of *1+x* (base *e*). The
313 result is calculated in a way which is accurate for *x* near zero.
314
Christian Heimes53876d92008-04-19 00:31:39 +0000315
Victor Stinnerfa0e3d52011-05-09 01:01:09 +0200316.. function:: log2(x)
317
Benjamin Petersoneaee1382011-05-08 19:48:08 -0500318 Return the base-2 logarithm of *x*. This is usually more accurate than
319 ``log(x, 2)``.
Victor Stinnerfa0e3d52011-05-09 01:01:09 +0200320
321 .. versionadded:: 3.3
322
Victor Stinner9415afc2011-09-21 03:35:18 +0200323 .. seealso::
324
325 :meth:`int.bit_length` returns the number of bits necessary to represent
326 an integer in binary, excluding the sign and leading zeros.
327
Victor Stinnerfa0e3d52011-05-09 01:01:09 +0200328
Georg Brandl116aa622007-08-15 14:28:22 +0000329.. function:: log10(x)
330
Georg Brandla6053b42009-09-01 08:11:14 +0000331 Return the base-10 logarithm of *x*. This is usually more accurate
332 than ``log(x, 10)``.
Georg Brandl116aa622007-08-15 14:28:22 +0000333
334
335.. function:: pow(x, y)
336
Christian Heimesa342c012008-04-20 21:01:16 +0000337 Return ``x`` raised to the power ``y``. Exceptional cases follow
338 Annex 'F' of the C99 standard as far as possible. In particular,
339 ``pow(1.0, x)`` and ``pow(x, 0.0)`` always return ``1.0``, even
340 when ``x`` is a zero or a NaN. If both ``x`` and ``y`` are finite,
341 ``x`` is negative, and ``y`` is not an integer then ``pow(x, y)``
342 is undefined, and raises :exc:`ValueError`.
Christian Heimes53876d92008-04-19 00:31:39 +0000343
Ezio Melotti739d5492013-02-23 04:53:44 +0200344 Unlike the built-in ``**`` operator, :func:`math.pow` converts both
345 its arguments to type :class:`float`. Use ``**`` or the built-in
346 :func:`pow` function for computing exact integer powers.
347
Georg Brandl116aa622007-08-15 14:28:22 +0000348
349.. function:: sqrt(x)
350
351 Return the square root of *x*.
352
Serhiy Storchakadbaf7462017-05-04 12:25:09 +0300353
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +0000354Trigonometric functions
355-----------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000356
Georg Brandl116aa622007-08-15 14:28:22 +0000357.. function:: acos(x)
358
359 Return the arc cosine of *x*, in radians.
360
361
362.. function:: asin(x)
363
364 Return the arc sine of *x*, in radians.
365
366
367.. function:: atan(x)
368
369 Return the arc tangent of *x*, in radians.
370
371
372.. function:: atan2(y, x)
373
374 Return ``atan(y / x)``, in radians. The result is between ``-pi`` and ``pi``.
375 The vector in the plane from the origin to point ``(x, y)`` makes this angle
376 with the positive X axis. The point of :func:`atan2` is that the signs of both
377 inputs are known to it, so it can compute the correct quadrant for the angle.
Mark Dickinson603b7532010-04-06 19:55:03 +0000378 For example, ``atan(1)`` and ``atan2(1, 1)`` are both ``pi/4``, but ``atan2(-1,
Georg Brandl116aa622007-08-15 14:28:22 +0000379 -1)`` is ``-3*pi/4``.
380
381
382.. function:: cos(x)
383
384 Return the cosine of *x* radians.
385
386
Raymond Hettinger9c18b1a2018-07-31 00:45:49 -0700387.. function:: dist(p, q)
388
389 Return the Euclidean distance between two points *p* and *q*, each
390 given as a tuple of coordinates. The two tuples must be the same size.
391
392 Roughly equivalent to::
393
394 sqrt(sum((px - qx) ** 2.0 for px, qx in zip(p, q)))
395
396 .. versionadded:: 3.8
397
398
Raymond Hettingerc6dabe32018-07-28 07:48:04 -0700399.. function:: hypot(*coordinates)
Georg Brandl116aa622007-08-15 14:28:22 +0000400
Raymond Hettingerc6dabe32018-07-28 07:48:04 -0700401 Return the Euclidean norm, ``sqrt(sum(x**2 for x in coordinates))``.
402 This is the length of the vector from the origin to the point
403 given by the coordinates.
404
405 For a two dimensional point ``(x, y)``, this is equivalent to computing
406 the hypotenuse of a right triangle using the Pythagorean theorem,
407 ``sqrt(x*x + y*y)``.
408
409 .. versionchanged:: 3.8
410 Added support for n-dimensional points. Formerly, only the two
411 dimensional case was supported.
Georg Brandl116aa622007-08-15 14:28:22 +0000412
413
414.. function:: sin(x)
415
416 Return the sine of *x* radians.
417
418
419.. function:: tan(x)
420
421 Return the tangent of *x* radians.
422
Serhiy Storchakadbaf7462017-05-04 12:25:09 +0300423
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +0000424Angular conversion
425------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000426
Georg Brandl116aa622007-08-15 14:28:22 +0000427.. function:: degrees(x)
428
Benjamin Peterson19a3f172015-05-12 19:15:53 -0400429 Convert angle *x* from radians to degrees.
Georg Brandl116aa622007-08-15 14:28:22 +0000430
431
432.. function:: radians(x)
433
Benjamin Peterson19a3f172015-05-12 19:15:53 -0400434 Convert angle *x* from degrees to radians.
Georg Brandl116aa622007-08-15 14:28:22 +0000435
Serhiy Storchakadbaf7462017-05-04 12:25:09 +0300436
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +0000437Hyperbolic functions
438--------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000439
Georg Brandl5d941342016-02-26 19:37:12 +0100440`Hyperbolic functions <https://en.wikipedia.org/wiki/Hyperbolic_function>`_
Raymond Hettinger1081d482011-03-31 12:04:53 -0700441are analogs of trigonometric functions that are based on hyperbolas
442instead of circles.
Georg Brandl116aa622007-08-15 14:28:22 +0000443
Christian Heimesa342c012008-04-20 21:01:16 +0000444.. function:: acosh(x)
445
446 Return the inverse hyperbolic cosine of *x*.
447
Christian Heimesa342c012008-04-20 21:01:16 +0000448
449.. function:: asinh(x)
450
451 Return the inverse hyperbolic sine of *x*.
452
Christian Heimesa342c012008-04-20 21:01:16 +0000453
454.. function:: atanh(x)
455
456 Return the inverse hyperbolic tangent of *x*.
457
Christian Heimesa342c012008-04-20 21:01:16 +0000458
Georg Brandl116aa622007-08-15 14:28:22 +0000459.. function:: cosh(x)
460
461 Return the hyperbolic cosine of *x*.
462
463
464.. function:: sinh(x)
465
466 Return the hyperbolic sine of *x*.
467
468
469.. function:: tanh(x)
470
471 Return the hyperbolic tangent of *x*.
472
Christian Heimes53876d92008-04-19 00:31:39 +0000473
Mark Dickinson12c4bdb2009-09-28 19:21:11 +0000474Special functions
475-----------------
476
Mark Dickinson45f992a2009-12-19 11:20:49 +0000477.. function:: erf(x)
478
Georg Brandl5d941342016-02-26 19:37:12 +0100479 Return the `error function <https://en.wikipedia.org/wiki/Error_function>`_ at
Raymond Hettinger1081d482011-03-31 12:04:53 -0700480 *x*.
481
482 The :func:`erf` function can be used to compute traditional statistical
483 functions such as the `cumulative standard normal distribution
Georg Brandl5d941342016-02-26 19:37:12 +0100484 <https://en.wikipedia.org/wiki/Normal_distribution#Cumulative_distribution_function>`_::
Raymond Hettinger1081d482011-03-31 12:04:53 -0700485
486 def phi(x):
487 'Cumulative distribution function for the standard normal distribution'
488 return (1.0 + erf(x / sqrt(2.0))) / 2.0
Mark Dickinson45f992a2009-12-19 11:20:49 +0000489
490 .. versionadded:: 3.2
491
492
493.. function:: erfc(x)
494
Raymond Hettinger1081d482011-03-31 12:04:53 -0700495 Return the complementary error function at *x*. The `complementary error
Georg Brandl5d941342016-02-26 19:37:12 +0100496 function <https://en.wikipedia.org/wiki/Error_function>`_ is defined as
Raymond Hettinger12e6c252011-03-31 13:59:24 -0700497 ``1.0 - erf(x)``. It is used for large values of *x* where a subtraction
498 from one would cause a `loss of significance
Georg Brandl5d941342016-02-26 19:37:12 +0100499 <https://en.wikipedia.org/wiki/Loss_of_significance>`_\.
Mark Dickinson45f992a2009-12-19 11:20:49 +0000500
501 .. versionadded:: 3.2
502
503
Mark Dickinson12c4bdb2009-09-28 19:21:11 +0000504.. function:: gamma(x)
505
Georg Brandl5d941342016-02-26 19:37:12 +0100506 Return the `Gamma function <https://en.wikipedia.org/wiki/Gamma_function>`_ at
Raymond Hettinger12e6c252011-03-31 13:59:24 -0700507 *x*.
Mark Dickinson12c4bdb2009-09-28 19:21:11 +0000508
Mark Dickinson56e09662009-10-01 16:13:29 +0000509 .. versionadded:: 3.2
Mark Dickinson12c4bdb2009-09-28 19:21:11 +0000510
511
Mark Dickinson05d2e082009-12-11 20:17:17 +0000512.. function:: lgamma(x)
513
514 Return the natural logarithm of the absolute value of the Gamma
515 function at *x*.
516
Mark Dickinson45f992a2009-12-19 11:20:49 +0000517 .. versionadded:: 3.2
Mark Dickinson05d2e082009-12-11 20:17:17 +0000518
519
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +0000520Constants
Mark Dickinson60fe6b02009-06-02 12:53:15 +0000521---------
Georg Brandl116aa622007-08-15 14:28:22 +0000522
523.. data:: pi
524
Serhiy Storchakadbaf7462017-05-04 12:25:09 +0300525 The mathematical constant *π* = 3.141592..., to available precision.
Georg Brandl116aa622007-08-15 14:28:22 +0000526
527
528.. data:: e
529
Serhiy Storchakadbaf7462017-05-04 12:25:09 +0300530 The mathematical constant *e* = 2.718281..., to available precision.
531
Georg Brandl116aa622007-08-15 14:28:22 +0000532
Guido van Rossum0a891d72016-08-15 09:12:52 -0700533.. data:: tau
534
Serhiy Storchakadbaf7462017-05-04 12:25:09 +0300535 The mathematical constant *τ* = 6.283185..., to available precision.
536 Tau is a circle constant equal to 2\ *π*, the ratio of a circle's circumference to
Guido van Rossum0a891d72016-08-15 09:12:52 -0700537 its radius. To learn more about Tau, check out Vi Hart's video `Pi is (still)
538 Wrong <https://www.youtube.com/watch?v=jG7vhMMXagQ>`_, and start celebrating
Sanyam Khurana338cd832018-01-20 05:55:37 +0530539 `Tau day <https://tauday.com/>`_ by eating twice as much pie!
Christian Heimes53876d92008-04-19 00:31:39 +0000540
Georg Brandl4770d6e2016-08-16 07:08:46 +0200541 .. versionadded:: 3.6
542
Serhiy Storchakadbaf7462017-05-04 12:25:09 +0300543
Mark Dickinsona5d0c7c2015-01-11 11:55:29 +0000544.. data:: inf
545
546 A floating-point positive infinity. (For negative infinity, use
547 ``-math.inf``.) Equivalent to the output of ``float('inf')``.
548
549 .. versionadded:: 3.5
550
551
552.. data:: nan
553
554 A floating-point "not a number" (NaN) value. Equivalent to the output of
555 ``float('nan')``.
556
557 .. versionadded:: 3.5
558
559
Georg Brandl495f7b52009-10-27 15:28:25 +0000560.. impl-detail::
Georg Brandl116aa622007-08-15 14:28:22 +0000561
562 The :mod:`math` module consists mostly of thin wrappers around the platform C
Mark Dickinson603b7532010-04-06 19:55:03 +0000563 math library functions. Behavior in exceptional cases follows Annex F of
564 the C99 standard where appropriate. The current implementation will raise
565 :exc:`ValueError` for invalid operations like ``sqrt(-1.0)`` or ``log(0.0)``
566 (where C99 Annex F recommends signaling invalid operation or divide-by-zero),
567 and :exc:`OverflowError` for results that overflow (for example,
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000568 ``exp(1000.0)``). A NaN will not be returned from any of the functions
569 above unless one or more of the input arguments was a NaN; in that case,
570 most functions will return a NaN, but (again following C99 Annex F) there
Mark Dickinson603b7532010-04-06 19:55:03 +0000571 are some exceptions to this rule, for example ``pow(float('nan'), 0.0)`` or
572 ``hypot(float('nan'), float('inf'))``.
Georg Brandl116aa622007-08-15 14:28:22 +0000573
Mark Dickinson42dfeec2010-04-06 22:13:37 +0000574 Note that Python makes no effort to distinguish signaling NaNs from
575 quiet NaNs, and behavior for signaling NaNs remains unspecified.
576 Typical behavior is to treat all NaNs as though they were quiet.
Christian Heimes53876d92008-04-19 00:31:39 +0000577
Georg Brandl116aa622007-08-15 14:28:22 +0000578
579.. seealso::
580
581 Module :mod:`cmath`
582 Complex number versions of many of these functions.
Mark Dickinson73934b92019-05-18 12:29:50 +0100583
584.. |nbsp| unicode:: 0xA0
585 :trim: