blob: 6ec1feee35a6dc7151c5fd981f7e6db9a96703a3 [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
Raymond Hettinger963eb0f2019-06-04 01:23:06 -070044 Evaluates to ``n! / (k! * (n - k)!)`` when ``k <= n`` and evaluates
45 to zero when ``k > n``.
Raymond Hettingerb7fade42019-06-01 15:01:46 -070046
Raymond Hettinger963eb0f2019-06-04 01:23:06 -070047 Also called the binomial coefficient because it is equivalent
48 to the coefficient of k-th term in polynomial expansion of the
49 expression ``(1 + x) ** n``.
50
Raymond Hettinger8f4bbb52019-06-04 03:40:23 -070051 Raises :exc:`TypeError` if either of the arguments are not integers.
Raymond Hettinger963eb0f2019-06-04 01:23:06 -070052 Raises :exc:`ValueError` if either of the arguments are negative.
Raymond Hettingerb7fade42019-06-01 15:01:46 -070053
54 .. versionadded:: 3.8
55
56
Christian Heimes072c0f12008-01-03 23:01:04 +000057.. function:: copysign(x, y)
58
Andrew Kuchling8cb1ec32014-02-16 11:11:25 -050059 Return a float with the magnitude (absolute value) of *x* but the sign of
60 *y*. On platforms that support signed zeros, ``copysign(1.0, -0.0)``
61 returns *-1.0*.
Christian Heimes072c0f12008-01-03 23:01:04 +000062
Serhiy Storchakadbaf7462017-05-04 12:25:09 +030063
Georg Brandl116aa622007-08-15 14:28:22 +000064.. function:: fabs(x)
65
66 Return the absolute value of *x*.
67
Serhiy Storchakadbaf7462017-05-04 12:25:09 +030068
Georg Brandlc28e1fa2008-06-10 19:20:26 +000069.. function:: factorial(x)
70
Akshay Sharma46126712019-05-31 22:11:17 +053071 Return *x* factorial as an integer. Raises :exc:`ValueError` if *x* is not integral or
Georg Brandlc28e1fa2008-06-10 19:20:26 +000072 is negative.
Georg Brandl116aa622007-08-15 14:28:22 +000073
Serhiy Storchaka231aad32019-06-17 16:57:27 +030074 .. deprecated:: 3.9
75 Accepting floats with integral values (like ``5.0``) is deprecated.
76
Serhiy Storchakadbaf7462017-05-04 12:25:09 +030077
Georg Brandl116aa622007-08-15 14:28:22 +000078.. function:: floor(x)
79
Georg Brandl2a033732008-04-05 17:37:09 +000080 Return the floor of *x*, the largest integer less than or equal to *x*.
81 If *x* is not a float, delegates to ``x.__floor__()``, which should return an
Serhiy Storchakabfdcd432013-10-13 23:09:14 +030082 :class:`~numbers.Integral` value.
Georg Brandl116aa622007-08-15 14:28:22 +000083
84
85.. function:: fmod(x, y)
86
87 Return ``fmod(x, y)``, as defined by the platform C library. Note that the
88 Python expression ``x % y`` may not return the same result. The intent of the C
89 standard is that ``fmod(x, y)`` be exactly (mathematically; to infinite
90 precision) equal to ``x - n*y`` for some integer *n* such that the result has
91 the same sign as *x* and magnitude less than ``abs(y)``. Python's ``x % y``
92 returns a result with the sign of *y* instead, and may not be exactly computable
93 for float arguments. For example, ``fmod(-1e-100, 1e100)`` is ``-1e-100``, but
94 the result of Python's ``-1e-100 % 1e100`` is ``1e100-1e-100``, which cannot be
95 represented exactly as a float, and rounds to the surprising ``1e100``. For
96 this reason, function :func:`fmod` is generally preferred when working with
97 floats, while Python's ``x % y`` is preferred when working with integers.
98
99
100.. function:: frexp(x)
101
102 Return the mantissa and exponent of *x* as the pair ``(m, e)``. *m* is a float
103 and *e* is an integer such that ``x == m * 2**e`` exactly. If *x* is zero,
104 returns ``(0.0, 0)``, otherwise ``0.5 <= abs(m) < 1``. This is used to "pick
105 apart" the internal representation of a float in a portable way.
106
107
Mark Dickinsonaa7633a2008-08-01 08:16:13 +0000108.. function:: fsum(iterable)
109
110 Return an accurate floating point sum of values in the iterable. Avoids
Raymond Hettingerf3936f82009-02-19 05:48:05 +0000111 loss of precision by tracking multiple intermediate partial sums::
Mark Dickinsonaa7633a2008-08-01 08:16:13 +0000112
Raymond Hettingerf3936f82009-02-19 05:48:05 +0000113 >>> sum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
Mark Dickinson5a55b612009-06-28 20:59:42 +0000114 0.9999999999999999
Raymond Hettingerf3936f82009-02-19 05:48:05 +0000115 >>> fsum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
116 1.0
Mark Dickinsonaa7633a2008-08-01 08:16:13 +0000117
Raymond Hettingerf3936f82009-02-19 05:48:05 +0000118 The algorithm's accuracy depends on IEEE-754 arithmetic guarantees and the
119 typical case where the rounding mode is half-even. On some non-Windows
120 builds, the underlying C library uses extended precision addition and may
121 occasionally double-round an intermediate sum causing it to be off in its
122 least significant bit.
Mark Dickinsonaa7633a2008-08-01 08:16:13 +0000123
Raymond Hettinger477be822009-02-19 06:44:30 +0000124 For further discussion and two alternative approaches, see the `ASPN cookbook
125 recipes for accurate floating point summation
Georg Brandl5d941342016-02-26 19:37:12 +0100126 <https://code.activestate.com/recipes/393090/>`_\.
Raymond Hettinger477be822009-02-19 06:44:30 +0000127
Mark Dickinsonaa7633a2008-08-01 08:16:13 +0000128
Serhiy Storchaka559e7f12020-02-23 13:21:29 +0200129.. function:: gcd(*integers)
Serhiy Storchaka48e47aa2015-05-13 00:19:51 +0300130
Serhiy Storchaka559e7f12020-02-23 13:21:29 +0200131 Return the greatest common divisor of the specified integer arguments.
132 If any of the arguments is nonzero, then the returned value is the largest
133 positive integer that is a divisor af all arguments. If all arguments
134 are zero, then the returned value is ``0``. ``gcd()`` without arguments
135 returns ``0``.
Serhiy Storchaka48e47aa2015-05-13 00:19:51 +0300136
Benjamin Petersone960d182015-05-12 17:24:17 -0400137 .. versionadded:: 3.5
138
Serhiy Storchaka559e7f12020-02-23 13:21:29 +0200139 .. versionchanged:: 3.9
140 Added support for an arbitrary number of arguments. Formerly, only two
141 arguments were supported.
ananthan-123f2ee21d2020-02-19 23:51:37 +0530142
143
Tal Einatd5519ed2015-05-31 22:05:00 +0300144.. function:: isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)
145
146 Return ``True`` if the values *a* and *b* are close to each other and
147 ``False`` otherwise.
148
149 Whether or not two values are considered close is determined according to
150 given absolute and relative tolerances.
151
152 *rel_tol* is the relative tolerance -- it is the maximum allowed difference
153 between *a* and *b*, relative to the larger absolute value of *a* or *b*.
154 For example, to set a tolerance of 5%, pass ``rel_tol=0.05``. The default
155 tolerance is ``1e-09``, which assures that the two values are the same
156 within about 9 decimal digits. *rel_tol* must be greater than zero.
157
158 *abs_tol* is the minimum absolute tolerance -- useful for comparisons near
159 zero. *abs_tol* must be at least zero.
160
161 If no errors occur, the result will be:
162 ``abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)``.
163
164 The IEEE 754 special values of ``NaN``, ``inf``, and ``-inf`` will be
165 handled according to IEEE rules. Specifically, ``NaN`` is not considered
166 close to any other value, including ``NaN``. ``inf`` and ``-inf`` are only
167 considered close to themselves.
168
169 .. versionadded:: 3.5
170
171 .. seealso::
172
173 :pep:`485` -- A function for testing approximate equality
174
175
Mark Dickinson8e0c9962010-07-11 17:38:24 +0000176.. function:: isfinite(x)
177
178 Return ``True`` if *x* is neither an infinity nor a NaN, and
179 ``False`` otherwise. (Note that ``0.0`` *is* considered finite.)
180
Mark Dickinsonc7622422010-07-11 19:47:37 +0000181 .. versionadded:: 3.2
182
Mark Dickinson8e0c9962010-07-11 17:38:24 +0000183
Christian Heimes072c0f12008-01-03 23:01:04 +0000184.. function:: isinf(x)
185
Mark Dickinsonc7622422010-07-11 19:47:37 +0000186 Return ``True`` if *x* is a positive or negative infinity, and
187 ``False`` otherwise.
Christian Heimes072c0f12008-01-03 23:01:04 +0000188
Christian Heimes072c0f12008-01-03 23:01:04 +0000189
190.. function:: isnan(x)
191
Mark Dickinsonc7622422010-07-11 19:47:37 +0000192 Return ``True`` if *x* is a NaN (not a number), and ``False`` otherwise.
Christian Heimes072c0f12008-01-03 23:01:04 +0000193
Christian Heimes072c0f12008-01-03 23:01:04 +0000194
Mark Dickinson73934b92019-05-18 12:29:50 +0100195.. function:: isqrt(n)
196
197 Return the integer square root of the nonnegative integer *n*. This is the
198 floor of the exact square root of *n*, or equivalently the greatest integer
199 *a* such that *a*\ ² |nbsp| ≤ |nbsp| *n*.
200
201 For some applications, it may be more convenient to have the least integer
202 *a* such that *n* |nbsp| ≤ |nbsp| *a*\ ², or in other words the ceiling of
203 the exact square root of *n*. For positive *n*, this can be computed using
204 ``a = 1 + isqrt(n - 1)``.
205
206 .. versionadded:: 3.8
207
208
Serhiy Storchaka559e7f12020-02-23 13:21:29 +0200209.. function:: lcm(*integers)
210
211 Return the least common multiple of the specified integer arguments.
212 If all arguments are nonzero, then the returned value is the smallest
213 positive integer that is a multiple of all arguments. If any of the arguments
214 is zero, then the returned value is ``0``. ``lcm()`` without arguments
215 returns ``1``.
216
217 .. versionadded:: 3.9
218
219
Georg Brandl116aa622007-08-15 14:28:22 +0000220.. function:: ldexp(x, i)
221
222 Return ``x * (2**i)``. This is essentially the inverse of function
223 :func:`frexp`.
224
225
226.. function:: modf(x)
227
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +0000228 Return the fractional and integer parts of *x*. Both results carry the sign
229 of *x* and are floats.
Georg Brandl116aa622007-08-15 14:28:22 +0000230
Christian Heimes400adb02008-02-01 08:12:03 +0000231
Victor Stinner100fafc2020-01-12 02:15:42 +0100232.. function:: nextafter(x, y)
233
234 Return the next floating-point value after *x* towards *y*.
235
236 If *x* is equal to *y*, return *y*.
237
Victor Stinner54cfbb22020-01-12 12:57:47 +0100238 Examples:
239
240 * ``math.nextafter(x, math.inf)`` goes up: towards positive infinity.
241 * ``math.nextafter(x, -math.inf)`` goes down: towards minus infinity.
242 * ``math.nextafter(x, 0.0)`` goes towards zero.
243 * ``math.nextafter(x, math.copysign(math.inf, x))`` goes away from zero.
244
Victor Stinner0b2ab212020-01-13 12:44:35 +0100245 See also :func:`math.ulp`.
246
Victor Stinner100fafc2020-01-12 02:15:42 +0100247 .. versionadded:: 3.9
248
Raymond Hettingere119b3d2019-06-08 08:58:11 -0700249.. function:: perm(n, k=None)
Serhiy Storchaka5ae299a2019-06-02 11:16:49 +0300250
251 Return the number of ways to choose *k* items from *n* items
252 without repetition and with order.
253
Raymond Hettinger963eb0f2019-06-04 01:23:06 -0700254 Evaluates to ``n! / (n - k)!`` when ``k <= n`` and evaluates
255 to zero when ``k > n``.
Serhiy Storchaka5ae299a2019-06-02 11:16:49 +0300256
Raymond Hettingere119b3d2019-06-08 08:58:11 -0700257 If *k* is not specified or is None, then *k* defaults to *n*
258 and the function returns ``n!``.
259
Raymond Hettinger8f4bbb52019-06-04 03:40:23 -0700260 Raises :exc:`TypeError` if either of the arguments are not integers.
Raymond Hettinger963eb0f2019-06-04 01:23:06 -0700261 Raises :exc:`ValueError` if either of the arguments are negative.
Serhiy Storchaka5ae299a2019-06-02 11:16:49 +0300262
263 .. versionadded:: 3.8
264
265
Pablo Galindobc098512019-02-07 07:04:02 +0000266.. function:: prod(iterable, *, start=1)
267
268 Calculate the product of all the elements in the input *iterable*.
269 The default *start* value for the product is ``1``.
270
271 When the iterable is empty, return the start value. This function is
272 intended specifically for use with numeric values and may reject
273 non-numeric types.
274
275 .. versionadded:: 3.8
276
277
Mark Dickinsona0ce3752017-04-05 18:34:27 +0100278.. function:: remainder(x, y)
279
280 Return the IEEE 754-style remainder of *x* with respect to *y*. For
281 finite *x* and finite nonzero *y*, this is the difference ``x - n*y``,
282 where ``n`` is the closest integer to the exact value of the quotient ``x /
283 y``. If ``x / y`` is exactly halfway between two consecutive integers, the
284 nearest *even* integer is used for ``n``. The remainder ``r = remainder(x,
285 y)`` thus always satisfies ``abs(r) <= 0.5 * abs(y)``.
286
287 Special cases follow IEEE 754: in particular, ``remainder(x, math.inf)`` is
288 *x* for any finite *x*, and ``remainder(x, 0)`` and
289 ``remainder(math.inf, x)`` raise :exc:`ValueError` for any non-NaN *x*.
290 If the result of the remainder operation is zero, that zero will have
291 the same sign as *x*.
292
293 On platforms using IEEE 754 binary floating-point, the result of this
294 operation is always exactly representable: no rounding error is introduced.
295
296 .. versionadded:: 3.7
297
298
Christian Heimes400adb02008-02-01 08:12:03 +0000299.. function:: trunc(x)
300
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300301 Return the :class:`~numbers.Real` value *x* truncated to an
302 :class:`~numbers.Integral` (usually an integer). Delegates to
Eric Appelt308eab92018-03-10 02:44:12 -0600303 :meth:`x.__trunc__() <object.__trunc__>`.
Christian Heimes400adb02008-02-01 08:12:03 +0000304
Victor Stinner0b2ab212020-01-13 12:44:35 +0100305.. function:: ulp(x)
306
307 Return the value of the least significant bit of the float *x*:
308
309 * If *x* is a NaN (not a number), return *x*.
310 * If *x* is negative, return ``ulp(-x)``.
311 * If *x* is a positive infinity, return *x*.
312 * If *x* is equal to zero, return the smallest positive
313 *denormalized* representable float (smaller than the minimum positive
314 *normalized* float, :data:`sys.float_info.min <sys.float_info>`).
315 * If *x* is equal to the largest positive representable float,
316 return the value of the least significant bit of *x*, such that the first
317 float smaller than *x* is ``x - ulp(x)``.
318 * Otherwise (*x* is a positive finite number), return the value of the least
319 significant bit of *x*, such that the first float bigger than *x*
320 is ``x + ulp(x)``.
321
322 ULP stands for "Unit in the Last Place".
323
324 See also :func:`math.nextafter` and :data:`sys.float_info.epsilon
325 <sys.float_info>`.
326
327 .. versionadded:: 3.9
328
Christian Heimes400adb02008-02-01 08:12:03 +0000329
Georg Brandl116aa622007-08-15 14:28:22 +0000330Note that :func:`frexp` and :func:`modf` have a different call/return pattern
331than their C equivalents: they take a single argument and return a pair of
332values, rather than returning their second return value through an 'output
333parameter' (there is no such thing in Python).
334
335For the :func:`ceil`, :func:`floor`, and :func:`modf` functions, note that *all*
336floating-point numbers of sufficiently large magnitude are exact integers.
337Python floats typically carry no more than 53 bits of precision (the same as the
338platform C double type), in which case any float *x* with ``abs(x) >= 2**52``
339necessarily has no fractional bits.
340
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +0000341
342Power and logarithmic functions
343-------------------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000344
Georg Brandl116aa622007-08-15 14:28:22 +0000345.. function:: exp(x)
346
Serhiy Storchakadbaf7462017-05-04 12:25:09 +0300347 Return *e* raised to the power *x*, where *e* = 2.718281... is the base
348 of natural logarithms. This is usually more accurate than ``math.e ** x``
349 or ``pow(math.e, x)``.
350
Georg Brandl116aa622007-08-15 14:28:22 +0000351
Mark Dickinson664b5112009-12-16 20:23:42 +0000352.. function:: expm1(x)
353
Serhiy Storchakadbaf7462017-05-04 12:25:09 +0300354 Return *e* raised to the power *x*, minus 1. Here *e* is the base of natural
355 logarithms. For small floats *x*, the subtraction in ``exp(x) - 1``
Raymond Hettinger1081d482011-03-31 12:04:53 -0700356 can result in a `significant loss of precision
Georg Brandl5d941342016-02-26 19:37:12 +0100357 <https://en.wikipedia.org/wiki/Loss_of_significance>`_\; the :func:`expm1`
Raymond Hettinger1081d482011-03-31 12:04:53 -0700358 function provides a way to compute this quantity to full precision::
Mark Dickinson664b5112009-12-16 20:23:42 +0000359
360 >>> from math import exp, expm1
361 >>> exp(1e-5) - 1 # gives result accurate to 11 places
362 1.0000050000069649e-05
363 >>> expm1(1e-5) # result accurate to full precision
364 1.0000050000166668e-05
365
Mark Dickinson45f992a2009-12-19 11:20:49 +0000366 .. versionadded:: 3.2
367
Mark Dickinson664b5112009-12-16 20:23:42 +0000368
Georg Brandl116aa622007-08-15 14:28:22 +0000369.. function:: log(x[, base])
370
Georg Brandla6053b42009-09-01 08:11:14 +0000371 With one argument, return the natural logarithm of *x* (to base *e*).
372
373 With two arguments, return the logarithm of *x* to the given *base*,
374 calculated as ``log(x)/log(base)``.
Georg Brandl116aa622007-08-15 14:28:22 +0000375
Georg Brandl116aa622007-08-15 14:28:22 +0000376
Christian Heimes53876d92008-04-19 00:31:39 +0000377.. function:: log1p(x)
378
379 Return the natural logarithm of *1+x* (base *e*). The
380 result is calculated in a way which is accurate for *x* near zero.
381
Christian Heimes53876d92008-04-19 00:31:39 +0000382
Victor Stinnerfa0e3d52011-05-09 01:01:09 +0200383.. function:: log2(x)
384
Benjamin Petersoneaee1382011-05-08 19:48:08 -0500385 Return the base-2 logarithm of *x*. This is usually more accurate than
386 ``log(x, 2)``.
Victor Stinnerfa0e3d52011-05-09 01:01:09 +0200387
388 .. versionadded:: 3.3
389
Victor Stinner9415afc2011-09-21 03:35:18 +0200390 .. seealso::
391
392 :meth:`int.bit_length` returns the number of bits necessary to represent
393 an integer in binary, excluding the sign and leading zeros.
394
Victor Stinnerfa0e3d52011-05-09 01:01:09 +0200395
Georg Brandl116aa622007-08-15 14:28:22 +0000396.. function:: log10(x)
397
Georg Brandla6053b42009-09-01 08:11:14 +0000398 Return the base-10 logarithm of *x*. This is usually more accurate
399 than ``log(x, 10)``.
Georg Brandl116aa622007-08-15 14:28:22 +0000400
401
402.. function:: pow(x, y)
403
Christian Heimesa342c012008-04-20 21:01:16 +0000404 Return ``x`` raised to the power ``y``. Exceptional cases follow
405 Annex 'F' of the C99 standard as far as possible. In particular,
406 ``pow(1.0, x)`` and ``pow(x, 0.0)`` always return ``1.0``, even
407 when ``x`` is a zero or a NaN. If both ``x`` and ``y`` are finite,
408 ``x`` is negative, and ``y`` is not an integer then ``pow(x, y)``
409 is undefined, and raises :exc:`ValueError`.
Christian Heimes53876d92008-04-19 00:31:39 +0000410
Ezio Melotti739d5492013-02-23 04:53:44 +0200411 Unlike the built-in ``**`` operator, :func:`math.pow` converts both
412 its arguments to type :class:`float`. Use ``**`` or the built-in
413 :func:`pow` function for computing exact integer powers.
414
Georg Brandl116aa622007-08-15 14:28:22 +0000415
416.. function:: sqrt(x)
417
418 Return the square root of *x*.
419
Serhiy Storchakadbaf7462017-05-04 12:25:09 +0300420
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +0000421Trigonometric functions
422-----------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000423
Georg Brandl116aa622007-08-15 14:28:22 +0000424.. function:: acos(x)
425
Giovanni Cappellottodc3f99f2019-07-13 09:59:55 -0400426 Return the arc cosine of *x*, in radians. The result is between ``0`` and
427 ``pi``.
Georg Brandl116aa622007-08-15 14:28:22 +0000428
429
430.. function:: asin(x)
431
Giovanni Cappellottodc3f99f2019-07-13 09:59:55 -0400432 Return the arc sine of *x*, in radians. The result is between ``-pi/2`` and
433 ``pi/2``.
Georg Brandl116aa622007-08-15 14:28:22 +0000434
435
436.. function:: atan(x)
437
Giovanni Cappellottodc3f99f2019-07-13 09:59:55 -0400438 Return the arc tangent of *x*, in radians. The result is between ``-pi/2`` and
439 ``pi/2``.
Georg Brandl116aa622007-08-15 14:28:22 +0000440
441
442.. function:: atan2(y, x)
443
444 Return ``atan(y / x)``, in radians. The result is between ``-pi`` and ``pi``.
445 The vector in the plane from the origin to point ``(x, y)`` makes this angle
446 with the positive X axis. The point of :func:`atan2` is that the signs of both
447 inputs are known to it, so it can compute the correct quadrant for the angle.
Mark Dickinson603b7532010-04-06 19:55:03 +0000448 For example, ``atan(1)`` and ``atan2(1, 1)`` are both ``pi/4``, but ``atan2(-1,
Georg Brandl116aa622007-08-15 14:28:22 +0000449 -1)`` is ``-3*pi/4``.
450
451
452.. function:: cos(x)
453
454 Return the cosine of *x* radians.
455
456
Raymond Hettinger9c18b1a2018-07-31 00:45:49 -0700457.. function:: dist(p, q)
458
459 Return the Euclidean distance between two points *p* and *q*, each
Raymond Hettinger6b5f1b42019-07-27 14:04:29 -0700460 given as a sequence (or iterable) of coordinates. The two points
461 must have the same dimension.
Raymond Hettinger9c18b1a2018-07-31 00:45:49 -0700462
463 Roughly equivalent to::
464
465 sqrt(sum((px - qx) ** 2.0 for px, qx in zip(p, q)))
466
467 .. versionadded:: 3.8
468
469
Raymond Hettingerc6dabe32018-07-28 07:48:04 -0700470.. function:: hypot(*coordinates)
Georg Brandl116aa622007-08-15 14:28:22 +0000471
Raymond Hettingerc6dabe32018-07-28 07:48:04 -0700472 Return the Euclidean norm, ``sqrt(sum(x**2 for x in coordinates))``.
473 This is the length of the vector from the origin to the point
474 given by the coordinates.
475
476 For a two dimensional point ``(x, y)``, this is equivalent to computing
477 the hypotenuse of a right triangle using the Pythagorean theorem,
478 ``sqrt(x*x + y*y)``.
479
480 .. versionchanged:: 3.8
481 Added support for n-dimensional points. Formerly, only the two
482 dimensional case was supported.
Georg Brandl116aa622007-08-15 14:28:22 +0000483
484
485.. function:: sin(x)
486
487 Return the sine of *x* radians.
488
489
490.. function:: tan(x)
491
492 Return the tangent of *x* radians.
493
Serhiy Storchakadbaf7462017-05-04 12:25:09 +0300494
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +0000495Angular conversion
496------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000497
Georg Brandl116aa622007-08-15 14:28:22 +0000498.. function:: degrees(x)
499
Benjamin Peterson19a3f172015-05-12 19:15:53 -0400500 Convert angle *x* from radians to degrees.
Georg Brandl116aa622007-08-15 14:28:22 +0000501
502
503.. function:: radians(x)
504
Benjamin Peterson19a3f172015-05-12 19:15:53 -0400505 Convert angle *x* from degrees to radians.
Georg Brandl116aa622007-08-15 14:28:22 +0000506
Serhiy Storchakadbaf7462017-05-04 12:25:09 +0300507
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +0000508Hyperbolic functions
509--------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000510
Georg Brandl5d941342016-02-26 19:37:12 +0100511`Hyperbolic functions <https://en.wikipedia.org/wiki/Hyperbolic_function>`_
Raymond Hettinger1081d482011-03-31 12:04:53 -0700512are analogs of trigonometric functions that are based on hyperbolas
513instead of circles.
Georg Brandl116aa622007-08-15 14:28:22 +0000514
Christian Heimesa342c012008-04-20 21:01:16 +0000515.. function:: acosh(x)
516
517 Return the inverse hyperbolic cosine of *x*.
518
Christian Heimesa342c012008-04-20 21:01:16 +0000519
520.. function:: asinh(x)
521
522 Return the inverse hyperbolic sine of *x*.
523
Christian Heimesa342c012008-04-20 21:01:16 +0000524
525.. function:: atanh(x)
526
527 Return the inverse hyperbolic tangent of *x*.
528
Christian Heimesa342c012008-04-20 21:01:16 +0000529
Georg Brandl116aa622007-08-15 14:28:22 +0000530.. function:: cosh(x)
531
532 Return the hyperbolic cosine of *x*.
533
534
535.. function:: sinh(x)
536
537 Return the hyperbolic sine of *x*.
538
539
540.. function:: tanh(x)
541
542 Return the hyperbolic tangent of *x*.
543
Christian Heimes53876d92008-04-19 00:31:39 +0000544
Mark Dickinson12c4bdb2009-09-28 19:21:11 +0000545Special functions
546-----------------
547
Mark Dickinson45f992a2009-12-19 11:20:49 +0000548.. function:: erf(x)
549
Georg Brandl5d941342016-02-26 19:37:12 +0100550 Return the `error function <https://en.wikipedia.org/wiki/Error_function>`_ at
Raymond Hettinger1081d482011-03-31 12:04:53 -0700551 *x*.
552
553 The :func:`erf` function can be used to compute traditional statistical
554 functions such as the `cumulative standard normal distribution
Georg Brandl5d941342016-02-26 19:37:12 +0100555 <https://en.wikipedia.org/wiki/Normal_distribution#Cumulative_distribution_function>`_::
Raymond Hettinger1081d482011-03-31 12:04:53 -0700556
557 def phi(x):
558 'Cumulative distribution function for the standard normal distribution'
559 return (1.0 + erf(x / sqrt(2.0))) / 2.0
Mark Dickinson45f992a2009-12-19 11:20:49 +0000560
561 .. versionadded:: 3.2
562
563
564.. function:: erfc(x)
565
Raymond Hettinger1081d482011-03-31 12:04:53 -0700566 Return the complementary error function at *x*. The `complementary error
Georg Brandl5d941342016-02-26 19:37:12 +0100567 function <https://en.wikipedia.org/wiki/Error_function>`_ is defined as
Raymond Hettinger12e6c252011-03-31 13:59:24 -0700568 ``1.0 - erf(x)``. It is used for large values of *x* where a subtraction
569 from one would cause a `loss of significance
Georg Brandl5d941342016-02-26 19:37:12 +0100570 <https://en.wikipedia.org/wiki/Loss_of_significance>`_\.
Mark Dickinson45f992a2009-12-19 11:20:49 +0000571
572 .. versionadded:: 3.2
573
574
Mark Dickinson12c4bdb2009-09-28 19:21:11 +0000575.. function:: gamma(x)
576
Georg Brandl5d941342016-02-26 19:37:12 +0100577 Return the `Gamma function <https://en.wikipedia.org/wiki/Gamma_function>`_ at
Raymond Hettinger12e6c252011-03-31 13:59:24 -0700578 *x*.
Mark Dickinson12c4bdb2009-09-28 19:21:11 +0000579
Mark Dickinson56e09662009-10-01 16:13:29 +0000580 .. versionadded:: 3.2
Mark Dickinson12c4bdb2009-09-28 19:21:11 +0000581
582
Mark Dickinson05d2e082009-12-11 20:17:17 +0000583.. function:: lgamma(x)
584
585 Return the natural logarithm of the absolute value of the Gamma
586 function at *x*.
587
Mark Dickinson45f992a2009-12-19 11:20:49 +0000588 .. versionadded:: 3.2
Mark Dickinson05d2e082009-12-11 20:17:17 +0000589
590
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +0000591Constants
Mark Dickinson60fe6b02009-06-02 12:53:15 +0000592---------
Georg Brandl116aa622007-08-15 14:28:22 +0000593
594.. data:: pi
595
Serhiy Storchakadbaf7462017-05-04 12:25:09 +0300596 The mathematical constant *π* = 3.141592..., to available precision.
Georg Brandl116aa622007-08-15 14:28:22 +0000597
598
599.. data:: e
600
Serhiy Storchakadbaf7462017-05-04 12:25:09 +0300601 The mathematical constant *e* = 2.718281..., to available precision.
602
Georg Brandl116aa622007-08-15 14:28:22 +0000603
Guido van Rossum0a891d72016-08-15 09:12:52 -0700604.. data:: tau
605
Serhiy Storchakadbaf7462017-05-04 12:25:09 +0300606 The mathematical constant *τ* = 6.283185..., to available precision.
607 Tau is a circle constant equal to 2\ *π*, the ratio of a circle's circumference to
Guido van Rossum0a891d72016-08-15 09:12:52 -0700608 its radius. To learn more about Tau, check out Vi Hart's video `Pi is (still)
609 Wrong <https://www.youtube.com/watch?v=jG7vhMMXagQ>`_, and start celebrating
Sanyam Khurana338cd832018-01-20 05:55:37 +0530610 `Tau day <https://tauday.com/>`_ by eating twice as much pie!
Christian Heimes53876d92008-04-19 00:31:39 +0000611
Georg Brandl4770d6e2016-08-16 07:08:46 +0200612 .. versionadded:: 3.6
613
Serhiy Storchakadbaf7462017-05-04 12:25:09 +0300614
Mark Dickinsona5d0c7c2015-01-11 11:55:29 +0000615.. data:: inf
616
617 A floating-point positive infinity. (For negative infinity, use
618 ``-math.inf``.) Equivalent to the output of ``float('inf')``.
619
620 .. versionadded:: 3.5
621
622
623.. data:: nan
624
625 A floating-point "not a number" (NaN) value. Equivalent to the output of
626 ``float('nan')``.
627
628 .. versionadded:: 3.5
629
630
Georg Brandl495f7b52009-10-27 15:28:25 +0000631.. impl-detail::
Georg Brandl116aa622007-08-15 14:28:22 +0000632
633 The :mod:`math` module consists mostly of thin wrappers around the platform C
Mark Dickinson603b7532010-04-06 19:55:03 +0000634 math library functions. Behavior in exceptional cases follows Annex F of
635 the C99 standard where appropriate. The current implementation will raise
636 :exc:`ValueError` for invalid operations like ``sqrt(-1.0)`` or ``log(0.0)``
637 (where C99 Annex F recommends signaling invalid operation or divide-by-zero),
638 and :exc:`OverflowError` for results that overflow (for example,
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000639 ``exp(1000.0)``). A NaN will not be returned from any of the functions
640 above unless one or more of the input arguments was a NaN; in that case,
641 most functions will return a NaN, but (again following C99 Annex F) there
Mark Dickinson603b7532010-04-06 19:55:03 +0000642 are some exceptions to this rule, for example ``pow(float('nan'), 0.0)`` or
643 ``hypot(float('nan'), float('inf'))``.
Georg Brandl116aa622007-08-15 14:28:22 +0000644
Mark Dickinson42dfeec2010-04-06 22:13:37 +0000645 Note that Python makes no effort to distinguish signaling NaNs from
646 quiet NaNs, and behavior for signaling NaNs remains unspecified.
647 Typical behavior is to treat all NaNs as though they were quiet.
Christian Heimes53876d92008-04-19 00:31:39 +0000648
Georg Brandl116aa622007-08-15 14:28:22 +0000649
650.. seealso::
651
652 Module :mod:`cmath`
653 Complex number versions of many of these functions.
Mark Dickinson73934b92019-05-18 12:29:50 +0100654
655.. |nbsp| unicode:: 0xA0
656 :trim: