Il 03/09/2021 09:07, Julio Di Egidio ha scritto:
On Friday, 3 September 2021 at 01:22:28 UTC+2, Chris Angelico wrote:
On Fri, Sep 3, 2021 at 8:15 AM Dennis Lee Bieber <wlf...@ix.netcom.com> wrote:
On Fri, 3 Sep 2021 04:43:02 +1000, Chris Angelico <ros...@gmail.com>
declaimed the following:

The naive summation algorithm used by sum() is compatible with a
variety of different data types - even lists, although it's documented
as being intended for numbers - but if you know for sure that you're
working with floats, there's a more accurate algorithm available to
you.

math.fsum([7.23, 8.41, 6.15, 2.31, 7.73, 7.77])
39.6
math.fsum([8.41, 6.15, 2.31, 7.73, 7.77, 7.23])
39.6

It seeks to minimize loss to repeated rounding and is, I believe,
independent of data order.

Most likely it sorts the data so the smallest values get summed first,
and works its way up to the larger values. That way it minimizes the losses
that occur when denormalizing a value (to set the exponent equal to that of
the next larger value).

I'm not sure, but that sounds familiar. It doesn't really matter
though - the docs just say that it is an "accurate floating point
sum", so the precise algorithm is an implementation detail.

The docs are quite misleading there, it is not accurate without further 
qualifications.

<https://docs.python.org/3.8/library/math.html#math.fsum>
<https://code.activestate.com/recipes/393090/>

That said, fucking pathetic, when Dunning-Kruger is a compliment...

*Plonk*

Julio


https://en.wikipedia.org/wiki/IEEE_754
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to