2015-10-07 23 views

risposta

3

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.