[NumPy-Tickets] [NumPy] #2206: Floating point string conversions corrupted when using SSE2

NumPy Trac numpy-tickets@scipy....
Thu Aug 23 15:34:18 CDT 2012

#2206: Floating point string conversions corrupted when using SSE2
 Reporter:  ekvamme                                            |       Owner:  pv         
     Type:  defect                                             |      Status:  new        
 Priority:  normal                                             |   Milestone:  Unscheduled
Component:  numpy.linalg                                       |     Version:  1.6.2      
 Keywords:  linalg, sse2, python2.7, "ERR", string conversion  |  
 After running numpy.linalg functions, string conversions using str() on
 some small floating point numbers are corrupted and return “ERR”.  This
 bug occurs with all versions of Numpy win32 for Python2.7 with all
 releases of Python 2.7. It only occurs with Numpy sse2 architecture
 enabled and does not occur with "nosse" or "sse3".  It was seen first on
 an older Pentum that only supported up to sse2 so it was the default Numpy
 installation architecture but the same failure is observed on any newer
 systems by using the /arch sse2 argument when installing Numpy.  On an
 older system that has only up to sse2 support, the error is avoided by
 installing Numpy with the /arch nosse argument.
 A test script that demonstrates the  error is as follows:
 # Demonstrate fail in numpy for Python 2.7 when installed with SSE2
 support (/arch sse2)

 import numpy

 z = numpy.array([[15,0,672],[0,400,36],[0,0,1]])

 beforestr = str(1e-12)

 numpy.linalg.inv(z)  # This causes second str() to return a different

 afterstr = str(1e-12)

 if beforestr != afterstr:
     print "FAIL =", beforestr, afterstr
     print "PASS"
 raw_input("Press any key to continue")

 This has been shown to fail with the following versions: Python 2.7.3 with
 Numpy 1.5.0, 1.5.1, 1.6.0, 1.6.1, 1.6.2, and 1.7.0b1 and Python 2.7 with
 Numpy 1.5.0 (just to show all versions from the earliest releases of both
 Python 2.7 and Numpy for 2.7 fail). This error does not occur with Numpy
 win32 for Python2.5.  The versions tried were Python 2.5.4 with Numpy
 1.0.4, 1.1.0, 1.1.1, 1.2.0, 1.2.1, 1.3.0, 1.4.1, 1.5.0, 1.5.1, 1.6.0,
 1.6.1, 1.6.2, and 1.7.0b1.

 While the observation of the error has only been clearly observed on the
 string conversion of a float after running linalg, the concern is that
 other floating point computation problems may be generated by this but I
 have not discovered them yet.

Ticket URL: <http://projects.scipy.org/numpy/ticket/2206>
NumPy <http://projects.scipy.org/numpy>
My example project

More information about the NumPy-Tickets mailing list