[Numpy-tickets] [NumPy] #424: stable argsort() and sort() behave differently on 2-column uint64 arrays. possibly a bug in argsort() or sort() .

NumPy numpy-tickets at scipy.net
Mon Jan 15 18:32:04 CST 2007


#424: stable argsort() and sort() behave differently on 2-column uint64 arrays.
possibly a bug in argsort() or sort() .
------------------------+---------------------------------------------------
 Reporter:  ciro        |       Owner:  somebody     
     Type:  defect      |      Status:  new          
 Priority:  high        |   Milestone:  1.0.2 Release
Component:  numpy.core  |     Version:  1.0.1        
 Severity:  major       |    Keywords:               
------------------------+---------------------------------------------------
 numpy 1.0.1 fails to pass the following
 in a reproducible way.

 =====================================================================
 #!/usr/bin/env python2.4
 from numpy import *


 N = 500000
 X = zeros((N,2), uint64)

 for i in range(N):
    X[i,0] = random.randint(2**20) << 43      # if we set highest bit -
 problems
 #   X[i,0] = random.randint(2**20) << 42     # this works, instead


 X2 = X[:,0].copy()
 X2.sort(kind='mergesort')

 X_index = X[:,0].argsort(kind='mergesort')
 X[:,0] = take(X[:,0], X_index)

 print alltrue(X2 == X[:,0])

 ============================================================

 Conversely, the following always works:



 N = 500000
 X = zeros(N, uint64)

 for i in range(N):
    X[i] = random.randint(2**20) << 43      # if we set highest bit, ok in
 this case
 #   X[i] = random.randint(2**20) << 42     # this works


 X2 = X.copy()
 X2.sort(kind='mergesort')

 X_index = X.argsort(kind='mergesort')
 X = take(X, X_index)

 print alltrue(X2 == X)

 ===================================================

 behavior seems inconsistent across architectures and numpy versions.

-- 
Ticket URL: <http://projects.scipy.org/scipy/numpy/ticket/424>
NumPy <http://projects.scipy.org/scipy/numpy>
The fundamental package needed for scientific computing with Python.


More information about the Numpy-tickets mailing list