Ricerca su numpy kahan
alzato un chiuso bug/problema
https://github.com/numpy/numpy/issues/2448 numerico-stabile sum (simile a math.fsum)
io non l'ho letto nel dettaglio. Si noti il riferimento alla math.fsum
fsum(iterable)
Return an accurate floating point sum of values in the iterable.
Assumes IEEE-754 floating point arithmetic.
(from the Python math docs)
Return an accurate floating point sum of values in the iterable. Avoids loss of precision by tracking multiple intermediate partial sums
E una domanda SO, con qualche discussione, ma nessuna vera risposta:
Is there any documentation of numpy numerical stability?
Un semplice confronto:
In [320]: x=np.ones(100000)/100000
In [321]: sum(x)-1
Out[321]: -1.9162449405030202e-12
In [322]: np.sum(x)-1
Out[322]: 1.3322676295501878e-15
In [323]: math.fsum(x)-1
Out[323]: 0.0
rispettivi orari sono 72 ms, 304 μs, 23,8 ms
np.sum
è chiaramente più veloce; ma fsum
è migliore di sum
, probabilmente a causa della sua implementazione C sepecializzata.