[Numpy-discussion] Bug in logaddexp2.reduce

David Warde-Farley dwf@cs.toronto....
Wed Mar 31 17:38:54 CDT 2010


On 31-Mar-10, at 6:15 PM, T J wrote:

>
> In [1]: np.logaddexp2(-1.5849625007211563, -53.584962500721154)
> Out[1]: -1.5849625007211561
>
> In [2]: np.logaddexp2(-0.5849625007211563, -53.584962500721154)
> Out[2]: nan
>
> In [3]: np.log2(np.exp2(-0.5849625007211563) +  
> np.exp2(-53.584962500721154))
> Out[3]: -0.58496250072115608
>
> Shouldn't the result at least behave nicely and just return the  
> larger value?

Unfortunately there's no good way of getting around order-of- 
operations-related rounding error using the reduce() machinery, that I  
know of.

I'd like to see a 'logsumexp' and 'logsumexp2' in NumPy instead, using  
the generalized ufunc architecture, to do it over an arbitrary  
dimension of an array, rather than needing to invoke 'reduce' on  
logaddexp. I tried my hand at writing one but I couldn't manage to get  
it working for some reason, and I haven't had time to revisit it: http://mail.scipy.org/pipermail/numpy-discussion/2010-January/048067.html

David


More information about the NumPy-Discussion mailing list