blob: df4ec1b69f5a5c057dd4a1f54332a9abfb88cc09 [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
24Number-theoretic and representation functions:
25
26
27.. function:: ceil(x)
28
Georg Brandl2a033732008-04-05 17:37:09 +000029 Return the ceiling of *x*, the smallest integer greater than or equal to *x*.
30 If *x* is not a float, delegates to ``x.__ceil__()``, which should return an
31 :class:`Integral` value.
Christian Heimes072c0f12008-01-03 23:01:04 +000032
33
34.. function:: copysign(x, y)
35
36 Return *x* with the sign of *y*. ``copysign`` copies the sign bit of an IEEE
37 754 float, ``copysign(1, -0.0)`` returns *-1.0*.
38
Georg Brandl116aa622007-08-15 14:28:22 +000039
40.. function:: fabs(x)
41
42 Return the absolute value of *x*.
43
Georg Brandlc28e1fa2008-06-10 19:20:26 +000044.. function:: factorial(x)
45
Benjamin Petersonfea6a942008-07-02 16:11:42 +000046 Return *x* factorial. Raises :exc:`ValueError` if *x* is not integral or
Georg Brandlc28e1fa2008-06-10 19:20:26 +000047 is negative.
Georg Brandl116aa622007-08-15 14:28:22 +000048
49.. function:: floor(x)
50
Georg Brandl2a033732008-04-05 17:37:09 +000051 Return the floor of *x*, the largest integer less than or equal to *x*.
52 If *x* is not a float, delegates to ``x.__floor__()``, which should return an
53 :class:`Integral` value.
Georg Brandl116aa622007-08-15 14:28:22 +000054
55
56.. function:: fmod(x, y)
57
58 Return ``fmod(x, y)``, as defined by the platform C library. Note that the
59 Python expression ``x % y`` may not return the same result. The intent of the C
60 standard is that ``fmod(x, y)`` be exactly (mathematically; to infinite
61 precision) equal to ``x - n*y`` for some integer *n* such that the result has
62 the same sign as *x* and magnitude less than ``abs(y)``. Python's ``x % y``
63 returns a result with the sign of *y* instead, and may not be exactly computable
64 for float arguments. For example, ``fmod(-1e-100, 1e100)`` is ``-1e-100``, but
65 the result of Python's ``-1e-100 % 1e100`` is ``1e100-1e-100``, which cannot be
66 represented exactly as a float, and rounds to the surprising ``1e100``. For
67 this reason, function :func:`fmod` is generally preferred when working with
68 floats, while Python's ``x % y`` is preferred when working with integers.
69
70
71.. function:: frexp(x)
72
73 Return the mantissa and exponent of *x* as the pair ``(m, e)``. *m* is a float
74 and *e* is an integer such that ``x == m * 2**e`` exactly. If *x* is zero,
75 returns ``(0.0, 0)``, otherwise ``0.5 <= abs(m) < 1``. This is used to "pick
76 apart" the internal representation of a float in a portable way.
77
78
Mark Dickinsonaa7633a2008-08-01 08:16:13 +000079.. function:: fsum(iterable)
80
81 Return an accurate floating point sum of values in the iterable. Avoids
82 loss of precision by tracking multiple intermediate partial sums. The
83 algorithm's accuracy depends on IEEE-754 arithmetic guarantees and the
84 typical case where the rounding mode is half-even.
85
86 .. note::
87
88 On platforms where arithmetic results are not correctly rounded,
89 :func:`fsum` may occasionally produce incorrect results; these
90 results should be no less accurate than those from the builtin
91 :func:`sum` function, but nevertheless may have arbitrarily
92 large relative error.
93
94 In particular, this affects some older Intel hardware (for
95 example Pentium and earlier x86 processors) that makes use of
96 'extended precision' floating-point registers with 64 bits of
97 precision instead of the 53 bits of precision provided by a C
98 double. Arithmetic operations using these registers may be
99 doubly rounded (rounded first to 64 bits, and then rerounded to
100 53 bits), leading to incorrectly rounded results. To test
101 whether your machine is one of those affected, try the following
102 at a Python prompt::
103
104 >>> 1e16 + 2.9999
105 10000000000000002.0
106
107 Machines subject to the double-rounding problem described above
108 are likely to print ``10000000000000004.0`` instead of
109 ``10000000000000002.0``.
110
111
112 .. versionadded:: 2.6
113
114
Christian Heimes072c0f12008-01-03 23:01:04 +0000115.. function:: isinf(x)
116
117 Checks if the float *x* is positive or negative infinite.
118
Christian Heimes072c0f12008-01-03 23:01:04 +0000119
120.. function:: isnan(x)
121
122 Checks if the float *x* is a NaN (not a number). NaNs are part of the
123 IEEE 754 standards. Operation like but not limited to ``inf * 0``,
124 ``inf / inf`` or any operation involving a NaN, e.g. ``nan * 1``, return
125 a NaN.
126
Christian Heimes072c0f12008-01-03 23:01:04 +0000127
Georg Brandl116aa622007-08-15 14:28:22 +0000128.. function:: ldexp(x, i)
129
130 Return ``x * (2**i)``. This is essentially the inverse of function
131 :func:`frexp`.
132
133
134.. function:: modf(x)
135
136 Return the fractional and integer parts of *x*. Both results carry the sign of
137 *x*, and both are floats.
138
Christian Heimes400adb02008-02-01 08:12:03 +0000139
140.. function:: trunc(x)
141
142 Return the :class:`Real` value *x* truncated to an :class:`Integral` (usually
143 a long integer). Delegates to ``x.__trunc__()``.
144
Christian Heimes400adb02008-02-01 08:12:03 +0000145
Georg Brandl116aa622007-08-15 14:28:22 +0000146Note that :func:`frexp` and :func:`modf` have a different call/return pattern
147than their C equivalents: they take a single argument and return a pair of
148values, rather than returning their second return value through an 'output
149parameter' (there is no such thing in Python).
150
151For the :func:`ceil`, :func:`floor`, and :func:`modf` functions, note that *all*
152floating-point numbers of sufficiently large magnitude are exact integers.
153Python floats typically carry no more than 53 bits of precision (the same as the
154platform C double type), in which case any float *x* with ``abs(x) >= 2**52``
155necessarily has no fractional bits.
156
157Power and logarithmic functions:
158
Georg Brandl116aa622007-08-15 14:28:22 +0000159.. function:: exp(x)
160
161 Return ``e**x``.
162
163
164.. function:: log(x[, base])
165
166 Return the logarithm of *x* to the given *base*. If the *base* is not specified,
167 return the natural logarithm of *x* (that is, the logarithm to base *e*).
168
Georg Brandl116aa622007-08-15 14:28:22 +0000169
Christian Heimes53876d92008-04-19 00:31:39 +0000170.. function:: log1p(x)
171
172 Return the natural logarithm of *1+x* (base *e*). The
173 result is calculated in a way which is accurate for *x* near zero.
174
Christian Heimes53876d92008-04-19 00:31:39 +0000175
Georg Brandl116aa622007-08-15 14:28:22 +0000176.. function:: log10(x)
177
178 Return the base-10 logarithm of *x*.
179
180
181.. function:: pow(x, y)
182
Christian Heimesa342c012008-04-20 21:01:16 +0000183 Return ``x`` raised to the power ``y``. Exceptional cases follow
184 Annex 'F' of the C99 standard as far as possible. In particular,
185 ``pow(1.0, x)`` and ``pow(x, 0.0)`` always return ``1.0``, even
186 when ``x`` is a zero or a NaN. If both ``x`` and ``y`` are finite,
187 ``x`` is negative, and ``y`` is not an integer then ``pow(x, y)``
188 is undefined, and raises :exc:`ValueError`.
Christian Heimes53876d92008-04-19 00:31:39 +0000189
Georg Brandl116aa622007-08-15 14:28:22 +0000190
191.. function:: sqrt(x)
192
193 Return the square root of *x*.
194
195Trigonometric functions:
196
197
198.. function:: acos(x)
199
200 Return the arc cosine of *x*, in radians.
201
202
203.. function:: asin(x)
204
205 Return the arc sine of *x*, in radians.
206
207
208.. function:: atan(x)
209
210 Return the arc tangent of *x*, in radians.
211
212
213.. function:: atan2(y, x)
214
215 Return ``atan(y / x)``, in radians. The result is between ``-pi`` and ``pi``.
216 The vector in the plane from the origin to point ``(x, y)`` makes this angle
217 with the positive X axis. The point of :func:`atan2` is that the signs of both
218 inputs are known to it, so it can compute the correct quadrant for the angle.
219 For example, ``atan(1``) and ``atan2(1, 1)`` are both ``pi/4``, but ``atan2(-1,
220 -1)`` is ``-3*pi/4``.
221
222
223.. function:: cos(x)
224
225 Return the cosine of *x* radians.
226
227
228.. function:: hypot(x, y)
229
230 Return the Euclidean norm, ``sqrt(x*x + y*y)``. This is the length of the vector
231 from the origin to point ``(x, y)``.
232
233
234.. function:: sin(x)
235
236 Return the sine of *x* radians.
237
238
239.. function:: tan(x)
240
241 Return the tangent of *x* radians.
242
243Angular conversion:
244
245
246.. function:: degrees(x)
247
248 Converts angle *x* from radians to degrees.
249
250
251.. function:: radians(x)
252
253 Converts angle *x* from degrees to radians.
254
255Hyperbolic functions:
256
257
Christian Heimesa342c012008-04-20 21:01:16 +0000258.. function:: acosh(x)
259
260 Return the inverse hyperbolic cosine of *x*.
261
Christian Heimesa342c012008-04-20 21:01:16 +0000262
263.. function:: asinh(x)
264
265 Return the inverse hyperbolic sine of *x*.
266
Christian Heimesa342c012008-04-20 21:01:16 +0000267
268.. function:: atanh(x)
269
270 Return the inverse hyperbolic tangent of *x*.
271
Christian Heimesa342c012008-04-20 21:01:16 +0000272
Georg Brandl116aa622007-08-15 14:28:22 +0000273.. function:: cosh(x)
274
275 Return the hyperbolic cosine of *x*.
276
277
278.. function:: sinh(x)
279
280 Return the hyperbolic sine of *x*.
281
282
283.. function:: tanh(x)
284
285 Return the hyperbolic tangent of *x*.
286
Christian Heimes53876d92008-04-19 00:31:39 +0000287
Christian Heimes53876d92008-04-19 00:31:39 +0000288
Georg Brandl116aa622007-08-15 14:28:22 +0000289The module also defines two mathematical constants:
290
291
292.. data:: pi
293
294 The mathematical constant *pi*.
295
296
297.. data:: e
298
299 The mathematical constant *e*.
300
Christian Heimes53876d92008-04-19 00:31:39 +0000301
Georg Brandl116aa622007-08-15 14:28:22 +0000302.. note::
303
304 The :mod:`math` module consists mostly of thin wrappers around the platform C
305 math library functions. Behavior in exceptional cases is loosely specified
306 by the C standards, and Python inherits much of its math-function
307 error-reporting behavior from the platform C implementation. As a result,
308 the specific exceptions raised in error cases (and even whether some
309 arguments are considered to be exceptional at all) are not defined in any
310 useful cross-platform or cross-release way. For example, whether
311 ``math.log(0)`` returns ``-Inf`` or raises :exc:`ValueError` or
312 :exc:`OverflowError` isn't defined, and in cases where ``math.log(0)`` raises
313 :exc:`OverflowError`, ``math.log(0L)`` may raise :exc:`ValueError` instead.
314
Christian Heimesa342c012008-04-20 21:01:16 +0000315 All functions return a quiet *NaN* if at least one of the args is *NaN*.
Christian Heimes53876d92008-04-19 00:31:39 +0000316 Signaling *NaN*s raise an exception. The exception type still depends on the
317 platform and libm implementation. It's usually :exc:`ValueError` for *EDOM*
318 and :exc:`OverflowError` for errno *ERANGE*.
319
Georg Brandl116aa622007-08-15 14:28:22 +0000320
321.. seealso::
322
323 Module :mod:`cmath`
324 Complex number versions of many of these functions.