
mpmath is a replacement for Python's float/complex types and math/cmath modules with unlimited precision and exponent sizes. The mpmath software is written entirely in Python without any external dependencies and hence runs almost anywhere, without the need for compilation.
Requirements:
· Python (It has been tested with Python 2.5 and should work with Python 2.4)
To install, unpack the mpmath archive and run
python setup.py install
Documentation and usage:
Import mpmath with
from mpmath import *
This provides the classes mpf and mpc which work analogously to Python's float and complex types:
>>> mpf(2) / mpf(3)
mpf('0.66666666666666663')
>>> mpc(0, -1)
mpc(real='0', imag='-1')
>>> mpf(-0.6) ** mpf(-0.2)
mpc(real='0.89603999408558288', imag='-0.65101116249684809')
For prettier output (that also hides small rounding errors), use print or str():
>>> print mpf(2) / mpf(3)
0.666666666666667
>>> print mpc(1+2j)**0.5
(1.27201964951407 + 0.786151377757423j)
The precision is controlled by the properties mpf.prec (number of bits) and mpf.dps (number of decimals). These properties are linked, so changing one automatically updates the other to match. Setting prec or dps changes the precision at which all operations are carried out and the number of digits to display when printing numbers. The default is
prec=53 and dps=15, the same as Python floats.
>>> mpf.dps = 30
>>> mpf(2) / mpf(3)
mpf('0.66666666666666666666666666666663')
>>> print _
0.666666666666666666666666666667
>>> mpf.dps = 15 # restore to default
You can create mpfs and mpcs from Python numbers, or combine mpfs and mpcs with Python numbers in arithmetic operations, but be aware that regular Python floats only have finite precision. To initialize an mpf with a full-precision value, use a string:
>>> mpf(0.1)
mpf('0.10000000000000001') # same accuracy as float
>>> mpf.dps = 50
>>> mpf(0.1)
mpf('0.1000000000000000055511151231257827021181583404541016') # junk
>>> mpf('0.1')
mpf('0.1000000000000000000000000000000000000000000000000001') # ok
The following standard functions are available and support both real and complex arguments:
sqrt, exp, log, power, cos, sin, tan, cosh, sinh, tanh,
acos, asin, atan, acosh, asinh, atanh
Example:
>>> mpf.dps = 15
>>> print cos(1)
0.540302305868140
>>> mpf.dps = 50
>>> print cos(1)
0.54030230586813971740093660744297660373231042061792
Some less-common functions are also available: gamma (gamma function), factorial, erf (error function), lower_gamma/upper_gamma (incomplete gamma function) and zeta (Riemann zeta function).
Finally, the convenience functions hypot and atan2 are available (defined for real numbers only).
The constants pi, e, and cgamma (Euler's constant) are available as special objects that behave like mpfs but whose values automatically adjust to the precision.
>>> mpf.dps = 15
>>> print pi
3.14159265358979
>>> mpf.dps = 50
>>> print pi
3.1415926535897932384626433832795028841971693993751
>>> mpf.dps = 15
>>> e**(-pi*1j)
mpc(real='-1', imag='-1.2289836075083701E-16')
>>> mpf.dps = 50
>>> e**(-pi*1j)
mpc(real='-1', imag='1.0106 [...] E-51')
Directed rounding is partially implemented. For example, this computes and verifies a 15-digit approximation interval for pi:
>>> mpf.dps = 15
>>> mpf.round_down(); pi1 = +pi
>>> mpf.round_up(); pi2 = +pi
>>> pi1
mpf('3.1415926535897931')
>>> pi2
mpf('3.1415926535897936')
>>> mpf.dps = 30
>>> pi1 < pi < pi2
True
What's New in This Release:
· This version adds methods for oscillatory quadrature, accelerated summation of infinite series, limit computation, integration of ODEs, and constant recognition (similar to the Inverse Symbolic Calculator).
· There are several new mathematical functions, including the Lambert W function, elliptic integrals and various hypergeometric functions, plus a few new mathematical constants such as the golden ratio and Khinchin's constant.
· Various existing functions have been tuned for accuracy and speed.
· A number of important bugfixes have also been committed.
| Publisher | N/A |
|---|---|
| Downloads | 2 |
| Date Added | 23rd April, 2008 |
| File Size | 130.47 KB |
| Report | Send us a report |
| Reviews | Review mpmath 0.8 now |
| Rate this file |
