[Numpy-discussion] Wrong treatment of byte order?
Nadav Horesh
nadavh at visionsense.com
Tue Aug 23 10:33:16 EDT 2011
My system is a 64 bit gentoo linux on core i7 machine. Numpy version 1.6.1 and pyton(s) 2.7.2 and 3.2.1
Problem summary:
I tried t invert a matrix of explicit little endian byte-order and got an error. The inversion run properly with a native byte order, and I get a wrong answer with not error message when the matrix is set to big-endian.
mat is a 3x3 float64 array
>> import numpy as N
>>> mat.dtype.byteorder
'<'
>>> N.linalg.inv(mat) # Refuse to ibvert
Traceback (most recent call last):
File "<pyshell#107>", line 1, in <module>
N.linalg.inv(mat)
File "/usr/lib64/python2.7/site-packages/numpy/linalg/linalg.py", line 445, in inv
return wrap(solve(a, identity(a.shape[0], dtype=a.dtype)))
File "/usr/lib64/python2.7/site-packages/numpy/linalg/linalg.py", line 326, in solve
results = lapack_routine(n_eq, n_rhs, a, n_eq, pivots, b, n_eq, 0)
LapackError: Parameter a has non-native byte order in lapack_lite.dgesv
>>> N.linalg.inv(mat.newbyteorder('=')) # OK
array([[ 0.09234453, 0.46163744, 0.2713108 ],
[ 0.48886135, 0.51230859, 0.2277598 ],
[ 0.48303131, 0.82571266, 0.17551993]])
>>> N.linalg.inv(mat.newbyteorder('>')) # WRONG !!!
array([[ 2.39051169e-159, -7.70643158e-157, 5.34087235e-160],
[ 2.11823992e+305, 2.37224043e+307, -4.31607382e+304],
[ -1.26608299e+304, -1.43225563e+306, 7.22233688e+303]])
Nadav
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20110823/a248de1f/attachment.html>
More information about the NumPy-Discussion
mailing list