[Numpy-discussion] searchsorted bug
James Philbin
philbinj at gmail.com
Thu Jan 31 12:49:11 EST 2008
Well, i've digged around in the source code and here is a patch which
makes it work for the case I wanted:
--- multiarraymodule.c.old 2008-01-31 17:42:32.000000000 +0000
+++ multiarraymodule.c 2008-01-31 17:43:43.000000000 +0000
@@ -2967,7 +2967,10 @@
char *parr = arr->data;
char *pkey = key->data;
intp *pret = (intp *)ret->data;
- int elsize = arr->descr->elsize;
+
+ int elsize1 = arr->descr->elsize;
+ int elsize2 = key->descr->elsize;
+
intp i;
for(i = 0; i < nkeys; ++i) {
@@ -2975,14 +2978,14 @@
intp imax = nelts;
while (imin < imax) {
intp imid = imin + ((imax - imin) >> 2);
- if (compare(parr + elsize*imid, pkey, key) < 0)
+ if (compare(parr + elsize1*imid, pkey, key) < 0)
imin = imid + 1;
else
imax = imid;
}
*pret = imin;
pret += 1;
- pkey += elsize;
+ pkey += elsize2;
}
}
@@ -3008,7 +3011,10 @@
char *parr = arr->data;
char *pkey = key->data;
intp *pret = (intp *)ret->data;
- int elsize = arr->descr->elsize;
+
+ int elsize1 = arr->descr->elsize;
+ int elsize2 = key->descr->elsize;
+
intp i;
for(i = 0; i < nkeys; ++i) {
@@ -3016,14 +3022,14 @@
intp imax = nelts;
while (imin < imax) {
intp imid = imin + ((imax - imin) >> 2);
- if (compare(parr + elsize*imid, pkey, key) <= 0)
+ if (compare(parr + elsize1*imid, pkey, key) <= 0)
imin = imid + 1;
else
imax = imid;
}
*pret = imin;
pret += 1;
- pkey += elsize;
+ pkey += elsize2;
}
}
James
More information about the NumPy-Discussion
mailing list