blob: b111dd1db954bea1f9bd818ef9504135809bfb68 [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
24Number-theoretic and representation functions:
25
26
27.. function:: ceil(x)
28
Jeffrey Yasskin9871d8f2008-01-05 08:47:13 +000029 Return the ceiling of *x* as a float, the smallest integer value greater than or
30 equal to *x*.
Georg Brandl8ec7f652007-08-15 14:28:01 +000031
32
Christian Heimeseebb79c2008-01-03 22:32:26 +000033.. function:: copysign(x, y)
34
35 Return *x* with the sign of *y*. ``copysign`` copies the sign bit of an IEEE
36 754 float, ``copysign(1, -0.0)`` returns *-1.0*.
37
Andrew M. Kuchling54966a52008-01-04 18:25:05 +000038 .. versionadded:: 2.6
Christian Heimeseebb79c2008-01-03 22:32:26 +000039
40
Georg Brandl8ec7f652007-08-15 14:28:01 +000041.. function:: fabs(x)
42
43 Return the absolute value of *x*.
44
45
46.. function:: floor(x)
47
Jeffrey Yasskin9871d8f2008-01-05 08:47:13 +000048 Return the floor of *x* as a float, the largest integer value less than or equal
49 to *x*.
Georg Brandl8ec7f652007-08-15 14:28:01 +000050
Georg Brandl9749e152008-01-05 19:28:16 +000051 .. versionchanged:: 2.6
52 Added :meth:`__floor__` delegation.
53
Georg Brandl8ec7f652007-08-15 14:28:01 +000054
55.. function:: fmod(x, y)
56
57 Return ``fmod(x, y)``, as defined by the platform C library. Note that the
58 Python expression ``x % y`` may not return the same result. The intent of the C
59 standard is that ``fmod(x, y)`` be exactly (mathematically; to infinite
60 precision) equal to ``x - n*y`` for some integer *n* such that the result has
61 the same sign as *x* and magnitude less than ``abs(y)``. Python's ``x % y``
62 returns a result with the sign of *y* instead, and may not be exactly computable
63 for float arguments. For example, ``fmod(-1e-100, 1e100)`` is ``-1e-100``, but
64 the result of Python's ``-1e-100 % 1e100`` is ``1e100-1e-100``, which cannot be
65 represented exactly as a float, and rounds to the surprising ``1e100``. For
66 this reason, function :func:`fmod` is generally preferred when working with
67 floats, while Python's ``x % y`` is preferred when working with integers.
68
69
70.. function:: frexp(x)
71
72 Return the mantissa and exponent of *x* as the pair ``(m, e)``. *m* is a float
73 and *e* is an integer such that ``x == m * 2**e`` exactly. If *x* is zero,
74 returns ``(0.0, 0)``, otherwise ``0.5 <= abs(m) < 1``. This is used to "pick
75 apart" the internal representation of a float in a portable way.
76
77
Christian Heimese2ca4242008-01-03 20:23:15 +000078.. function:: isinf(x)
79
80 Checks if the float *x* is positive or negative infinite.
81
Andrew M. Kuchling54966a52008-01-04 18:25:05 +000082 .. versionadded:: 2.6
Christian Heimese2ca4242008-01-03 20:23:15 +000083
84
85.. function:: isnan(x)
86
87 Checks if the float *x* is a NaN (not a number). NaNs are part of the
88 IEEE 754 standards. Operation like but not limited to ``inf * 0``,
89 ``inf / inf`` or any operation involving a NaN, e.g. ``nan * 1``, return
90 a NaN.
91
Andrew M. Kuchling54966a52008-01-04 18:25:05 +000092 .. versionadded:: 2.6
Christian Heimese2ca4242008-01-03 20:23:15 +000093
94
Georg Brandl8ec7f652007-08-15 14:28:01 +000095.. function:: ldexp(x, i)
96
97 Return ``x * (2**i)``. This is essentially the inverse of function
98 :func:`frexp`.
99
100
101.. function:: modf(x)
102
103 Return the fractional and integer parts of *x*. Both results carry the sign of
104 *x*, and both are floats.
105
106Note that :func:`frexp` and :func:`modf` have a different call/return pattern
107than their C equivalents: they take a single argument and return a pair of
108values, rather than returning their second return value through an 'output
109parameter' (there is no such thing in Python).
110
111For the :func:`ceil`, :func:`floor`, and :func:`modf` functions, note that *all*
112floating-point numbers of sufficiently large magnitude are exact integers.
113Python floats typically carry no more than 53 bits of precision (the same as the
114platform C double type), in which case any float *x* with ``abs(x) >= 2**52``
115necessarily has no fractional bits.
116
117Power and logarithmic functions:
118
119
120.. function:: exp(x)
121
122 Return ``e**x``.
123
124
125.. function:: log(x[, base])
126
127 Return the logarithm of *x* to the given *base*. If the *base* is not specified,
128 return the natural logarithm of *x* (that is, the logarithm to base *e*).
129
130 .. versionchanged:: 2.3
131 *base* argument added.
132
133
134.. function:: log10(x)
135
136 Return the base-10 logarithm of *x*.
137
138
139.. function:: pow(x, y)
140
141 Return ``x**y``.
142
143
144.. function:: sqrt(x)
145
146 Return the square root of *x*.
147
148Trigonometric functions:
149
150
151.. function:: acos(x)
152
153 Return the arc cosine of *x*, in radians.
154
155
156.. function:: asin(x)
157
158 Return the arc sine of *x*, in radians.
159
160
161.. function:: atan(x)
162
163 Return the arc tangent of *x*, in radians.
164
165
166.. function:: atan2(y, x)
167
168 Return ``atan(y / x)``, in radians. The result is between ``-pi`` and ``pi``.
169 The vector in the plane from the origin to point ``(x, y)`` makes this angle
170 with the positive X axis. The point of :func:`atan2` is that the signs of both
171 inputs are known to it, so it can compute the correct quadrant for the angle.
172 For example, ``atan(1``) and ``atan2(1, 1)`` are both ``pi/4``, but ``atan2(-1,
173 -1)`` is ``-3*pi/4``.
174
175
176.. function:: cos(x)
177
178 Return the cosine of *x* radians.
179
180
181.. function:: hypot(x, y)
182
183 Return the Euclidean norm, ``sqrt(x*x + y*y)``. This is the length of the vector
184 from the origin to point ``(x, y)``.
185
186
187.. function:: sin(x)
188
189 Return the sine of *x* radians.
190
191
192.. function:: tan(x)
193
194 Return the tangent of *x* radians.
195
196Angular conversion:
197
198
199.. function:: degrees(x)
200
201 Converts angle *x* from radians to degrees.
202
203
204.. function:: radians(x)
205
206 Converts angle *x* from degrees to radians.
207
208Hyperbolic functions:
209
210
211.. function:: cosh(x)
212
213 Return the hyperbolic cosine of *x*.
214
215
216.. function:: sinh(x)
217
218 Return the hyperbolic sine of *x*.
219
220
221.. function:: tanh(x)
222
223 Return the hyperbolic tangent of *x*.
224
225The module also defines two mathematical constants:
226
227
228.. data:: pi
229
230 The mathematical constant *pi*.
231
232
233.. data:: e
234
235 The mathematical constant *e*.
236
237.. note::
238
239 The :mod:`math` module consists mostly of thin wrappers around the platform C
240 math library functions. Behavior in exceptional cases is loosely specified
241 by the C standards, and Python inherits much of its math-function
242 error-reporting behavior from the platform C implementation. As a result,
243 the specific exceptions raised in error cases (and even whether some
244 arguments are considered to be exceptional at all) are not defined in any
245 useful cross-platform or cross-release way. For example, whether
246 ``math.log(0)`` returns ``-Inf`` or raises :exc:`ValueError` or
247 :exc:`OverflowError` isn't defined, and in cases where ``math.log(0)`` raises
248 :exc:`OverflowError`, ``math.log(0L)`` may raise :exc:`ValueError` instead.
249
250
251.. seealso::
252
253 Module :mod:`cmath`
254 Complex number versions of many of these functions.
255