[Numpy-svn] r2847 - in trunk/numpy/core: include/numpy src

numpy-svn at scipy.org numpy-svn at scipy.org
Wed Jul 19 11:55:49 EDT 2006


Author: oliphant
Date: 2006-07-19 10:55:43 -0500 (Wed, 19 Jul 2006)
New Revision: 2847

Modified:
   trunk/numpy/core/include/numpy/arrayobject.h
   trunk/numpy/core/src/arrayobject.c
Log:
Fix-up optimization for assignment.  Fix threading one more time.

Modified: trunk/numpy/core/include/numpy/arrayobject.h
===================================================================
--- trunk/numpy/core/include/numpy/arrayobject.h	2006-07-19 15:36:12 UTC (rev 2846)
+++ trunk/numpy/core/include/numpy/arrayobject.h	2006-07-19 15:55:43 UTC (rev 2847)
@@ -1292,6 +1292,7 @@
 
 #define PyTypeNum_ISOBJECT(type) ((type) == NPY_OBJECT)
 
+
 #define PyDataType_ISBOOL(obj) PyTypeNum_ISBOOL(_PyADt(obj))
 #define PyDataType_ISUNSIGNED(obj) PyTypeNum_ISUNSIGNED(((PyArray_Descr*)obj)->type_num)
 #define PyDataType_ISSIGNED(obj) PyTypeNum_ISSIGNED(((PyArray_Descr*)obj)->type_num)

Modified: trunk/numpy/core/src/arrayobject.c
===================================================================
--- trunk/numpy/core/src/arrayobject.c	2006-07-19 15:36:12 UTC (rev 2846)
+++ trunk/numpy/core/src/arrayobject.c	2006-07-19 15:55:43 UTC (rev 2847)
@@ -2783,7 +2783,8 @@
 		return -1;
 	}
 
-	if (PyInt_Check(index) || PyArray_IsScalar(index, Integer)) {
+	if (PyInt_Check(index) || PyArray_IsScalar(index, Integer) || 
+	    PyLong_Check(index)) {
 		intp value;
 		value = PyArray_PyIntAsIntp(index);
 		if (PyErr_Occurred())
@@ -2827,9 +2828,7 @@
         }
 
 	/* optimization for integer-tuple */
-	if ((PyInt_Check(index) || PyArray_IsScalar(index, Integer) ||	\
-	     PyLong_Check(index) ||					\
-	     (PyTuple_Check(index) && (PyTuple_GET_SIZE(index) == self->nd))) \
+	if (self->nd > 1 && (PyTuple_Check(index) && (PyTuple_GET_SIZE(index) == self->nd)) \
 	    && PyArray_IntpFromSequence(index, vals, self->nd) == self->nd) {
 		int i;
 		char *item;
@@ -7257,7 +7256,7 @@
 		memset(buffers[1], 0, N*selsize);
 
 #if NPY_ALLOW_THREADS 
-	if (!PyArray_ISEXTENDED(in) && !PyArray_ISEXTENDED(out)) {
+	if (PyArray_ISNUMBER(in) && PyArray_ISNUMBER(out)) {
 		NPY_BEGIN_THREADS		       
 			}
 #endif
@@ -7274,7 +7273,7 @@
 		PyArray_MultiIter_NEXT(multi);
 	}
 #if NPY_ALLOW_THREADS
-	if (!PyArray_ISEXTENDED(in) && !PyArray_ISEXTENDED(out)) {
+	if (PyArray_ISNUMBER(in) && PyArray_ISNUMBER(out)) {
 		NPY_END_THREADS		       
 			}
 #endif
@@ -7335,13 +7334,13 @@
 	if (simple) {
 
 #if NPY_ALLOW_THREADS
-		if (!PyArray_ISEXTENDED(mp) && !PyArray_ISEXTENDED(out)) {
+		if (PyArray_ISNUMBER(mp) && PyArray_ISNUMBER(out)) {
 			NPY_BEGIN_THREADS }
 #endif
 		castfunc(mp->data, out->data, mpsize, mp, out);
 
 #if NPY_ALLOW_THREADS
-		if (!PyArray_ISEXTENDED(mp) && !PyArray_ISEXTENDED(out)) {
+		if (PyArray_ISNUMBER(mp) && PyArray_ISNUMBER(out)) {
 			NPY_END_THREADS   }
 #endif
 		return 0;




More information about the Numpy-svn mailing list