[SciPy-user] Can SciPy compute ln(640320**3 + 744)/163**.5 to 30 places?

Fernando Perez fperez.net at gmail.com
Mon Jan 15 09:27:42 CST 2007


On 1/14/07, Dick Moores <rdmoores at gmail.com> wrote:
> On 1/13/07, Fernando Perez <fperez.net at gmail.com> wrote:
>
> > In [16]: import clnum as n
> >
> > In [17]: n.set_default_precision(50)
> >
> > In [18]: n.log(640320**3 + 744)/n.sqrt(163)
> > Out[18]: mpf('3.141592653589793238462643383279726619347549880883522422293',55)
> >
>
> I assumed you did that in Python. So I tried it with this script,
> adding a print statement:
> ===================================
> # clnumTest1-a.py
>
> import clnum as n
>
> n.set_default_precision(50)
>
> print "%.50f" % (n.log(640320**3 + 744)/n.sqrt(163))
> ======================================
> result: 3.141592653589793100000000000000
>
> So clarify, if you would, please.


In [8]: print "%.50f" % (n.log(640320**3 + 744)/n.sqrt(163))
3.14159265358979311599796346854418516159057617187500

In [9]: n.log(640320**3 + 744)/n.sqrt(163)
Out[9]: mpf('3.141592653589793238462643383279726619347549880883522422293',55)

In [10]: print n.log(640320**3 + 744)/n.sqrt(163)
3.1415926535897932385


There's a difference between:

a) '%Xf' formatting, which is done by Python by converting your object
into a regular float (64-bit) and then generating a string
representation for it, seen in [8]

b) the __repr__ of an mpf object, seen in [9]

c) the __str__ of an mpf object, seen in [10]

Same object (the mpf number), three different mechanisms for getting a
string form out of it, three different results (as a /string/).

Cheers,

f


More information about the SciPy-user mailing list