[Numpy-discussion] Unpleasant behavior with poly1d and numpy scalar multiplication

Fernando Perez fperez.net at gmail.com
Tue Jul 31 15:54:49 EDT 2007


Hi all,

consider this little script:

from numpy import poly1d, float, float32
p=poly1d([1.,2.])
three=float(3)
three32=float32(3)

print 'three*p:',three*p
print 'three32*p:',three32*p
print 'p*three32:',p*three32


which produces when run:

In [3]: run pol1d.py
three*p:
3 x + 6
three32*p: [ 3.  6.]
p*three32:
3 x + 6


The fact that multiplication between poly1d objects and numbers is:

- non-commutative when the numbers are numpy scalars
- different for the same number if it is a python float vs a numpy scalar

is rather unpleasant, and I can see this causing hard to find bugs,
depending on whether your code gets a parameter that came as a python
float or a numpy one.

This was found today by a colleague on numpy 1.0.4.dev3937.   It feels
like a bug to me, do others agree? Or is it consistent with a part of
the zen of numpy I've missed thus far?

Thanks,

f



More information about the NumPy-Discussion mailing list