blob: c8090b5afd2e678e7e74b4957ab6bb309280a0bb [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
Christian Heimes072c0f12008-01-03 23:01:04 +000079.. function:: isinf(x)
80
81 Checks if the float *x* is positive or negative infinite.
82
Christian Heimes072c0f12008-01-03 23:01:04 +000083
84.. function:: isnan(x)
85
86 Checks if the float *x* is a NaN (not a number). NaNs are part of the
87 IEEE 754 standards. Operation like but not limited to ``inf * 0``,
88 ``inf / inf`` or any operation involving a NaN, e.g. ``nan * 1``, return
89 a NaN.
90
Christian Heimes072c0f12008-01-03 23:01:04 +000091
Georg Brandl116aa622007-08-15 14:28:22 +000092.. function:: ldexp(x, i)
93
94 Return ``x * (2**i)``. This is essentially the inverse of function
95 :func:`frexp`.
96
97
98.. function:: modf(x)
99
100 Return the fractional and integer parts of *x*. Both results carry the sign of
101 *x*, and both are floats.
102
Benjamin Petersona37cfc62008-05-26 13:48:34 +0000103.. function:: sum(iterable)
104
105 Return an accurate floating point sum of values in the iterable. Avoids
106 loss of precision by tracking multiple intermediate partial sums. The
107 algorithm's accuracy depends on IEEE-754 arithmetic guarantees and the
108 typical case where the rounding mode is half-even.
Christian Heimes400adb02008-02-01 08:12:03 +0000109
110.. function:: trunc(x)
111
112 Return the :class:`Real` value *x* truncated to an :class:`Integral` (usually
113 a long integer). Delegates to ``x.__trunc__()``.
114
Christian Heimes400adb02008-02-01 08:12:03 +0000115
Georg Brandl116aa622007-08-15 14:28:22 +0000116Note that :func:`frexp` and :func:`modf` have a different call/return pattern
117than their C equivalents: they take a single argument and return a pair of
118values, rather than returning their second return value through an 'output
119parameter' (there is no such thing in Python).
120
121For the :func:`ceil`, :func:`floor`, and :func:`modf` functions, note that *all*
122floating-point numbers of sufficiently large magnitude are exact integers.
123Python floats typically carry no more than 53 bits of precision (the same as the
124platform C double type), in which case any float *x* with ``abs(x) >= 2**52``
125necessarily has no fractional bits.
126
127Power and logarithmic functions:
128
Georg Brandl116aa622007-08-15 14:28:22 +0000129.. function:: exp(x)
130
131 Return ``e**x``.
132
133
134.. function:: log(x[, base])
135
136 Return the logarithm of *x* to the given *base*. If the *base* is not specified,
137 return the natural logarithm of *x* (that is, the logarithm to base *e*).
138
Georg Brandl116aa622007-08-15 14:28:22 +0000139
Christian Heimes53876d92008-04-19 00:31:39 +0000140.. function:: log1p(x)
141
142 Return the natural logarithm of *1+x* (base *e*). The
143 result is calculated in a way which is accurate for *x* near zero.
144
Christian Heimes53876d92008-04-19 00:31:39 +0000145
Georg Brandl116aa622007-08-15 14:28:22 +0000146.. function:: log10(x)
147
148 Return the base-10 logarithm of *x*.
149
150
151.. function:: pow(x, y)
152
Christian Heimesa342c012008-04-20 21:01:16 +0000153 Return ``x`` raised to the power ``y``. Exceptional cases follow
154 Annex 'F' of the C99 standard as far as possible. In particular,
155 ``pow(1.0, x)`` and ``pow(x, 0.0)`` always return ``1.0``, even
156 when ``x`` is a zero or a NaN. If both ``x`` and ``y`` are finite,
157 ``x`` is negative, and ``y`` is not an integer then ``pow(x, y)``
158 is undefined, and raises :exc:`ValueError`.
Christian Heimes53876d92008-04-19 00:31:39 +0000159
Georg Brandl116aa622007-08-15 14:28:22 +0000160
161.. function:: sqrt(x)
162
163 Return the square root of *x*.
164
165Trigonometric functions:
166
167
168.. function:: acos(x)
169
170 Return the arc cosine of *x*, in radians.
171
172
173.. function:: asin(x)
174
175 Return the arc sine of *x*, in radians.
176
177
178.. function:: atan(x)
179
180 Return the arc tangent of *x*, in radians.
181
182
183.. function:: atan2(y, x)
184
185 Return ``atan(y / x)``, in radians. The result is between ``-pi`` and ``pi``.
186 The vector in the plane from the origin to point ``(x, y)`` makes this angle
187 with the positive X axis. The point of :func:`atan2` is that the signs of both
188 inputs are known to it, so it can compute the correct quadrant for the angle.
189 For example, ``atan(1``) and ``atan2(1, 1)`` are both ``pi/4``, but ``atan2(-1,
190 -1)`` is ``-3*pi/4``.
191
192
193.. function:: cos(x)
194
195 Return the cosine of *x* radians.
196
197
198.. function:: hypot(x, y)
199
200 Return the Euclidean norm, ``sqrt(x*x + y*y)``. This is the length of the vector
201 from the origin to point ``(x, y)``.
202
203
204.. function:: sin(x)
205
206 Return the sine of *x* radians.
207
208
209.. function:: tan(x)
210
211 Return the tangent of *x* radians.
212
213Angular conversion:
214
215
216.. function:: degrees(x)
217
218 Converts angle *x* from radians to degrees.
219
220
221.. function:: radians(x)
222
223 Converts angle *x* from degrees to radians.
224
225Hyperbolic functions:
226
227
Christian Heimesa342c012008-04-20 21:01:16 +0000228.. function:: acosh(x)
229
230 Return the inverse hyperbolic cosine of *x*.
231
Christian Heimesa342c012008-04-20 21:01:16 +0000232
233.. function:: asinh(x)
234
235 Return the inverse hyperbolic sine of *x*.
236
Christian Heimesa342c012008-04-20 21:01:16 +0000237
238.. function:: atanh(x)
239
240 Return the inverse hyperbolic tangent of *x*.
241
Christian Heimesa342c012008-04-20 21:01:16 +0000242
Georg Brandl116aa622007-08-15 14:28:22 +0000243.. function:: cosh(x)
244
245 Return the hyperbolic cosine of *x*.
246
247
248.. function:: sinh(x)
249
250 Return the hyperbolic sine of *x*.
251
252
253.. function:: tanh(x)
254
255 Return the hyperbolic tangent of *x*.
256
Christian Heimes53876d92008-04-19 00:31:39 +0000257
Christian Heimes53876d92008-04-19 00:31:39 +0000258
Georg Brandl116aa622007-08-15 14:28:22 +0000259The module also defines two mathematical constants:
260
261
262.. data:: pi
263
264 The mathematical constant *pi*.
265
266
267.. data:: e
268
269 The mathematical constant *e*.
270
Christian Heimes53876d92008-04-19 00:31:39 +0000271
Georg Brandl116aa622007-08-15 14:28:22 +0000272.. note::
273
274 The :mod:`math` module consists mostly of thin wrappers around the platform C
275 math library functions. Behavior in exceptional cases is loosely specified
276 by the C standards, and Python inherits much of its math-function
277 error-reporting behavior from the platform C implementation. As a result,
278 the specific exceptions raised in error cases (and even whether some
279 arguments are considered to be exceptional at all) are not defined in any
280 useful cross-platform or cross-release way. For example, whether
281 ``math.log(0)`` returns ``-Inf`` or raises :exc:`ValueError` or
282 :exc:`OverflowError` isn't defined, and in cases where ``math.log(0)`` raises
283 :exc:`OverflowError`, ``math.log(0L)`` may raise :exc:`ValueError` instead.
284
Christian Heimesa342c012008-04-20 21:01:16 +0000285 All functions return a quiet *NaN* if at least one of the args is *NaN*.
Christian Heimes53876d92008-04-19 00:31:39 +0000286 Signaling *NaN*s raise an exception. The exception type still depends on the
287 platform and libm implementation. It's usually :exc:`ValueError` for *EDOM*
288 and :exc:`OverflowError` for errno *ERANGE*.
289
Georg Brandl116aa622007-08-15 14:28:22 +0000290
291.. seealso::
292
293 Module :mod:`cmath`
294 Complex number versions of many of these functions.