math module for Decimals

Mark Dickinson dickinsm at gmail.com
Tue Jan 6 20:29:55 CET 2009


On Jan 6, 3:23 pm, Fredrik Johansson <fredrik.johans... at gmail.com>
wrote:
> FYI, mpmath (http://code.google.com/p/mpmath/) implements arbitrary-
> precision standard transcendental functions in pure Python. It is much
> faster than decimal, dmath, decimalfuncs and AJDecimalMathAdditions,
> and handles huge arguments just fine.

Yes, I think mpmath was mentioned already somewhere above;
it sounds like a perfect tool for the OP's requirements.

Note that it's still subject to the same limitations as anything
else for trig_function(really huge argument), of course:

>>> import mpmath
>>> mpmath.cos(mpmath.mpf('1e999999999'))
[... still waiting for a result 30 minutes later ...]

(not a criticism of mpmath:  just a demonstration that this
really is pretty much unavoidable).

Out of curiosity, what sort of guarantees does mpmath give on
error bounds?  It looks like it aims for 'almost correctly
rounded';  i.e., error < 0.500...001 ulps.

Here's one place in mpmath where it looks as though more
internal precision is needed (with default settings: 53-bit
precision, etc.)

>>> mpmath.log(mpmath.mpc(0.6, 0.8))
mpc(real='0.0', imag='0.9272952180016123')

Shouldn't the real part here be something like:

2.2204460492503132e-17

instead of 0.0?

Mark



More information about the Python-list mailing list