[Numpy-svn] r6476 - in branches/coremath: . numpy numpy/core/src numpy/core/tests numpy/distutils/fcompiler numpy/ma numpy/ma/tests

numpy-svn at scipy.org numpy-svn at scipy.org
Thu Feb 26 01:26:07 EST 2009


Author: cdavid
Date: 2009-02-26 00:24:22 -0600 (Thu, 26 Feb 2009)
New Revision: 6476

Modified:
   branches/coremath/
   branches/coremath/numpy/add_newdocs.py
   branches/coremath/numpy/core/src/arraytypes.inc.src
   branches/coremath/numpy/core/src/scalartypes.inc.src
   branches/coremath/numpy/core/tests/test_multiarray.py
   branches/coremath/numpy/core/tests/test_regression.py
   branches/coremath/numpy/core/tests/test_scalarmath.py
   branches/coremath/numpy/core/tests/test_unicode.py
   branches/coremath/numpy/distutils/fcompiler/compaq.py
   branches/coremath/numpy/ma/core.py
   branches/coremath/numpy/ma/tests/test_core.py
Log:
Merged revisions 6463-6466,6469,6472-6475 via svnmerge from 
http://svn.scipy.org/svn/numpy/trunk

........
  r6463 | pierregm | 2009-02-24 02:33:11 +0900 (Tue, 24 Feb 2009) | 1 line
  
  * MaskedArray.__setstate__ : fixed for structured array
........
  r6464 | charris | 2009-02-24 04:02:43 +0900 (Tue, 24 Feb 2009) | 4 lines
  
  Coding style cleanups. Start on arraytypes.inc.src.
  I'm a bit hesitant to commit this as tests are lacking
  for the functionality, but I want the changes
  somewhere central.
........
  r6465 | matthew.brett at gmail.com | 2009-02-25 05:53:10 +0900 (Wed, 25 Feb 2009) | 1 line
  
  Added docstring for isbuiltin
........
  r6466 | oliphant | 2009-02-25 14:15:47 +0900 (Wed, 25 Feb 2009) | 1 line
  
  Fix void-scalar element access when data-type contains titles (meta-data).
........
  r6469 | oliphant | 2009-02-25 22:45:30 +0900 (Wed, 25 Feb 2009) | 1 line
  
  Add Error checking.
........
  r6472 | charris | 2009-02-26 01:51:29 +0900 (Thu, 26 Feb 2009) | 1 line
  
  Fix coding style. Fix test_void_scalar_with_titles.
........
  r6473 | cdavid | 2009-02-26 03:27:19 +0900 (Thu, 26 Feb 2009) | 1 line
  
  Trap another kind of exception for MSVC9 in compaq fcompiler.
........
  r6474 | cdavid | 2009-02-26 03:56:15 +0900 (Thu, 26 Feb 2009) | 1 line
  
  Mark mingw-w64 crashing tests as known failures.
........
  r6475 | cdavid | 2009-02-26 04:04:59 +0900 (Thu, 26 Feb 2009) | 1 line
  
  Tag more mingw-w64 failures as such.
........



Property changes on: branches/coremath
___________________________________________________________________
Name: svnmerge-integrated
   - /branches/distutils-revamp:1-2752 /branches/dynamic_cpu_configuration:1-6101 /branches/fix_float_format:1-6359 /branches/multicore:1-3687 /branches/numpy-mingw-w64:1-6150 /branches/visualstudio_manifest:1-6077 /trunk:1-6461
   + /branches/distutils-revamp:1-2752 /branches/dynamic_cpu_configuration:1-6101 /branches/fix_float_format:1-6359 /branches/multicore:1-3687 /branches/numpy-mingw-w64:1-6150 /branches/visualstudio_manifest:1-6077 /trunk:1-6475

Modified: branches/coremath/numpy/add_newdocs.py
===================================================================
--- branches/coremath/numpy/add_newdocs.py	2009-02-25 19:04:59 UTC (rev 6475)
+++ branches/coremath/numpy/add_newdocs.py	2009-02-26 06:24:22 UTC (rev 6476)
@@ -2937,7 +2937,7 @@
 
 add_newdoc('numpy.core.multiarray', 'dtype', ('byteorder',
     '''
-    dt.byteorder
+    byteorder
 
     String giving byteorder of dtype
 
@@ -2995,6 +2995,33 @@
 
 add_newdoc('numpy.core.multiarray', 'dtype', ('isbuiltin',
     """
+    isbuiltin
+
+    Value identifying if numpy dtype is a numpy builtin type
+
+    Read-only
+
+    Returns
+    -------
+    val : {0,1,2}
+       0 if this is a structured array type, with fields
+       1 if this is a dtype compiled into numpy (such as ints, floats etc)
+       2 if the dtype is for a user-defined numpy type
+         A user-defined type uses the numpy C-API machinery to extend
+         numpy to handle a new array type.  See the Guide to Numpy for
+         details.
+
+    Examples
+    --------
+    >>> dt = np.dtype('i2')
+    >>> dt.isbuiltin
+    1
+    >>> dt = np.dtype('f8')
+    >>> dt.isbuiltin
+    1
+    >>> dt = np.dtype([('field1', 'f8')])
+    >>> dt.isbuiltin
+    0
     """))
 
 add_newdoc('numpy.core.multiarray', 'dtype', ('isnative',

Modified: branches/coremath/numpy/core/src/arraytypes.inc.src
===================================================================
--- branches/coremath/numpy/core/src/arraytypes.inc.src	2009-02-25 19:04:59 UTC (rev 6475)
+++ branches/coremath/numpy/core/src/arraytypes.inc.src	2009-02-26 06:24:22 UTC (rev 6476)
@@ -21,10 +21,9 @@
 
 
 /**begin repeat
-#type=long,longlong#
-#Type=Long,LongLong#
-*/
-
+ * #type = long, longlong#
+ * #Type = Long, LongLong#
+ */
 static @type@
 MyPyLong_As at Type@ (PyObject *obj)
 {
@@ -39,7 +38,6 @@
     return ret;
 }
 
-
 static u at type@
 MyPyLong_AsUnsigned at Type@ (PyObject *obj)
 {
@@ -64,15 +62,21 @@
 /****************** getitem and setitem **********************/
 
 /**begin repeat
-
-#TYP=BOOL,BYTE,UBYTE,SHORT,USHORT,INT,LONG,UINT,ULONG,LONGLONG,ULONGLONG,FLOAT,DOUBLE#
-#func1=PyBool_FromLong, PyInt_FromLong*6, PyLong_FromUnsignedLong*2, PyLong_FromLongLong, PyLong_FromUnsignedLongLong, PyFloat_FromDouble*2#
-#func2=PyObject_IsTrue, MyPyLong_AsLong*6, MyPyLong_AsUnsignedLong*2, MyPyLong_AsLongLong, MyPyLong_AsUnsignedLongLong, MyPyFloat_AsDouble*2#
-#typ=Bool, byte, ubyte, short, ushort, int, long, uint, ulong, longlong, ulonglong, float, double#
-#typ1=long*7, ulong*2, longlong, ulonglong, float, double#
-#kind=Bool, Byte, UByte, Short, UShort, Int, Long, UInt, ULong, LongLong, ULongLong, Float, Double#
+ *
+ * #TYP = BOOL, BYTE, UBYTE, SHORT, USHORT, INT, LONG, UINT, ULONG,
+ *        LONGLONG, ULONGLONG, FLOAT, DOUBLE#
+ * #func1 = PyBool_FromLong, PyInt_FromLong*6, PyLong_FromUnsignedLong*2,
+ *          PyLong_FromLongLong, PyLong_FromUnsignedLongLong,
+ *          PyFloat_FromDouble*2#
+ * #func2 = PyObject_IsTrue, MyPyLong_AsLong*6, MyPyLong_AsUnsignedLong*2,
+ *          MyPyLong_AsLongLong, MyPyLong_AsUnsignedLongLong,
+ *          MyPyFloat_AsDouble*2#
+ * #typ = Bool, byte, ubyte, short, ushort, int, long, uint, ulong,
+ *        longlong, ulonglong, float, double#
+ * #typ1 = long*7, ulong*2, longlong, ulonglong, float, double#
+ * #kind = Bool, Byte, UByte, Short, UShort, Int, Long, UInt, ULong,
+ *         LongLong, ULongLong, Float, Double#
 */
-
 static PyObject *
 @TYP at _getitem(char *ip, PyArrayObject *ap) {
     @typ@ t1;
@@ -82,8 +86,7 @@
         return @func1@((@typ1@)t1);
     }
     else {
-        ap->descr->f->copyswap(&t1, ip, !PyArray_ISNOTSWAPPED(ap),
-                ap);
+        ap->descr->f->copyswap(&t1, ip, !PyArray_ISNOTSWAPPED(ap), ap);
         return @func1@((@typ1@)t1);
     }
 }
@@ -92,7 +95,6 @@
 @TYP at _setitem(PyObject *op, char *ov, PyArrayObject *ap) {
     @typ@ temp;  /* ensures alignment */
 
-
     if (PyArray_IsScalar(op, @kind@)) {
         temp = ((Py at kind@ScalarObject *)op)->obval;
     }
@@ -113,19 +115,16 @@
         ap->descr->f->copyswap(ov, &temp, !PyArray_ISNOTSWAPPED(ap),
                 ap);
     }
-
     return 0;
 }
 
 /**end repeat**/
 
-
 /**begin repeat
-
-#TYP=CFLOAT,CDOUBLE#
-#typ=float, double#
-*/
-
+ *
+ * #TYP = CFLOAT, CDOUBLE#
+ * #typ = float, double#
+ */
 static PyObject *
 @TYP at _getitem(char *ip, PyArrayObject *ap) {
     @typ@ t1, t2;
@@ -142,14 +141,15 @@
         return PyComplex_FromDoubles((double)t1, (double)t2);
     }
 }
+
 /**end repeat**/
 
 /**begin repeat
-
-#TYP=CFLOAT, CDOUBLE, CLONGDOUBLE#
-#typ=float, double, longdouble#
-#kind=CFloat, CDouble, CLongDouble#
-*/
+ *
+ * #TYP = CFLOAT, CDOUBLE, CLONGDOUBLE#
+ * #typ = float, double, longdouble#
+ * #kind = CFloat, CDouble, CLongDouble#
+ */
 static int
 @TYP at _setitem(PyObject *op, char *ov, PyArrayObject *ap)
 {
@@ -159,8 +159,8 @@
     int rsize;
 
     if (!(PyArray_IsScalar(op, @kind@))) {
-        if (PyArray_Check(op) && (PyArray_NDIM(op)==0)) {
-            op2 = ((PyArrayObject *)op)->descr->f->getitem     \
+        if (PyArray_Check(op) && (PyArray_NDIM(op) == 0)) {
+            op2 = ((PyArrayObject *)op)->descr->f->getitem
                   (((PyArrayObject *)op)->data,
                    (PyArrayObject *)op);
         }
@@ -174,22 +174,24 @@
             oop = PyComplex_AsCComplex (op2);
         }
         Py_DECREF(op2);
-        if (PyErr_Occurred()) return -1;
+        if (PyErr_Occurred()) {
+            return -1;
+        }
         temp.real = (@typ@) oop.real;
         temp.imag = (@typ@) oop.imag;
     }
     else {
         temp = ((Py at kind@ScalarObject *)op)->obval;
     }
-
     memcpy(ov, &temp, ap->descr->elsize);
-    if (!PyArray_ISNOTSWAPPED(ap))
+    if (!PyArray_ISNOTSWAPPED(ap)) {
         byte_swap_vector(ov, 2, sizeof(@typ@));
-
+    }
     rsize = sizeof(@typ@);
     copy_and_swap(ov, &temp, rsize, 2, rsize, !PyArray_ISNOTSWAPPED(ap));
     return 0;
 }
+
 /**end repeat**/
 
 static PyObject *
@@ -208,9 +210,12 @@
     else {
         temp = (longdouble) MyPyFloat_AsDouble(op);
     }
-    if (PyErr_Occurred()) return -1;
-    if (ap == NULL || PyArray_ISBEHAVED(ap))
+    if (PyErr_Occurred()) {
+        return -1;
+    }
+    if (ap == NULL || PyArray_ISBEHAVED(ap)) {
         *((longdouble *)ov)=temp;
+    }
     else {
         copy_and_swap(ov, &temp, ap->descr->elsize, 1, 0,
                 !PyArray_ISNOTSWAPPED(ap));
@@ -297,8 +302,12 @@
         return -1;
     }
     /* Sequence_Size might have returned an error */
-    if (PyErr_Occurred()) PyErr_Clear();
-    if ((temp=PyObject_Unicode(op)) == NULL) return -1;
+    if (PyErr_Occurred()) {
+        PyErr_Clear();
+    }
+    if ((temp=PyObject_Unicode(op)) == NULL) {
+        return -1;
+    }
     ptr = PyUnicode_AS_UNICODE(temp);
     if ((ptr == NULL) || (PyErr_Occurred())) {
         Py_DECREF(temp);
@@ -317,7 +326,9 @@
             return -1;
         }
     }
-    else buffer = ov;
+    else {
+        buffer = ov;
+    }
     datalen = PyUCS2Buffer_AsUCS4(ptr, (PyArray_UCS4 *)buffer,
             datalen >> 1,
             ap->descr->elsize >> 2);
@@ -331,16 +342,18 @@
     if (ap->descr->elsize > datalen) {
         memset(ov + datalen, 0, (ap->descr->elsize - datalen));
     }
-
-    if (!PyArray_ISNOTSWAPPED(ap))
+    if (!PyArray_ISNOTSWAPPED(ap)) {
         byte_swap_vector(ov, ap->descr->elsize >> 2, 4);
+    }
     Py_DECREF(temp);
     return 0;
 }
 
-/* STRING -- can handle both NULL-terminated and not NULL-terminated cases
-             will truncate all ending NULLs in returned string.
-*/
+/* STRING
+ *
+ * can handle both NULL-terminated and not NULL-terminated cases
+ * will truncate all ending NULLs in returned string.
+ */
 static PyObject *
 STRING_getitem(char *ip, PyArrayObject *ap)
 {
@@ -348,8 +361,10 @@
     char *ptr;
     int size = ap->descr->elsize;
 
-    ptr = ip + size-1;
-    while (*ptr-- == '\0' && size > 0) size--;
+    ptr = ip + size - 1;
+    while (*ptr-- == '\0' && size > 0) {
+        size--;
+    }
     return PyString_FromStringAndSize(ip,size);
 }
 
@@ -358,7 +373,7 @@
 {
     char *ptr;
     Py_ssize_t len;
-    PyObject *temp=NULL;
+    PyObject *temp = NULL;
 
     if (!PyString_Check(op) && !PyUnicode_Check(op) &&
             PySequence_Check(op) && PySequence_Size(op) > 0) {
@@ -367,17 +382,21 @@
         return -1;
     }
     /* Sequence_Size might have returned an error */
-    if (PyErr_Occurred()) PyErr_Clear();
-    if ((temp = PyObject_Str(op)) == NULL) return -1;
-
+    if (PyErr_Occurred()) {
+        PyErr_Clear();
+    }
+    if ((temp = PyObject_Str(op)) == NULL) {
+        return -1;
+    }
     if (PyString_AsStringAndSize(temp, &ptr, &len) == -1) {
         Py_DECREF(temp);
         return -1;
     }
     memcpy(ov, ptr, MIN(ap->descr->elsize,len));
-    /* If string lenth is smaller than room in array
-       Then fill the rest of the element size
-       with NULL */
+    /*
+     * If string lenth is smaller than room in array
+     * Then fill the rest of the element size with NULL
+     */
     if (ap->descr->elsize > len) {
         memset(ov + len, 0, (ap->descr->elsize - len));
     }
@@ -429,7 +448,7 @@
 static PyObject *
 VOID_getitem(char *ip, PyArrayObject *ap)
 {
-    PyObject *u=NULL;
+    PyObject *u = NULL;
     PyArray_Descr* descr;
     int itemsize;
 
@@ -446,29 +465,30 @@
 
         /* get the names from the fields dictionary*/
         names = descr->names;
-        if (!names) goto finish;
+        if (!names) {
+            goto finish;
+        }
         n = PyTuple_GET_SIZE(names);
         ret = PyTuple_New(n);
         savedflags = ap->flags;
-        for (i=0; i<n; i++) {
+        for (i = 0; i < n; i++) {
             key = PyTuple_GET_ITEM(names, i);
             tup = PyDict_GetItem(descr->fields, key);
-            if (!PyArg_ParseTuple(tup, "Oi|O", &new, &offset,
-                        &title)) {
+            if (!PyArg_ParseTuple(tup, "Oi|O", &new, &offset, &title)) {
                 Py_DECREF(ret);
                 ap->descr = descr;
                 return NULL;
             }
             ap->descr = new;
             /* update alignment based on offset */
-            if ((new->alignment > 1) &&                     \
-                    ((((intp)(ip+offset)) % new->alignment) != 0))
+            if ((new->alignment > 1)
+                    && ((((intp)(ip+offset)) % new->alignment) != 0)) {
                 ap->flags &= ~ALIGNED;
-            else
+            }
+            else {
                 ap->flags |= ALIGNED;
-
-            PyTuple_SET_ITEM(ret, i,                        \
-                    new->f->getitem(ip+offset, ap));
+            }
+            PyTuple_SET_ITEM(ret, i, new->f->getitem(ip+offset, ap));
             ap->flags = savedflags;
         }
         ap->descr = descr;
@@ -477,10 +497,10 @@
 
     if (descr->subarray) {
         /* return an array of the basic type */
-        PyArray_Dims shape={NULL,-1};
+        PyArray_Dims shape = {NULL, -1};
         PyObject *ret;
-        if (!(PyArray_IntpConverter(descr->subarray->shape,
-                        &shape))) {
+
+        if (!(PyArray_IntpConverter(descr->subarray->shape, &shape))) {
             PyDimMem_FREE(shape.ptr);
             PyErr_SetString(PyExc_ValueError,
                     "invalid shape in fixed-type tuple.");
@@ -488,11 +508,12 @@
         }
         Py_INCREF(descr->subarray->base);
         ret = PyArray_NewFromDescr(&PyArray_Type,
-                descr->subarray->base,
-                shape.len, shape.ptr,
+                descr->subarray->base, shape.len, shape.ptr,
                 NULL, ip, ap->flags, NULL);
         PyDimMem_FREE(shape.ptr);
-        if (!ret) return NULL;
+        if (!ret) {
+            return NULL;
+        }
         PyArray_BASE(ret) = (PyObject *)ap;
         Py_INCREF(ap);
         PyArray_UpdateFlags((PyArrayObject *)ret, UPDATE_ALL);
@@ -500,23 +521,27 @@
     }
 
 finish:
-    if (PyDataType_FLAGCHK(descr, NPY_ITEM_HASOBJECT) ||
-            PyDataType_FLAGCHK(descr, NPY_ITEM_IS_POINTER)) {
+    if (PyDataType_FLAGCHK(descr, NPY_ITEM_HASOBJECT)
+            || PyDataType_FLAGCHK(descr, NPY_ITEM_IS_POINTER)) {
         PyErr_SetString(PyExc_ValueError,
                 "tried to get void-array with object"
                 " members as buffer.");
         return NULL;
     }
-
-    itemsize=ap->descr->elsize;
-    if (PyArray_ISWRITEABLE(ap))
+    itemsize = ap->descr->elsize;
+    if (PyArray_ISWRITEABLE(ap)) {
         u = PyBuffer_FromReadWriteMemory(ip, itemsize);
-    else
+    }
+    else {
         u = PyBuffer_FromMemory(ip, itemsize);
-    if (u==NULL) goto fail;
-
-    /* default is to return buffer object pointing to current item */
-    /*  a view of it */
+    }
+    if (u == NULL) {
+        goto fail;
+    }
+    /*
+     * default is to return buffer object pointing to
+     * current item a view of it
+     */
     return u;
 
 fail:
@@ -543,6 +568,7 @@
         PyArray_Descr *new;
         int offset;
         int savedflags;
+
         res = -1;
         /* get the names from the fields dictionary*/
         names = descr->names;
@@ -554,26 +580,27 @@
             return -1;
         }
         savedflags = ap->flags;
-        for (i=0; i<n; i++) {
+        for (i = 0; i < n; i++) {
             key = PyTuple_GET_ITEM(names, i);
             tup = PyDict_GetItem(descr->fields, key);
-            if (!PyArg_ParseTuple(tup, "Oi|O", &new, &offset,
-                        &title)) {
+            if (!PyArg_ParseTuple(tup, "Oi|O", &new, &offset, &title)) {
                 ap->descr = descr;
                 return -1;
             }
             ap->descr = new;
             /* remember to update alignment flags */
-            if ((new->alignment > 1) &&                     \
-                    ((((intp)(ip+offset)) % new->alignment) != 0))
+            if ((new->alignment > 1)
+                    && ((((intp)(ip+offset)) % new->alignment) != 0)) {
                 ap->flags &= ~ALIGNED;
-            else
+            }
+            else {
                 ap->flags |= ALIGNED;
-
-            res = new->f->setitem(PyTuple_GET_ITEM(op, i),
-                    ip+offset, ap);
+            }
+            res = new->f->setitem(PyTuple_GET_ITEM(op, i), ip+offset, ap);
             ap->flags = savedflags;
-            if (res < 0) break;
+            if (res < 0) {
+                break;
+            }
         }
         ap->descr = descr;
         return res;
@@ -581,10 +608,9 @@
 
     if (descr->subarray) {
         /* copy into an array of the same basic type */
-        PyArray_Dims shape={NULL,-1};
+        PyArray_Dims shape = {NULL, -1};
         PyObject *ret;
-        if (!(PyArray_IntpConverter(descr->subarray->shape,
-                        &shape))) {
+        if (!(PyArray_IntpConverter(descr->subarray->shape, &shape))) {
             PyDimMem_FREE(shape.ptr);
             PyErr_SetString(PyExc_ValueError,
                     "invalid shape in fixed-type tuple.");
@@ -592,11 +618,12 @@
         }
         Py_INCREF(descr->subarray->base);
         ret = PyArray_NewFromDescr(&PyArray_Type,
-                descr->subarray->base,
-                shape.len, shape.ptr,
+                descr->subarray->base, shape.len, shape.ptr,
                 NULL, ip, ap->flags, NULL);
         PyDimMem_FREE(shape.ptr);
-        if (!ret) return -1;
+        if (!ret) {
+            return -1;
+        }
         PyArray_BASE(ret) = (PyObject *)ap;
         Py_INCREF(ap);
         PyArray_UpdateFlags((PyArrayObject *)ret, UPDATE_ALL);
@@ -609,15 +636,17 @@
     {
         const void *buffer;
         Py_ssize_t buflen;
-        if (PyDataType_FLAGCHK(descr, NPY_ITEM_HASOBJECT) ||
-                PyDataType_FLAGCHK(descr, NPY_ITEM_IS_POINTER)) {
+        if (PyDataType_FLAGCHK(descr, NPY_ITEM_HASOBJECT)
+                || PyDataType_FLAGCHK(descr, NPY_ITEM_IS_POINTER)) {
             PyErr_SetString(PyExc_ValueError,
                     "tried to set void-array with object"
                     " members using buffer.");
             return -1;
         }
         res = PyObject_AsReadBuffer(op, &buffer, &buflen);
-        if (res == -1) goto fail;
+        if (res == -1) {
+            goto fail;
+        }
         memcpy(ip, buffer, NPY_MIN(buflen, itemsize));
         if (itemsize > buflen) {
             memset(ip+buflen, 0, (itemsize-buflen));
@@ -636,29 +665,58 @@
 
 
 /**begin repeat
-#to=(BYTE,UBYTE,SHORT,USHORT,INT,UINT,LONG,ULONG,LONGLONG,ULONGLONG,FLOAT,DOUBLE,LONGDOUBLE)*16#
-#from=BYTE*13,UBYTE*13,SHORT*13,USHORT*13,INT*13,UINT*13,LONG*13,ULONG*13,LONGLONG*13,ULONGLONG*13,FLOAT*13,DOUBLE*13,LONGDOUBLE*13,CFLOAT*13,CDOUBLE*13,CLONGDOUBLE*13#
-#totyp=(byte, ubyte, short, ushort, int, uint, long, ulong, longlong, ulonglong, float, double, longdouble)*16#
-#fromtyp=byte*13, ubyte*13, short*13, ushort*13, int*13, uint*13, long*13, ulong*13, longlong*13, ulonglong*13, float*13, double*13, longdouble*13, float*13, double*13, longdouble*13#
-#incr= (ip++)*169,(ip+=2)*39#
+ *
+ * #TOTYPE = BYTE, UBYTE, SHORT, USHORT, INT, UINT, LONG, ULONG,
+ *           LONGLONG, ULONGLONG, FLOAT, DOUBLE, LONGDOUBLE#
+ * #totype = byte, ubyte, short, ushort, int, uint, long, ulong,
+ *           longlong, ulonglong, float, double, longdouble#
 */
+
+/**begin repeat1
+ *
+ * #FROMTYPE = BYTE, UBYTE, SHORT, USHORT, INT, UINT, LONG, ULONG,
+ *             LONGLONG, ULONGLONG, FLOAT, DOUBLE, LONGDOUBLE#
+ * #fromtype = byte, ubyte, short, ushort, int, uint, long, ulong,
+ *             longlong, ulonglong, float, double, longdouble#
+ */
 static void
- at from@_to_ at to@(register @fromtyp@ *ip, register @totyp@ *op, register intp n,
+ at FROMTYPE@_to_ at TOTYPE@(@fromtype@ *ip, @totype@ *op, intp n,
                PyArrayObject *NPY_UNUSED(aip), PyArrayObject *NPY_UNUSED(aop))
 {
     while (n--) {
-        *op++ = (@totyp@)*ip;
-        @incr@;
+        *op++ = (@totype@)*ip++;
     }
 }
+/**end repeat1**/
+
+/**begin repeat1
+ *
+ * #FROMTYPE = CFLOAT, CDOUBLE, CLONGDOUBLE#
+ * #fromtype = float, double, longdouble#
+ */
+static void
+ at FROMTYPE@_to_ at TOTYPE@(@fromtype@ *ip, @totype@ *op, intp n,
+               PyArrayObject *NPY_UNUSED(aip), PyArrayObject *NPY_UNUSED(aop))
+{
+    while (n--) {
+        *op++ = (@totype@)*ip;
+        ip += 2;
+    }
+}
+/**end repeat1**/
+
 /**end repeat**/
 
+
 /**begin repeat
-#from=BOOL,BYTE,UBYTE,SHORT,USHORT,INT,UINT,LONG,ULONG,LONGLONG,ULONGLONG,FLOAT,DOUBLE,LONGDOUBLE#
-#fromtyp=Bool, byte, ubyte, short, ushort, int, uint, long, ulong, longlong, ulonglong, float, double, longdouble#
+ *
+ * #FROMTYPE = BOOL, BYTE, UBYTE, SHORT, USHORT, INT, UINT, LONG, ULONG,
+ *             LONGLONG, ULONGLONG, FLOAT, DOUBLE, LONGDOUBLE#
+ * #fromtype = Bool, byte, ubyte, short, ushort, int, uint, long, ulong,
+ *             longlong, ulonglong, float, double, longdouble#
 */
 static void
- at from@_to_BOOL(register @fromtyp@ *ip, register Bool *op, register intp n,
+ at FROMTYPE@_to_BOOL(@fromtype@ *ip, Bool *op, intp n,
                PyArrayObject *NPY_UNUSED(aip), PyArrayObject *NPY_UNUSED(aop))
 {
     while (n--) {
@@ -668,87 +726,105 @@
 /**end repeat**/
 
 /**begin repeat
-#from=CFLOAT, CDOUBLE, CLONGDOUBLE#
-#fromtyp=cfloat, cdouble, clongdouble#
+ *
+ * #FROMTYPE = CFLOAT, CDOUBLE, CLONGDOUBLE#
+ * #fromtype = cfloat, cdouble, clongdouble#
 */
 static void
- at from@_to_BOOL(register @fromtyp@ *ip, register Bool *op, register intp n,
+ at FROMTYPE@_to_BOOL(@fromtype@ *ip, Bool *op, intp n,
                PyArrayObject *NPY_UNUSED(aip), PyArrayObject *NPY_UNUSED(aop))
 {
     while (n--) {
         *op = (Bool)(((*ip).real != FALSE) || ((*ip).imag != FALSE));
-        op++; ip++;
+        op++;
+        ip++;
     }
 }
 /**end repeat**/
 
 /**begin repeat
-#to=BYTE,UBYTE,SHORT,USHORT,INT,UINT,LONG,ULONG,LONGLONG,ULONGLONG,FLOAT,DOUBLE,LONGDOUBLE#
-#totyp=byte, ubyte, short, ushort, int, uint, long, ulong, longlong, ulonglong, float, double, longdouble#
+ * #TOTYPE = BYTE, UBYTE, SHORT, USHORT, INT, UINT, LONG, ULONG,
+ *           LONGLONG, ULONGLONG, FLOAT, DOUBLE, LONGDOUBLE#
+ * #totype = byte, ubyte, short, ushort, int, uint, long, ulong,
+ *           longlong, ulonglong, float, double, longdouble#
 */
 static void
-BOOL_to_ at to@(register Bool *ip, register @totyp@ *op, register intp n,
+BOOL_to_ at TOTYPE@(Bool *ip, @totype@ *op, intp n,
              PyArrayObject *NPY_UNUSED(aip), PyArrayObject *NPY_UNUSED(aop))
 {
     while (n--) {
-        *op++ = (@totyp@)(*ip++ != FALSE);
+        *op++ = (@totype@)(*ip++ != FALSE);
     }
 }
 /**end repeat**/
 
 /**begin repeat
+ *
+ * #TOTYPE = CFLOAT,CDOUBLE,CLONGDOUBLE#
+ * #totype = float, double, longdouble#
+ */
 
-#to=(CFLOAT,CDOUBLE,CLONGDOUBLE)*14#
-#from=BOOL*3,BYTE*3,UBYTE*3,SHORT*3,USHORT*3,INT*3,UINT*3,LONG*3,ULONG*3,LONGLONG*3,ULONGLONG*3,FLOAT*3,DOUBLE*3,LONGDOUBLE*3#
-#fromtyp=Bool*3,byte*3, ubyte*3, short*3, ushort*3, int*3, uint*3, long*3, ulong*3, longlong*3, ulonglong*3, float*3, double*3, longdouble*3#
-#totyp= (float, double, longdouble)*14#
-*/
+/**begin repeat1
+ * #FROMTYPE = BOOL, BYTE, UBYTE, SHORT, USHORT, INT, UINT, LONG, ULONG,
+ *             LONGLONG, ULONGLONG, FLOAT, DOUBLE, LONGDOUBLE#
+ * #fromtype = Bool, byte, ubyte, short, ushort, int, uint, long, ulong,
+ *             longlong, ulonglong, float, double, longdouble#
+ */
 static void
- at from@_to_ at to@(register @fromtyp@ *ip, register @totyp@ *op, register intp n,
+ at FROMTYPE@_to_ at TOTYPE@(register @fromtype@ *ip, register @totype@ *op, register intp n,
                PyArrayObject *NPY_UNUSED(aip), PyArrayObject *NPY_UNUSED(aop))
 {
     while (n--) {
-        *op++ = (@totyp@)*ip++;
+        *op++ = (@totype@)*ip++;
         *op++ = 0.0;
     }
 
 }
+/**end repeat1**/
 /**end repeat**/
 
 /**begin repeat
+ *
+ * #TOTYPE = CFLOAT,CDOUBLE,CLONGDOUBLE#
+ * #totype = float, double, longdouble#
+ */
 
-#to=(CFLOAT,CDOUBLE,CLONGDOUBLE)*3#
-#from=CFLOAT*3,CDOUBLE*3,CLONGDOUBLE*3#
-#totyp=(float, double, longdouble)*3#
-#fromtyp=float*3, double*3, longdouble*3#
-*/
+/**begin repeat1
+ * #FROMTYPE = CFLOAT,CDOUBLE,CLONGDOUBLE#
+ * #fromtype = float, double, longdouble#
+ */
 static void
- at from@_to_ at to@(register @fromtyp@ *ip, register @totyp@ *op, register intp n,
+ at FROMTYPE@_to_ at TOTYPE@(@fromtype@ *ip, @totype@ *op, intp n,
                PyArrayObject *NPY_UNUSED(aip), PyArrayObject *NPY_UNUSED(aop))
 {
     n <<= 1;
     while (n--) {
-        *op++ = (@totyp@)*ip++;
+        *op++ = (@totype@)*ip++;
     }
+}
 
-}
+/**end repeat1**/
 /**end repeat**/
 
 /**begin repeat
-
-#from=BOOL,BYTE,UBYTE,SHORT,USHORT,INT,UINT,LONG,ULONG,LONGLONG,ULONGLONG,FLOAT,DOUBLE,LONGDOUBLE,CFLOAT,CDOUBLE,CLONGDOUBLE, STRING, UNICODE, VOID, OBJECT#
-#fromtyp=Bool, byte, ubyte, short, ushort, int, uint, long, ulong, longlong, ulonglong, float, double, longdouble, cfloat, cdouble, clongdouble, char, char, char, PyObject *#
-#skip= 1*17, aip->descr->elsize*3, 1#
-*/
+ *
+ * #FROMTYPE = BOOL, BYTE, UBYTE, SHORT, USHORT, INT, UINT, LONG, ULONG,
+ *             LONGLONG, ULONGLONG, FLOAT, DOUBLE, LONGDOUBLE,
+ *             CFLOAT, CDOUBLE, CLONGDOUBLE, STRING, UNICODE, VOID, OBJECT#
+ * #fromtype = Bool, byte, ubyte, short, ushort, int, uint, long, ulong,
+ *             longlong, ulonglong, float, double, longdouble,
+ *             cfloat, cdouble, clongdouble, char, char, char, PyObject *#
+ * #skip = 1*17, aip->descr->elsize*3, 1#
+ */
 static void
- at from@_to_OBJECT(@fromtyp@ *ip, PyObject **op, intp n, PyArrayObject *aip,
+ at FROMTYPE@_to_OBJECT(@fromtype@ *ip, PyObject **op, intp n, PyArrayObject *aip,
                  PyArrayObject *NPY_UNUSED(aop))
 {
-    register intp i;
-    int skip=@skip@;
-    for(i=0;i<n;i++,ip+=skip,op++) {
+    intp i;
+    int skip = @skip@;
+    for (i = 0; i < n; i++, ip +=skip, op++) {
         Py_XDECREF(*op);
-        *op = @from at _getitem((char *)ip, aip);
+        *op = @FROMTYPE at _getitem((char *)ip, aip);
     }
 }
 /**end repeat**/
@@ -770,27 +846,33 @@
 #define _NPY_UNUSEDCFLOAT  NPY_UNUSED
 #define _NPY_UNUSEDCDOUBLE  NPY_UNUSED
 #define _NPY_UNUSEDCLONGDOUBLE  NPY_UNUSED
-#define _NPY_UNUSEDSTRING 
-#define _NPY_UNUSEDVOID 
+#define _NPY_UNUSEDSTRING
+#define _NPY_UNUSEDVOID
 #define _NPY_UNUSEDUNICODE
+
 /**begin repeat
-
-#to=BOOL,BYTE,UBYTE,SHORT,USHORT,INT,UINT,LONG,ULONG,LONGLONG,ULONGLONG,FLOAT,DOUBLE,LONGDOUBLE,CFLOAT,CDOUBLE,CLONGDOUBLE, STRING, UNICODE, VOID#
-#totyp=Bool, byte, ubyte, short, ushort, int, uint, long, ulong, longlong, ulonglong, float, double, longdouble, cfloat, cdouble, clongdouble, char, char, char#
-#skip= 1*17, aip->descr->elsize*3#
-*/
+ *
+ * #TOTYPE = BOOL, BYTE, UBYTE, SHORT, USHORT, INT, UINT, LONG, ULONG,
+ *           LONGLONG, ULONGLONG, FLOAT, DOUBLE, LONGDOUBLE,
+ *           CFLOAT, CDOUBLE, CLONGDOUBLE, STRING, UNICODE, VOID#
+ * #totype = Bool, byte, ubyte, short, ushort, int, uint, long, ulong,
+ *           longlong, ulonglong, float, double, longdouble,
+ *           cfloat, cdouble, clongdouble, char, char, char#
+ * #skip = 1*17, aip->descr->elsize*3#
+ */
 static void
-OBJECT_to_ at to@(PyObject **ip, @totyp@ *op, intp n, PyArrayObject *_NPY_UNUSED at to@(aip),
-                 PyArrayObject *aop)
+OBJECT_to_ at TOTYPE@(PyObject **ip, @totype@ *op, intp n,
+        PyArrayObject *_NPY_UNUSED at TOTYPE@(aip), PyArrayObject *aop)
 {
-    register intp i;
-    int skip=@skip@;
-    for(i=0;i<n;i++,ip++,op+=skip) {
+    intp i;
+    int skip = @skip@;
+
+    for (i = 0; i < n; i++, ip++, op += skip) {
         if (*ip == NULL) {
-            @to at _setitem(Py_False, (char *)op, aop);
+            @TOTYPE at _setitem(Py_False, (char *)op, aop);
         }
         else {
-            @to at _setitem(*ip, (char *)op, aop);
+            @TOTYPE at _setitem(*ip, (char *)op, aop);
         }
     }
 }
@@ -798,26 +880,28 @@
 
 
 /**begin repeat
-
-#from=STRING*20, UNICODE*20, VOID*20#
-#fromtyp=char*60#
-#to=(BOOL,BYTE,UBYTE,SHORT,USHORT,INT,UINT,LONG,ULONG,LONGLONG,ULONGLONG,FLOAT,DOUBLE,LONGDOUBLE,CFLOAT,CDOUBLE,CLONGDOUBLE,STRING,UNICODE,VOID)*3#
-#totyp=(Bool, byte, ubyte, short, ushort, int, uint, long, ulong, longlong, ulonglong, float, double, longdouble, cfloat, cdouble, clongdouble, char, char, char)*3#
-#oskip=(1*17,aop->descr->elsize*3)*3#
-#convert=1*17,0*3,1*17,0*3,0*20#
-#convstr=(Int*9,Long*2,Float*3,Complex*3,Tuple*3)*3#
+ *
+ * #from = STRING*20, UNICODE*20, VOID*20#
+ * #fromtyp = char*60#
+ * #to = (BOOL, BYTE, UBYTE, SHORT, USHORT, INT, UINT, LONG, ULONG, LONGLONG, ULONGLONG, FLOAT, DOUBLE, LONGDOUBLE, CFLOAT, CDOUBLE, CLONGDOUBLE, STRING, UNICODE, VOID)*3#
+ * #totyp = (Bool, byte, ubyte, short, ushort, int, uint, long, ulong, longlong, ulonglong, float, double, longdouble, cfloat, cdouble, clongdouble, char, char, char)*3#
+ * #oskip = (1*17,aop->descr->elsize*3)*3#
+ * #convert = 1*17, 0*3, 1*17, 0*3, 0*20#
+ * #convstr = (Int*9, Long*2, Float*3, Complex*3, Tuple*3)*3#
 */
 static void
 @from at _to_@to@(@fromtyp@ *ip, @totyp@ *op, intp n, PyArrayObject *aip,
              PyArrayObject *aop)
 {
     register intp i;
-    PyObject *temp=NULL;
-    int skip=aip->descr->elsize;
-    int oskip=@oskip@;
-    for(i=0; i<n; i++, ip+=skip, op+=oskip) {
+    PyObject *temp = NULL;
+    int skip = aip->descr->elsize;
+    int oskip = @oskip@;
+    for (i = 0; i < n; i++, ip+=skip, op+=oskip) {
         temp = @from at _getitem((char *)ip, aip);
-        if (temp==NULL) return;
+        if (temp == NULL) {
+            return;
+        }
         /* convert from Python object to needed one */
         if (@convert@) {
             PyObject *new, *args;
@@ -826,9 +910,10 @@
             new = Py at convstr@_Type.tp_new(&Py at convstr@_Type, args, NULL);
             Py_DECREF(args);
             temp = new;
-            if (temp==NULL) return;
+            if (temp == NULL) {
+                return;
+            }
         }
-
         @to at _setitem(temp,(char *)op, aop);
         Py_DECREF(temp);
     }
@@ -837,24 +922,23 @@
 /**end repeat**/
 
 /**begin repeat
-
-#to=STRING*17, UNICODE*17, VOID*17#
-#totyp=char*17, char*17, char*17#
-#from=(BOOL,BYTE,UBYTE,SHORT,USHORT,INT,UINT,LONG,ULONG,LONGLONG,ULONGLONG,FLOAT,DOUBLE,LONGDOUBLE,CFLOAT,CDOUBLE,CLONGDOUBLE)*3#
-#fromtyp=(Bool, byte, ubyte, short, ushort, int, uint, long, ulong, longlong, ulonglong, float, double, longdouble, cfloat, cdouble, clongdouble)*3#
-*/
-
+ *
+ * #to = STRING*17, UNICODE*17, VOID*17#
+ * #totyp = char*17, char*17, char*17#
+ * #from = (BOOL, BYTE, UBYTE, SHORT, USHORT, INT, UINT, LONG, ULONG, LONGLONG, ULONGLONG, FLOAT, DOUBLE, LONGDOUBLE, CFLOAT, CDOUBLE, CLONGDOUBLE)*3#
+ * #fromtyp = (Bool, byte, ubyte, short, ushort, int, uint, long, ulong, longlong, ulonglong, float, double, longdouble, cfloat, cdouble, clongdouble)*3#
+ */
 static void
 @from at _to_@to@(@fromtyp@ *ip, @totyp@ *op, intp n, PyArrayObject *aip,
              PyArrayObject *aop)
 {
-    register intp i;
-    PyObject *temp=NULL;
-    int skip=1;
-    int oskip=aop->descr->elsize;
-    for(i=0; i<n; i++, ip+=skip, op+=oskip) {
+    intp i;
+    PyObject *temp = NULL;
+    int skip = 1;
+    int oskip = aop->descr->elsize;
+    for (i = 0; i < n; i++, ip += skip, op += oskip) {
         temp = @from at _getitem((char *)ip, aip);
-        if (temp==NULL) {
+        if (temp == NULL) {
             Py_INCREF(Py_False);
             temp = Py_False;
         }
@@ -868,31 +952,33 @@
 
 /****************** scan *************************************/
 
-/* The first ignore argument is for backwards compatibility.
-   Should be removed when the API version is bumped up.
+/*
+ * The first ignore argument is for backwards compatibility.
+ * Should be removed when the API version is bumped up.
  */
 
 /**begin repeat
-#fname=SHORT,USHORT,INT,UINT,LONG,ULONG,LONGLONG,ULONGLONG#
-#type=short,ushort,int,uint,long,ulong,longlong,ulonglong#
-#format="hd","hu","d","u","ld","lu",LONGLONG_FMT,ULONGLONG_FMT#
-*/
+ * #fname = SHORT, USHORT, INT, UINT, LONG, ULONG, LONGLONG, ULONGLONG#
+ * #type = short, ushort, int, uint, long, ulong, longlong, ulonglong#
+ * #format = "hd", "hu", "d", "u", "ld", "lu", LONGLONG_FMT, ULONGLONG_FMT#
+ */
 static int
- at fname@_scan (FILE *fp, @type@ *ip, void *NPY_UNUSED(ignore), PyArray_Descr *NPY_UNUSED(ignored))
+ at fname@_scan(FILE *fp, @type@ *ip, void *NPY_UNUSED(ignore), PyArray_Descr *NPY_UNUSED(ignored))
 {
     return fscanf(fp, "%"@format@, ip);
 }
 /**end repeat**/
 
 /**begin repeat
-#fname=FLOAT,DOUBLE,LONGDOUBLE#
-#type=float,double,longdouble#
-*/
+ * #fname = FLOAT, DOUBLE, LONGDOUBLE#
+ * #type = float, double, longdouble#
+ */
 static int
- at fname@_scan (FILE *fp, @type@ *ip, void *NPY_UNUSED(ignore), PyArray_Descr *NPY_UNUSED(ignored))
+ at fname@_scan(FILE *fp, @type@ *ip, void *NPY_UNUSED(ignore), PyArray_Descr *NPY_UNUSED(ignored))
 {
     double result;
     int ret;
+
     ret = NumPyOS_ascii_ftolf(fp, &result);
     *ip = (@type@) result;
     return ret;
@@ -900,16 +986,17 @@
 /**end repeat**/
 
 /**begin repeat
-#fname=BYTE,UBYTE#
-#type=byte,ubyte#
-#btype=int,uint#
-#format="d","u"#
-*/
+ * #fname = BYTE, UBYTE#
+ * #type = byte, ubyte#
+ * #btype = int, uint#
+ * #format = "d", "u"#
+ */
 static int
- at fname@_scan (FILE *fp, @type@ *ip, void *NPY_UNUSED(ignore), PyArray_Descr *NPY_UNUSED(ignore2))
+ at fname@_scan(FILE *fp, @type@ *ip, void *NPY_UNUSED(ignore), PyArray_Descr *NPY_UNUSED(ignore2))
 {
     @btype@ temp;
     int num;
+
     num = fscanf(fp, "%"@format@, &temp);
     *ip = (@type@) temp;
     return num;
@@ -917,29 +1004,30 @@
 /**end repeat**/
 
 static int
-BOOL_scan (FILE *fp, Bool *ip, void *NPY_UNUSED(ignore), PyArray_Descr *NPY_UNUSED(ignore2))
+BOOL_scan(FILE *fp, Bool *ip, void *NPY_UNUSED(ignore), PyArray_Descr *NPY_UNUSED(ignore2))
 {
     int temp;
     int num;
+
     num = fscanf(fp, "%d", &temp);
     *ip = (Bool) (temp != 0);
     return num;
 }
 
 /**begin repeat
-#fname=CFLOAT,CDOUBLE,CLONGDOUBLE,OBJECT,STRING,UNICODE,VOID#
-*/
+ * #fname = CFLOAT, CDOUBLE, CLONGDOUBLE, OBJECT, STRING, UNICODE, VOID#
+ */
 #define @fname at _scan NULL
 /**end repeat**/
 
 /****************** fromstr *************************************/
 
 /**begin repeat
-#fname=BYTE,UBYTE,SHORT,USHORT,INT,UINT,LONG,ULONG,LONGLONG,ULONGLONG#
-#type=byte,ubyte,short,ushort,int,uint,long,ulong,longlong,ulonglong#
-#func=(l,ul)*5#
-#btype=(long,ulong)*5#
-*/
+ * #fname = BYTE, UBYTE, SHORT, USHORT, INT, UINT, LONG, ULONG, LONGLONG, ULONGLONG#
+ * #type = byte, ubyte, short, ushort, int, uint, long, ulong, longlong, ulonglong#
+ * #func = (l, ul)*5#
+ * #btype = (long, ulong)*5#
+ */
 static int
 @fname at _fromstr(char *str, @type@ *ip, char **endptr, PyArray_Descr *NPY_UNUSED(ignore))
 {
@@ -952,9 +1040,10 @@
 /**end repeat**/
 
 /**begin repeat
-#fname=FLOAT,DOUBLE,LONGDOUBLE#
-#type=float,double,longdouble#
-*/
+ *
+ * #fname=FLOAT,DOUBLE,LONGDOUBLE#
+ * #type=float,double,longdouble#
+ */
 static int
 @fname at _fromstr(char *str, @type@ *ip, char **endptr, PyArray_Descr *NPY_UNUSED(ignore))
 {
@@ -969,8 +1058,8 @@
 
 
 /**begin repeat
-#fname=BOOL,CFLOAT,CDOUBLE,CLONGDOUBLE,OBJECT,STRING,UNICODE,VOID#
-*/
+ * #fname = BOOL, CFLOAT, CDOUBLE, CLONGDOUBLE, OBJECT, STRING, UNICODE, VOID#
+ */
 #define @fname at _fromstr NULL
 /**end repeat**/
 
@@ -978,11 +1067,11 @@
 /****************** copyswapn *************************************/
 
 /**begin repeat
-
-#fname=SHORT,USHORT,INT,UINT,LONG,ULONG,LONGLONG,ULONGLONG,FLOAT,DOUBLE,LONGDOUBLE#
-#fsize=SHORT,SHORT,INT,INT,LONG,LONG,LONGLONG,LONGLONG,FLOAT,DOUBLE,LONGDOUBLE#
-#type=short,ushort,int,uint,long,ulong,longlong,ulonglong,float,double,longdouble#
-*/
+ *
+ * #fname = SHORT, USHORT, INT, UINT, LONG, ULONG, LONGLONG, ULONGLONG, FLOAT, DOUBLE, LONGDOUBLE#
+ * #fsize = SHORT, SHORT, INT, INT, LONG, LONG, LONGLONG, LONGLONG, FLOAT, DOUBLE, LONGDOUBLE#
+ * #type = short, ushort, int, uint, long, ulong, longlong, ulonglong, float, double, longdouble#
+ */
 static void
 @fname at _copyswapn (void *dst, intp dstride, void *src, intp sstride,
                    intp n, int swap, void *NPY_UNUSED(arr))
@@ -1005,11 +1094,13 @@
 @fname at _copyswap (void *dst, void *src, int swap, void *NPY_UNUSED(arr))
 {
 
-    if (src != NULL) /* copy first if needed */
+    if (src != NULL) {
+        /* copy first if needed */
         memcpy(dst, src, sizeof(@type@));
+    }
+    if (swap) {
+        char *a, *b, c;
 
-    if (swap) {
-        register char *a, *b, c;
         a = (char *)dst;
 #if SIZEOF_ at fsize@ == 2
         b = a + 1;
@@ -1051,25 +1142,27 @@
         c = *a; *a++ = *b; *b   = c;
 #else
         {
-            register int i, nn;
+            int i, nn;
+
             b = a + (SIZEOF_ at fsize@-1);
             nn = SIZEOF_ at fsize@ / 2;
-            for (i=0; i<nn; i++) {
-                c=*a; *a++ = *b; *b-- = c;
+            for (i = 0; i < nn; i++) {
+                c = *a;
+                *a++ = *b;
+                *b-- = c;
             }
         }
 #endif
     }
 }
 
-
 /**end repeat**/
 
 /**begin repeat
-
-#fname=BOOL, BYTE, UBYTE#
-#type=Bool, byte, ubyte#
-*/
+ *
+ * #fname = BOOL, BYTE, UBYTE#
+ * #type = Bool, byte, ubyte#
+ */
 static void
 @fname at _copyswapn (void *dst, intp dstride, void *src, intp sstride, intp n,
                    int NPY_UNUSED(swap), void *NPY_UNUSED(arr))
@@ -1089,8 +1182,10 @@
 static void
 @fname at _copyswap (void *dst, void *src, int NPY_UNUSED(swap), void *NPY_UNUSED(arr))
 {
-    if (src != NULL) /* copy first if needed */
+    if (src != NULL) {
+        /* copy first if needed */
         memcpy(dst, src, sizeof(@type@));
+    }
     /* ignore swap */
 }
 
@@ -1099,10 +1194,10 @@
 
 
 /**begin repeat
-
-#fname=CFLOAT,CDOUBLE,CLONGDOUBLE#
-#type=cfloat, cdouble, clongdouble#
-#fsize=FLOAT,DOUBLE,LONGDOUBLE#
+ *
+ * #fname = CFLOAT, CDOUBLE, CLONGDOUBLE#
+ * #type = cfloat,  cdouble,  clongdouble#
+ * #fsize = FLOAT, DOUBLE, LONGDOUBLE#
 */
 static void
 @fname at _copyswapn (void *dst, intp dstride, void *src, intp sstride, intp n,
@@ -2636,22 +2731,22 @@
 #define SETTYPE(name)                           \
     Py_INCREF(&Py##name##ArrType_Type);     \
     PyDict_SetItemString(infodict, #name,   \
-            (PyObject *)&Py##name##ArrType_Type);
+            (PyObject *)&Py##name##ArrType_Type)
 
-    SETTYPE(Generic)
-        SETTYPE(Number)
-        SETTYPE(Integer)
-        SETTYPE(Inexact)
-        SETTYPE(SignedInteger)
-        SETTYPE(UnsignedInteger)
-        SETTYPE(Floating)
-        SETTYPE(ComplexFloating)
-        SETTYPE(Flexible)
-        SETTYPE(Character)
+    SETTYPE(Generic);
+    SETTYPE(Number);
+    SETTYPE(Integer);
+    SETTYPE(Inexact);
+    SETTYPE(SignedInteger);
+    SETTYPE(UnsignedInteger);
+    SETTYPE(Floating);
+    SETTYPE(ComplexFloating);
+    SETTYPE(Flexible);
+    SETTYPE(Character);
 
 #undef SETTYPE
 
-        PyDict_SetItemString(dict, "typeinfo", infodict);
+    PyDict_SetItemString(dict, "typeinfo", infodict);
     Py_DECREF(infodict);
     return 0;
 }

Modified: branches/coremath/numpy/core/src/scalartypes.inc.src
===================================================================
--- branches/coremath/numpy/core/src/scalartypes.inc.src	2009-02-25 19:04:59 UTC (rev 6475)
+++ branches/coremath/numpy/core/src/scalartypes.inc.src	2009-02-26 06:24:22 UTC (rev 6476)
@@ -1448,9 +1448,14 @@
 static PyObject *
 voidtype_getfield(PyVoidScalarObject *self, PyObject *args, PyObject *kwds)
 {
-    PyObject *ret;
+    PyObject *ret, *newargs;
 
-    ret = gentype_generic_method((PyObject *)self, args, kwds, "getfield");
+    newargs = PyTuple_GetSlice(args, 0, 2);
+    if (newargs == NULL) {
+        return NULL;
+    }
+    ret = gentype_generic_method((PyObject *)self, newargs, kwds, "getfield");
+    Py_DECREF(newargs);
     if (!ret) {
         return ret;
     }

Modified: branches/coremath/numpy/core/tests/test_multiarray.py
===================================================================
--- branches/coremath/numpy/core/tests/test_multiarray.py	2009-02-25 19:04:59 UTC (rev 6475)
+++ branches/coremath/numpy/core/tests/test_multiarray.py	2009-02-26 06:24:22 UTC (rev 6476)
@@ -7,6 +7,10 @@
 
 from test_print import in_foreign_locale
 
+def iswin64():
+    import platform
+    return platform.architecture()[0] == "64bit" and sys.platform == "win32"
+
 class TestFlags(TestCase):
     def setUp(self):
         self.a = arange(10)
@@ -556,6 +560,7 @@
 
 
 class TestStringCompare(TestCase):
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_string(self):
         g1 = array(["This","is","example"])
         g2 = array(["This","was","example"])
@@ -566,6 +571,7 @@
         assert_array_equal(g1 < g2, [g1[i] < g2[i] for i in [0,1,2]])
         assert_array_equal(g1 > g2, [g1[i] > g2[i] for i in [0,1,2]])
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_mixed(self):
         g1 = array(["spam","spa","spammer","and eggs"])
         g2 = "spam"
@@ -577,6 +583,7 @@
         assert_array_equal(g1 >= g2, [x >= g2 for x in g1])
 
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_unicode(self):
         g1 = array([u"This",u"is",u"example"])
         g2 = array([u"This",u"was",u"example"])
@@ -796,6 +803,7 @@
             os.unlink(self.filename)
             #tmp_file.close()
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_roundtrip_file(self):
         f = open(self.filename, 'wb')
         self.x.tofile(f)
@@ -807,11 +815,13 @@
         assert_array_equal(y, self.x.flat)
         os.unlink(self.filename)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_roundtrip_filename(self):
         self.x.tofile(self.filename)
         y = np.fromfile(self.filename, dtype=self.dtype)
         assert_array_equal(y, self.x.flat)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_roundtrip_binary_str(self):
         s = self.x.tostring()
         y = np.fromstring(s, dtype=self.dtype)
@@ -821,6 +831,7 @@
         y = np.fromstring(s, dtype=self.dtype)
         assert_array_equal(y, self.x.flatten('F'))
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_roundtrip_str(self):
         x = self.x.real.ravel()
         s = "@".join(map(str, x))
@@ -830,12 +841,14 @@
         assert_array_equal(x[nan_mask], y[nan_mask])
         assert_array_almost_equal(x[~nan_mask], y[~nan_mask], decimal=5)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_roundtrip_repr(self):
         x = self.x.real.ravel()
         s = "@".join(map(repr, x))
         y = np.fromstring(s, sep="@")
         assert_array_equal(x, y)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def _check_from(self, s, value, **kw):
         y = np.fromstring(s, **kw)
         assert_array_equal(y, value)
@@ -846,53 +859,66 @@
         y = np.fromfile(self.filename, **kw)
         assert_array_equal(y, value)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_nan(self):
         self._check_from("nan +nan -nan NaN nan(foo) +NaN(BAR) -NAN(q_u_u_x_)",
                          [nan, nan, nan, nan, nan, nan, nan],
                          sep=' ')
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_inf(self):
         self._check_from("inf +inf -inf infinity -Infinity iNfInItY -inF",
                          [inf, inf, -inf, inf, -inf, inf, -inf], sep=' ')
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_numbers(self):
         self._check_from("1.234 -1.234 .3 .3e55 -123133.1231e+133",
                          [1.234, -1.234, .3, .3e55, -123133.1231e+133], sep=' ')
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_binary(self):
         self._check_from('\x00\x00\x80?\x00\x00\x00@\x00\x00@@\x00\x00\x80@',
                          array([1,2,3,4]),
                          dtype='<f4')
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_string(self):
         self._check_from('1,2,3,4', [1., 2., 3., 4.], sep=',')
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_counted_string(self):
         self._check_from('1,2,3,4', [1., 2., 3., 4.], count=4, sep=',')
         self._check_from('1,2,3,4', [1., 2., 3.], count=3, sep=',')
         self._check_from('1,2,3,4', [1., 2., 3., 4.], count=-1, sep=',')
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_string_with_ws(self):
         self._check_from('1 2  3     4   ', [1, 2, 3, 4], dtype=int, sep=' ')
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_counted_string_with_ws(self):
         self._check_from('1 2  3     4   ', [1,2,3], count=3, dtype=int,
                          sep=' ')
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_ascii(self):
         self._check_from('1 , 2 , 3 , 4', [1.,2.,3.,4.], sep=',')
         self._check_from('1,2,3,4', [1.,2.,3.,4.], dtype=float, sep=',')
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_malformed(self):
         self._check_from('1.234 1,234', [1.234, 1.], sep=' ')
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_long_sep(self):
         self._check_from('1_x_3_x_4_x_5', [1,3,4,5], sep='_x_')
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_dtype(self):
         v = np.array([1,2,3,4], dtype=np.int_)
         self._check_from('1,2,3,4', v, sep=',', dtype=np.int_)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_tofile_sep(self):
         x = np.array([1.51, 2, 3.51, 4], dtype=float)
         f = open(self.filename, 'w')
@@ -904,6 +930,7 @@
         assert_equal(s, '1.51,2.0,3.51,4.0')
         os.unlink(self.filename)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_tofile_format(self):
         x = np.array([1.51, 2, 3.51, 4], dtype=float)
         f = open(self.filename, 'w')
@@ -918,6 +945,7 @@
     def _run_in_foreign_locale(self, func, fail=False):
         np.testing.dec.knownfailureif(fail)(func)(self)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_locale(self):
         yield self._run_in_foreign_locale, TestIO.test_numbers
         yield self._run_in_foreign_locale, TestIO.test_nan

Modified: branches/coremath/numpy/core/tests/test_regression.py
===================================================================
--- branches/coremath/numpy/core/tests/test_regression.py	2009-02-25 19:04:59 UTC (rev 6475)
+++ branches/coremath/numpy/core/tests/test_regression.py	2009-02-26 06:24:22 UTC (rev 6476)
@@ -8,6 +8,10 @@
 
 rlevel = 1
 
+def iswin64():
+    import platform
+    return platform.architecture()[0] == "64bit" and sys.platform == "win32"
+
 def assert_valid_refcount(op):
     a = np.arange(100 * 100)
     b = np.arange(100*100).reshape(100, 100)
@@ -283,6 +287,7 @@
         x[0].tolist()
         [i for i in x[0]]
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_unicode_string_comparison(self,level=rlevel):
         """Ticket #190"""
         a = np.array('hello',np.unicode_)
@@ -753,6 +758,7 @@
             x |= y
         self.failUnlessRaises(TypeError,rs)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_unicode_scalar(self, level=rlevel):
         """Ticket #600"""
         import cPickle
@@ -1164,6 +1170,7 @@
         b = np.array(['1','2','3'])
         assert_equal(a,b)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_unaligned_unicode_access(self, level=rlevel) :
         """Ticket #825"""
         for i in range(1,9) :
@@ -1220,5 +1227,13 @@
         n_after = len(gc.get_objects())
         assert n_before >= n_after, (n_before, n_after)
 
+    def test_void_scalar_with_titles(self, level=rlevel):
+        """No ticket"""
+        data = [('john', 4), ('mary', 5)]
+        dtype1 = [(('source:yy', 'name'), 'O'), (('source:xx', 'id'), int)]
+        arr = np.array(data, dtype=dtype1)
+        assert arr[0][0] == 'john'
+        assert arr[0][1] == 4
+
 if __name__ == "__main__":
     run_module_suite()

Modified: branches/coremath/numpy/core/tests/test_scalarmath.py
===================================================================
--- branches/coremath/numpy/core/tests/test_scalarmath.py	2009-02-25 19:04:59 UTC (rev 6475)
+++ branches/coremath/numpy/core/tests/test_scalarmath.py	2009-02-26 06:24:22 UTC (rev 6476)
@@ -1,3 +1,4 @@
+import sys
 from numpy.testing import *
 import numpy as np
 
@@ -6,6 +7,10 @@
          np.single, np.double, np.longdouble, np.csingle,
          np.cdouble, np.clongdouble]
 
+def iswin64():
+    import platform
+    return platform.architecture()[0] == "64bit" and sys.platform == "win32"
+
 # This compares scalarmath against ufuncs.
 
 class TestTypes(TestCase):
@@ -42,6 +47,7 @@
             b = a ** 4
             assert b == 81, "error with %r: got %r" % (t,b)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_large_types(self):
         for t in [np.int32, np.int64, np.float32, np.float64, np.longdouble]:
             a = t(51)

Modified: branches/coremath/numpy/core/tests/test_unicode.py
===================================================================
--- branches/coremath/numpy/core/tests/test_unicode.py	2009-02-25 19:04:59 UTC (rev 6475)
+++ branches/coremath/numpy/core/tests/test_unicode.py	2009-02-26 06:24:22 UTC (rev 6476)
@@ -1,6 +1,12 @@
+import sys
+
 from numpy.testing import *
 from numpy.core import *
 
+def iswin64():
+    import platform
+    return platform.architecture()[0] == "64bit" and sys.platform == "win32"
+
 # Guess the UCS length for this python interpreter
 if len(buffer(u'u')) == 4:
     ucs4 = True
@@ -36,17 +42,20 @@
         else:
             self.assert_(len(buffer(ua_scalar)) == 0)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_zeros0D(self):
         """Check creation of 0-dimensional objects"""
         ua = zeros((), dtype='U%s' % self.ulen)
         self.content_check(ua, ua[()], 4*self.ulen)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_zerosSD(self):
         """Check creation of single-dimensional objects"""
         ua = zeros((2,), dtype='U%s' % self.ulen)
         self.content_check(ua, ua[0], 4*self.ulen*2)
         self.content_check(ua, ua[1], 4*self.ulen*2)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_zerosMD(self):
         """Check creation of multi-dimensional objects"""
         ua = zeros((2,3,4), dtype='U%s' % self.ulen)
@@ -96,17 +105,20 @@
                 # regular 2-byte word
                 self.assert_(len(buffer(ua_scalar)) == 2*self.ulen)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_values0D(self):
         """Check creation of 0-dimensional objects with values"""
         ua = array(self.ucs_value*self.ulen, dtype='U%s' % self.ulen)
         self.content_check(ua, ua[()], 4*self.ulen)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_valuesSD(self):
         """Check creation of single-dimensional objects with values"""
         ua = array([self.ucs_value*self.ulen]*2, dtype='U%s' % self.ulen)
         self.content_check(ua, ua[0], 4*self.ulen*2)
         self.content_check(ua, ua[1], 4*self.ulen*2)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_valuesMD(self):
         """Check creation of multi-dimensional objects with values"""
         ua = array([[[self.ucs_value*self.ulen]*2]*3]*4, dtype='U%s' % self.ulen)
@@ -181,12 +193,14 @@
                 # regular 2-byte word
                 self.assert_(len(buffer(ua_scalar)) == 2*self.ulen)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_values0D(self):
         """Check assignment of 0-dimensional objects with values"""
         ua = zeros((), dtype='U%s' % self.ulen)
         ua[()] = self.ucs_value*self.ulen
         self.content_check(ua, ua[()], 4*self.ulen)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_valuesSD(self):
         """Check assignment of single-dimensional objects with values"""
         ua = zeros((2,), dtype='U%s' % self.ulen)
@@ -195,6 +209,7 @@
         ua[1] = self.ucs_value*self.ulen
         self.content_check(ua, ua[1], 4*self.ulen*2)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_valuesMD(self):
         """Check assignment of multi-dimensional objects with values"""
         ua = zeros((2,3,4), dtype='U%s' % self.ulen)
@@ -248,6 +263,7 @@
 class byteorder_values:
     """Check the byteorder of unicode arrays in round-trip conversions"""
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_values0D(self):
         """Check byteorder of 0-dimensional objects"""
         ua = array(self.ucs_value*self.ulen, dtype='U%s' % self.ulen)
@@ -260,6 +276,7 @@
         # Arrays must be equal after the round-trip
         assert_equal(ua, ua3)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_valuesSD(self):
         """Check byteorder of single-dimensional objects"""
         ua = array([self.ucs_value*self.ulen]*2, dtype='U%s' % self.ulen)
@@ -270,6 +287,7 @@
         # Arrays must be equal after the round-trip
         assert_equal(ua, ua3)
 
+    @dec.knownfailureif(iswin64(), "Crash on win64")
     def test_valuesMD(self):
         """Check byteorder of multi-dimensional objects"""
         ua = array([[[self.ucs_value*self.ulen]*2]*3]*4,

Modified: branches/coremath/numpy/distutils/fcompiler/compaq.py
===================================================================
--- branches/coremath/numpy/distutils/fcompiler/compaq.py	2009-02-25 19:04:59 UTC (rev 6475)
+++ branches/coremath/numpy/distutils/fcompiler/compaq.py	2009-02-26 06:24:22 UTC (rev 6476)
@@ -89,6 +89,10 @@
             if not "vcvarsall.bat" in str(e):
                 print "Unexpected IOError in", __file__
                 raise e
+        except ValueError, e:
+	    if not "path']" in str(e):
+                print "Unexpected ValueError in", __file__
+                raise e
 
     executables = {
         'version_cmd'  : ['<F90>', "/what"],

Modified: branches/coremath/numpy/ma/core.py
===================================================================
--- branches/coremath/numpy/ma/core.py	2009-02-25 19:04:59 UTC (rev 6475)
+++ branches/coremath/numpy/ma/core.py	2009-02-26 06:24:22 UTC (rev 6476)
@@ -3846,7 +3846,7 @@
         """
         (ver, shp, typ, isf, raw, msk, flv) = state
         ndarray.__setstate__(self, (shp, typ, isf, raw))
-        self._mask.__setstate__((shp, np.dtype(bool), isf, msk))
+        self._mask.__setstate__((shp, make_mask_descr(typ), isf, msk))
         self.fill_value = flv
     #
     def __reduce__(self):

Modified: branches/coremath/numpy/ma/tests/test_core.py
===================================================================
--- branches/coremath/numpy/ma/tests/test_core.py	2009-02-25 19:04:59 UTC (rev 6475)
+++ branches/coremath/numpy/ma/tests/test_core.py	2009-02-26 06:24:22 UTC (rev 6476)
@@ -369,14 +369,26 @@
         assert_equal(a_pickled._mask, a._mask)
         assert_equal(a_pickled._data, a._data)
         assert_equal(a_pickled.fill_value, 999)
-        #
+
+    def test_pickling_subbaseclass(self):
+        "Test pickling w/ a subclass of ndarray"
+        import cPickle
         a = array(np.matrix(range(10)), mask=[1,0,1,0,0]*2)
         a_pickled = cPickle.loads(a.dumps())
         assert_equal(a_pickled._mask, a._mask)
         assert_equal(a_pickled, a)
         self.failUnless(isinstance(a_pickled._data,np.matrix))
 
+    def test_pickling_wstructured(self):
+        "Tests pickling w/ structured array"
+        import cPickle
+        a = array([(1, 1.), (2, 2.)], mask=[(0, 0), (0, 1)],
+                  dtype=[('a', int), ('b', float)])
+        a_pickled = cPickle.loads(a.dumps())
+        assert_equal(a_pickled._mask, a._mask)
+        assert_equal(a_pickled, a)
 
+
     def test_single_element_subscript(self):
         "Tests single element subscripts of Maskedarrays."
         a = array([1,3,2])




More information about the Numpy-svn mailing list