On 5/11/14 10:10 PM, Dave Angel wrote:
On 05/11/2014 02:54 PM, Mark H Harris wrote:
>julia> sin(BigFloat(π/4))
> 7.0710678118654750275194295621751674626154323953749278952436611913748
> 20215180412e-01 with 256 bits of precision
That answer doesn't seem to come anywhere near 256 bits of precision.
Using Python 3.2,
>>> x=70710678118654750275194295621751674626154323953749278952436611913748
>>> x*x
4999999999999999693838300213161705693483516931249926767981110058185818806614907837502621065882204197129973479350206261627418690991407504
Not that this is surprising, but it does make a terrible ad for how
great Julia is.
Dave, you get the golden egg! I expected D'Aprano to catch it first!
Yes, BigFloat does the same dumb thing Python's Decimal does. π/4 is
not a BigFloat, and BigFloat simply makes the 16 digit float into a 256
bit float, the sin of which will only be 16 digits accurate (more or less).
It has nothing to do with the language (Python vs. Julia) it has to do
with the way the BigFloat is formed. So let's fix it by forming the π
constant as a BigFloat constant:
>julia> n = BigFloat(1)
>1e+00 with 256 bits of precision
>julia> π = atan(n/5)*16 - atan(n/239)*4
>3.141592653589793238462643383279502884197169399375105820974944592307816406286198e+00
>with 256 bits of precision
>julia> S = sin(π/4)
>7.07106781186547524400844362104849039284835937688474036588339868995366239231051e-01
>with 256 bits of precision
>julia> S * S
>4.999999999999999999999999999999999999999999999999999999999999999999999999999957e-01
>with 256 bits of precision
Not too bad...
marcus
--
https://mail.python.org/mailman/listinfo/python-list