[Numpy-svn] r5439 - trunk/numpy/core/blasdot

numpy-svn at scipy.org numpy-svn at scipy.org
Wed Jul 16 17:07:52 EDT 2008


Author: charris
Date: 2008-07-16 16:07:48 -0500 (Wed, 16 Jul 2008)
New Revision: 5439

Modified:
   trunk/numpy/core/blasdot/_dotblas.c
Log:
Coding style cleanups.


Modified: trunk/numpy/core/blasdot/_dotblas.c
===================================================================
--- trunk/numpy/core/blasdot/_dotblas.c	2008-07-16 21:01:31 UTC (rev 5438)
+++ trunk/numpy/core/blasdot/_dotblas.c	2008-07-16 21:07:48 UTC (rev 5439)
@@ -177,7 +177,7 @@
 
 
 /* This also makes sure that the data segment is aligned with
-   an itemsize address as well by returning one if not true. 
+   an itemsize address as well by returning one if not true.
 */
 static int
 _bad_strides(PyArrayObject *ap)
@@ -189,14 +189,18 @@
     if (((intp)(ap->data) % itemsize) != 0)
 	return 1;
     for (i=0; i<N; i++) {
-	if ((strides[i] < 0) || (strides[i] % itemsize) != 0) 
+	if ((strides[i] < 0) || (strides[i] % itemsize) != 0)
 	    return 1;
     }
 
-    return 0;  
+    return 0;
 }
 
-static char doc_matrixproduct[] = "dot(a,b)\nReturns the dot product of a and b for arrays of floating point types.\nLike the generic numpy equivalent the product sum is over\nthe last dimension of a and the second-to-last dimension of b.\nNB: The first argument is not conjugated.";
+static char doc_matrixproduct[] = \
+    "dot(a,b)\nReturns the dot product of a and b for arrays of " \
+    "floating point types.\nLike the generic numpy equivalent the " \
+    "product sum is over\nthe last dimension of a and the second-to-last "\
+    "dimension of b.\nNB: The first argument is not conjugated.";
 
 static PyObject *
 dotblas_matrixproduct(PyObject *dummy, PyObject *args)
@@ -217,7 +221,9 @@
     PyArray_Descr *dtype;
     MatrixShape ap1shape, ap2shape;
 
-    if (!PyArg_ParseTuple(args, "OO", &op1, &op2)) return NULL;
+    if (!PyArg_ParseTuple(args, "OO", &op1, &op2)) {
+        return NULL;
+    }
 
     /*
      * "Matrix product" using the BLAS.
@@ -235,17 +241,22 @@
 
     dtype = PyArray_DescrFromType(typenum);
     ap1 = (PyArrayObject *)PyArray_FromAny(op1, dtype, 0, 0, ALIGNED, NULL);
-    if (ap1 == NULL) return NULL;
+    if (ap1 == NULL) {
+        return NULL;
+    }
     Py_INCREF(dtype);
     ap2 = (PyArrayObject *)PyArray_FromAny(op2, dtype, 0, 0, ALIGNED, NULL);
-    if (ap2 == NULL) goto fail;
+    if (ap2 == NULL) {
+        goto fail;
+    }
 
 
     if ((ap1->nd > 2) || (ap2->nd > 2)) {
-	/* This function doesn't handle dimensions greater than 2 
-	   (or negative striding)  -- other
-	   than to ensure the dot function is altered
-	*/
+	/*
+         * This function doesn't handle dimensions greater than 2
+	 * (or negative striding)  -- other
+	 * than to ensure the dot function is altered
+	 */
 	if (!altered) {
 	    /* need to alter dot product */
 	    PyObject *tmp1, *tmp2;
@@ -265,13 +276,17 @@
 	    op1 = PyArray_NewCopy(ap1, PyArray_ANYORDER);
 	    Py_DECREF(ap1);
 	    ap1 = (PyArrayObject *)op1;
-	    if (ap1 == NULL) goto fail;
+	    if (ap1 == NULL) {
+                goto fail;
+            }
     }
     if (_bad_strides(ap2)) {
 	    op2 = PyArray_NewCopy(ap2, PyArray_ANYORDER);
 	    Py_DECREF(ap2);
 	    ap2 = (PyArrayObject *)op2;
-	    if (ap2 == NULL) goto fail;
+	    if (ap2 == NULL) {
+                goto fail;
+            }
     }
     ap1shape = _select_matrix_shape(ap1);
     ap2shape = _select_matrix_shape(ap2);
@@ -288,8 +303,12 @@
 	    ap2shape = _scalar;
 	}
 
-	if (ap1shape == _row) ap1stride = ap1->strides[1];
-	else if (ap1->nd > 0) ap1stride = ap1->strides[0];
+	if (ap1shape == _row) {
+            ap1stride = ap1->strides[1];
+        }
+	else if (ap1->nd > 0) {
+            ap1stride = ap1->strides[0];
+        }
 
  	if (ap1->nd == 0 || ap2->nd == 0) {
             intp *thisdims;
@@ -302,52 +321,64 @@
                 thisdims = ap1->dimensions;
             }
             l = 1;
-            for (j=0; j<nd; j++) {
+            for (j = 0; j < nd; j++) {
                 dimensions[j] = thisdims[j];
                 l *= dimensions[j];
             }
         }
         else {
-            l = oap1->dimensions[oap1->nd-1];
+            l = oap1->dimensions[oap1->nd - 1];
 
             if (oap2->dimensions[0] != l) {
                 PyErr_SetString(PyExc_ValueError, "matrices are not aligned");
                 goto fail;
             }
             nd = ap1->nd + ap2->nd - 2;
-            /* nd = 0 or 1 or 2 */
-            /* If nd == 0 do nothing ... */
+            /*
+             * nd = 0 or 1 or 2. If nd == 0 do nothing ...
+             */
             if (nd == 1) {
-                /* Either ap1->nd is 1 dim or ap2->nd is 1 dim
-                   and the other is 2-dim */
+                /*
+                 * Either ap1->nd is 1 dim or ap2->nd is 1 dim
+                 * and the other is 2-dim
+                 */
                 dimensions[0] = (oap1->nd == 2) ? oap1->dimensions[0] : oap2->dimensions[1];
                 l = dimensions[0];
-                /* Fix it so that dot(shape=(N,1), shape=(1,))
-                   and dot(shape=(1,), shape=(1,N)) both return
-                   an (N,) array (but use the fast scalar code)
-                */
+                /*
+                 * Fix it so that dot(shape=(N,1), shape=(1,))
+                 * and dot(shape=(1,), shape=(1,N)) both return
+                 * an (N,) array (but use the fast scalar code)
+                 */
             }
             else if (nd == 2) {
                 dimensions[0] = oap1->dimensions[0];
                 dimensions[1] = oap2->dimensions[1];
-		/* We need to make sure that dot(shape=(1,1), shape=(1,N))
-		   and dot(shape=(N,1),shape=(1,1)) uses
-		   scalar multiplication appropriately
-		*/
-		if (ap1shape == _row) l = dimensions[1];
-		else l = dimensions[0];
+		/*
+                 * We need to make sure that dot(shape=(1,1), shape=(1,N))
+		 * and dot(shape=(N,1),shape=(1,1)) uses
+		 * scalar multiplication appropriately
+		 */
+		if (ap1shape == _row) {
+                    l = dimensions[1];
+                }
+		else {
+                    l = dimensions[0];
+                }
             }
 	}
     }
-    else { /* (ap1->nd <= 2 && ap2->nd <= 2) */
-	/*  Both ap1 and ap2 are vectors or matrices */
-	l = ap1->dimensions[ap1->nd-1];
+    else {
+        /*
+         * (ap1->nd <= 2 && ap2->nd <= 2)
+	 * Both ap1 and ap2 are vectors or matrices
+         */
+	l = ap1->dimensions[ap1->nd - 1];
 
 	if (ap2->dimensions[0] != l) {
 	    PyErr_SetString(PyExc_ValueError, "matrices are not aligned");
 	    goto fail;
 	}
-	nd = ap1->nd+ap2->nd-2;
+	nd = ap1->nd + ap2->nd - 2;
 
 	if (nd == 1)
 	    dimensions[0] = (ap1->nd == 2) ? ap1->dimensions[0] : ap2->dimensions[1];
@@ -373,7 +404,9 @@
 				       (PyObject *)
 				       (prior2 > prior1 ? ap2 : ap1));
 
-    if (ret == NULL) goto fail;
+    if (ret == NULL) {
+        goto fail;
+    }
     numbytes = PyArray_NBYTES(ret);
     memset(ret->data, 0, numbytes);
     if (numbytes==0 || l == 0) {
@@ -384,15 +417,16 @@
 
 
     if (ap2shape == _scalar) {
-	/* Multiplication by a scalar -- Level 1 BLAS */
-	/* if ap1shape is a matrix and we are not contiguous, then we can't
-	   just blast through the entire array using a single
-	   striding factor */
-	NPY_BEGIN_ALLOW_THREADS
+	/*
+         * Multiplication by a scalar -- Level 1 BLAS
+	 * if ap1shape is a matrix and we are not contiguous, then we can't
+	 * just blast through the entire array using a single striding factor
+         */
+	NPY_BEGIN_ALLOW_THREADS;
 
 	if (typenum == PyArray_DOUBLE) {
 	    if (l == 1) {
-		*((double *)ret->data) = *((double *)ap2->data) * \
+		*((double *)ret->data) = *((double *)ap2->data) *
 		    *((double *)ap1->data);
 	    }
 	    else if (ap1shape != _matrix) {
@@ -403,6 +437,7 @@
 		int maxind, oind, i, a1s, rets;
 		char *ptr, *rptr;
 		double val;
+
 		maxind = (ap1->dimensions[0] >= ap1->dimensions[1] ? 0 : 1);
 		oind = 1-maxind;
 		ptr = ap1->data;
@@ -411,7 +446,7 @@
 		val = *((double *)ap2->data);
 		a1s = ap1->strides[maxind] / sizeof(double);
 		rets = ret->strides[maxind] / sizeof(double);
-		for (i=0; i < ap1->dimensions[oind]; i++) {
+		for (i = 0; i < ap1->dimensions[oind]; i++) {
 		    cblas_daxpy(l, val, (double *)ptr, a1s,
 				(double *)rptr, rets);
 		    ptr += ap1->strides[oind];
@@ -422,6 +457,7 @@
 	else if (typenum == PyArray_CDOUBLE) {
 	    if (l == 1) {
 		cdouble *ptr1, *ptr2, *res;
+
 		ptr1 = (cdouble *)ap2->data;
 		ptr2 = (cdouble *)ap1->data;
 		res = (cdouble *)ret->data;
@@ -436,6 +472,7 @@
 		int maxind, oind, i, a1s, rets;
 		char *ptr, *rptr;
 		double *pval;
+
 		maxind = (ap1->dimensions[0] >= ap1->dimensions[1] ? 0 : 1);
 		oind = 1-maxind;
 		ptr = ap1->data;
@@ -444,7 +481,7 @@
 		pval = (double *)ap2->data;
 		a1s = ap1->strides[maxind] / sizeof(cdouble);
 		rets = ret->strides[maxind] / sizeof(cdouble);
-		for (i=0; i < ap1->dimensions[oind]; i++) {
+		for (i = 0; i < ap1->dimensions[oind]; i++) {
 		    cblas_zaxpy(l, pval, (double *)ptr, a1s,
 				(double *)rptr, rets);
 		    ptr += ap1->strides[oind];
@@ -454,7 +491,7 @@
 	}
 	else if (typenum == PyArray_FLOAT) {
 	    if (l == 1) {
-		*((float *)ret->data) = *((float *)ap2->data) * \
+		*((float *)ret->data) = *((float *)ap2->data) *
 		    *((float *)ap1->data);
 	    }
 	    else if (ap1shape != _matrix) {
@@ -465,6 +502,7 @@
 		int maxind, oind, i, a1s, rets;
 		char *ptr, *rptr;
 		float val;
+
 		maxind = (ap1->dimensions[0] >= ap1->dimensions[1] ? 0 : 1);
 		oind = 1-maxind;
 		ptr = ap1->data;
@@ -473,7 +511,7 @@
 		val = *((float *)ap2->data);
 		a1s = ap1->strides[maxind] / sizeof(float);
 		rets = ret->strides[maxind] / sizeof(float);
-		for (i=0; i < ap1->dimensions[oind]; i++) {
+		for (i = 0; i < ap1->dimensions[oind]; i++) {
 		    cblas_saxpy(l, val, (float *)ptr, a1s,
 				(float *)rptr, rets);
 		    ptr += ap1->strides[oind];
@@ -484,6 +522,7 @@
 	else if (typenum == PyArray_CFLOAT) {
 	    if (l == 1) {
 		cfloat *ptr1, *ptr2, *res;
+
 		ptr1 = (cfloat *)ap2->data;
 		ptr2 = (cfloat *)ap1->data;
 		res = (cfloat *)ret->data;
@@ -498,6 +537,7 @@
 		int maxind, oind, i, a1s, rets;
 		char *ptr, *rptr;
 		float *pval;
+
 		maxind = (ap1->dimensions[0] >= ap1->dimensions[1] ? 0 : 1);
 		oind = 1-maxind;
 		ptr = ap1->data;
@@ -506,7 +546,7 @@
 		pval = (float *)ap2->data;
 		a1s = ap1->strides[maxind] / sizeof(cfloat);
 		rets = ret->strides[maxind] / sizeof(cfloat);
-		for (i=0; i < ap1->dimensions[oind]; i++) {
+		for (i = 0; i < ap1->dimensions[oind]; i++) {
 		    cblas_caxpy(l, pval, (float *)ptr, a1s,
 				(float *)rptr, rets);
 		    ptr += ap1->strides[oind];
@@ -514,11 +554,11 @@
 		}
 	    }
 	}
-	NPY_END_ALLOW_THREADS
+	NPY_END_ALLOW_THREADS;
     }
     else if ((ap2shape == _column) && (ap1shape != _matrix)) {
 	int ap1s, ap2s;
-	NPY_BEGIN_ALLOW_THREADS
+	NPY_BEGIN_ALLOW_THREADS;
 
 	ap2s = ap2->strides[0] / ap2->descr->elsize;
 	if (ap1shape == _row) {
@@ -547,7 +587,7 @@
 	    cblas_cdotu_sub(l, (float *)ap1->data, ap1s,
 			    (float *)ap2->data, ap2s, (float *)ret->data);
 	}
-	NPY_END_ALLOW_THREADS
+	NPY_END_ALLOW_THREADS;
     }
     else if (ap1shape == _matrix && ap2shape != _matrix) {
 	/* Matrix vector multiplication -- Level 2 BLAS */
@@ -560,7 +600,9 @@
 	    new = PyArray_Copy(ap1);
 	    Py_DECREF(ap1);
 	    ap1 = (PyArrayObject *)new;
-	    if (new == NULL) goto fail;
+	    if (new == NULL) {
+                goto fail;
+            }
 	}
 	NPY_BEGIN_ALLOW_THREADS
 	if (PyArray_ISCONTIGUOUS(ap1)) {
@@ -598,7 +640,7 @@
 			(float *)ap2->data, ap2s, zeroF,
 			(float *)ret->data, 1);
 	}
-	NPY_END_ALLOW_THREADS
+	NPY_END_ALLOW_THREADS;
     }
     else if (ap1shape != _matrix && ap2shape == _matrix) {
 	/* Vector matrix multiplication -- Level 2 BLAS */
@@ -610,7 +652,9 @@
 	    new = PyArray_Copy(ap2);
 	    Py_DECREF(ap2);
 	    ap2 = (PyArrayObject *)new;
-	    if (new == NULL) goto fail;
+	    if (new == NULL) {
+                goto fail;
+            }
 	}
 	NPY_BEGIN_ALLOW_THREADS
 	if (PyArray_ISCONTIGUOUS(ap2)) {
@@ -651,36 +695,44 @@
 			oneF, (float *)ap2->data, lda,
 			(float *)ap1->data, ap1s, zeroF, (float *)ret->data, 1);
 	}
-	NPY_END_ALLOW_THREADS
+	NPY_END_ALLOW_THREADS;
     }
-    else { /* (ap1->nd == 2 && ap2->nd == 2) */
-	/* Matrix matrix multiplication -- Level 3 BLAS */
-	/*  L x M  multiplied by M x N */
+    else {
+        /*
+         * (ap1->nd == 2 && ap2->nd == 2)
+	 * Matrix matrix multiplication -- Level 3 BLAS
+	 *  L x M  multiplied by M x N
+         */
 	enum CBLAS_ORDER Order;
 	enum CBLAS_TRANSPOSE Trans1, Trans2;
 	int M, N, L;
 
 	/* Optimization possible: */
-	/* We may be able to handle single-segment arrays here
-	   using appropriate values of Order, Trans1, and Trans2.
-	*/
+	/*
+         * We may be able to handle single-segment arrays here
+	 * using appropriate values of Order, Trans1, and Trans2.
+	 */
 
  	if (!PyArray_ISCONTIGUOUS(ap2)) {
-	    PyObject *new;
-	    new = PyArray_Copy(ap2);
+	    PyObject *new = PyArray_Copy(ap2);
+
 	    Py_DECREF(ap2);
 	    ap2 = (PyArrayObject *)new;
-	    if (new == NULL) goto fail;
+	    if (new == NULL) {
+                goto fail;
+            }
 	}
 	if (!PyArray_ISCONTIGUOUS(ap1)) {
-	    PyObject *new;
-	    new = PyArray_Copy(ap1);
+	    PyObject *new = PyArray_Copy(ap1);
+
 	    Py_DECREF(ap1);
 	    ap1 = (PyArrayObject *)new;
-	    if (new == NULL) goto fail;
+	    if (new == NULL) {
+                goto fail;
+            }
 	}
 
-	NPY_BEGIN_ALLOW_THREADS
+	NPY_BEGIN_ALLOW_THREADS;
 
 	Order = CblasRowMajor;
 	Trans1 = CblasNoTrans;
@@ -719,7 +771,7 @@
 			(float *)ap2->data, ldb,
 			zeroF, (float *)ret->data, ldc);
 	}
-	NPY_END_ALLOW_THREADS
+	NPY_END_ALLOW_THREADS;
     }
 
 
@@ -735,7 +787,11 @@
 }
 
 
-static char doc_innerproduct[] = "innerproduct(a,b)\nReturns the inner product of a and b for arrays of floating point types.\nLike the generic NumPy equivalent the product sum is over\nthe last dimension of a and b.\nNB: The first argument is not conjugated.";
+static char doc_innerproduct[] = \
+    "innerproduct(a,b)\nReturns the inner product of a and b for arrays of "\
+    "floating point types.\nLike the generic NumPy equivalent the product "\
+    "sum is over\nthe last dimension of a and b.\nNB: The first argument is "\
+    "not conjugated.";
 
 static PyObject *
 dotblas_innerproduct(PyObject *dummy, PyObject *args)




More information about the Numpy-svn mailing list