Subject: bug#41665: python-numpy: incorrect results on i686-linux

From: Diego Nicola Barbato <[email-masked]>
Date: Tue, 02 Jun 2020 18:16:24 +0200

Hi Guix,

On i686-linux Numpy produces incorrect results for some matrix
products.

This minimal reproducer ...

--8<---------------cut here---------------start------------->8---
python3 <<EOF
from numpy import array
from numpy.linalg import inv
A = array([[1. , 0. , 0. ],
           [0. , 3. , 3. ],
           [0. , 0. , 1. ]])
print(inv(A) @ A[:,2])
print((inv(A) @ A)[:,2])
EOF
--8<---------------cut here---------------end--------------->8---

... should return:

--8<---------------cut here---------------start------------->8---
[0. 0. 1.]
[0. 0. 1.]
--8<---------------cut here---------------end--------------->8---

On x86_64-linux, armhf-linux, and aarch64-linux I get the correct
result.  On i686-linux I get this instead:

--8<---------------cut here---------------start------------->8---
[ 0.00000000e+00 -5.55111512e-17  1.00000000e+00]
[0. 0. 1.]
--8<---------------cut here---------------end--------------->8---

I came across this bug while looking into https://debbugs.gnu.org/40406,
for which it seems to be the underlying cause.

I'm surprised this wasn't caught by Numpy's test suite.

Regards,

Diego