lbalhar / rpms / numpy

Forked from rpms/numpy 4 years ago
Clone
Blob Blame History Raw
diff -ur numpy-0.9.8.orig/numpy/core/numeric.py numpy-0.9.8/numpy/core/numeric.py
--- numpy-0.9.8.orig/numpy/core/numeric.py	2006-05-17 18:48:38.000000000 -0400
+++ numpy-0.9.8/numpy/core/numeric.py	2006-09-05 16:23:00.000000000 -0400
@@ -11,6 +11,7 @@
            'array2string', 'get_printoptions', 'set_printoptions',
            'array_repr', 'array_str', 'set_string_function',
            'little_endian',
+           'fromiter',
            'indices', 'fromfunction',
            'load', 'loads', 'isscalar', 'binary_repr', 'base_repr',
            'ones', 'identity', 'allclose',
@@ -67,6 +68,10 @@
 
 # end Fernando's utilities
 
+def fromiter(obj, dtype=None):
+    obj = list(obj)
+    return array(obj, dtype=dtype)
+
 def extend_all(module):
     adict = {}
     for a in __all__:
diff -ur numpy-0.9.8.orig/numpy/core/src/arrayobject.c numpy-0.9.8/numpy/core/src/arrayobject.c
--- numpy-0.9.8.orig/numpy/core/src/arrayobject.c	2006-05-13 23:42:32.000000000 -0400
+++ numpy-0.9.8/numpy/core/src/arrayobject.c	2006-09-05 16:26:47.000000000 -0400
@@ -7287,9 +7287,10 @@
    adjusted */
 
 /*OBJECT_API
-  Adjusts previously broadcasted iterators so that the largest axis is not iterated 
-  over.  Returns dimension which is largest in the range [0,multi->nd).  A -1 
-  is returned if multi->nd == 0.
+  Adjusts previously broadcasted iterators so that the largest axis
+  is not iterated over.
+  Returns dimension which is largest in the range [0,multi->nd).
+  A -1 is returned if multi->nd == 0.
  */
 static int
 PyArray_RemoveLargest(PyArrayMultiIterObject *multi)
diff -ur numpy-0.9.8.orig/numpy/core/src/scalartypes.inc.src numpy-0.9.8/numpy/core/src/scalartypes.inc.src
--- numpy-0.9.8.orig/numpy/core/src/scalartypes.inc.src	2006-05-17 14:56:32.000000000 -0400
+++ numpy-0.9.8/numpy/core/src/scalartypes.inc.src	2006-09-05 16:28:32.000000000 -0400
@@ -1600,12 +1600,15 @@
 
 /* string and unicode inherit from Python Type first and so GET_ITEM is different to
    get to the Python Type.
+   ok is a work-around for a bug in complex_new that doesn't allocate
+   memory from the sub-types memory allocator.
  */
 
 /**begin repeat 
 #name=byte, short, int, long, longlong, ubyte, ushort, uint, ulong, ulonglong, float, double, longdouble, cfloat, cdouble, clongdouble, string, unicode, object#
 #TYPE=BYTE, SHORT, INT, LONG, LONGLONG, UBYTE, USHORT, UINT, ULONG, ULONGLONG, FLOAT, DOUBLE, LONGDOUBLE, CFLOAT, CDOUBLE, CLONGDOUBLE, STRING, UNICODE, OBJECT#
 #num=1*16,0,0,1#
+#ok=0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1#
 */
 static PyObject *
 @name@_arrtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
@@ -1614,6 +1617,7 @@
 	PyObject *arr;
 	PyArray_Descr *typecode;
 
+#if @ok@
 	if (type->tp_bases && (PyTuple_GET_SIZE(type->tp_bases)==2)) {
 		PyTypeObject *sup;
 		PyObject *ret;
@@ -1625,6 +1629,7 @@
 		PyErr_Clear();
 		/* now do default conversion */
 	}
+#endif
 
 	if (!PyArg_ParseTuple(args, "O", &obj)) return NULL;
 
diff -ur numpy-0.9.8.orig/numpy/core/tests/test_scalarmath.py numpy-0.9.8/numpy/core/tests/test_scalarmath.py
--- numpy-0.9.8.orig/numpy/core/tests/test_scalarmath.py	2006-05-10 18:51:12.000000000 -0400
+++ numpy-0.9.8/numpy/core/tests/test_scalarmath.py	2006-09-05 16:28:58.000000000 -0400
@@ -11,55 +11,22 @@
          N.single, N.double, N.longdouble, N.csingle,
          N.cdouble, N.clongdouble]
 
-# These were generated using old umath
-typeconv = array([
-    [ 0,  1,  2,  3,  4,  5,  6,  5,  6,  9, 10, 11, 12, 13, 14, 15, 16],
-    [ 1,  1,  3,  3,  4,  5,  6,  5,  6,  9, 10, 11, 12, 13, 14, 15, 16],
-    [ 2,  3,  2,  3,  4,  5,  6,  5,  6,  9, 10, 11, 12, 13, 14, 15, 16],
-    [ 3,  3,  3,  3,  5,  5,  6,  5,  6,  9, 10, 11, 12, 13, 14, 15, 16],
-    [ 4,  4,  4,  5,  4,  5,  6,  5,  6,  9, 10, 11, 12, 13, 14, 15, 16],
-    [ 5,  5,  5,  5,  5,  5,  9,  5,  9,  9, 10, 12, 12, 13, 15, 15, 16],
-    [ 6,  6,  6,  6,  6,  9,  6,  9,  6,  9, 10, 12, 12, 13, 15, 15, 16],
-    [ 7,  7,  7,  7,  7,  7,  9,  7,  9,  9, 10, 12, 12, 13, 15, 15, 16],
-    [ 8,  8,  8,  8,  8,  9,  8,  9,  8,  9, 10, 12, 12, 13, 15, 15, 16],
-    [ 9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 12, 12, 12, 13, 15, 15, 16],
-    [10, 10, 10, 10, 10, 10, 10, 10, 10, 12, 10, 12, 12, 13, 15, 15, 16],
-    [11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 11, 12, 13, 14, 15, 16],
-    [12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 15, 15, 16],
-    [13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 16, 16, 16],
-    [14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 14, 15, 16, 14, 15, 16],
-    [15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 15, 15, 16],
-    [16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16]
-    ])
-
-typeconv2 = array([
-    ['?','b','B','h','H','i','I','i','I','q','Q','f','d','g','F','D','G'],
-    ['b','b','h','h','H','i','I','i','I','q','Q','f','d','g','F','D','G'],
-    ['B','h','B','h','H','i','I','i','I','q','Q','f','d','g','F','D','G'],
-    ['h','h','h','h','i','i','I','i','I','q','Q','f','d','g','F','D','G'],
-    ['H','H','H','i','H','i','I','i','I','q','Q','f','d','g','F','D','G'],
-    ['i','i','i','i','i','i','q','i','q','q','Q','d','d','g','D','D','G'],
-    ['I','I','I','I','I','q','I','q','I','q','Q','d','d','g','D','D','G'],
-    ['l','l','l','l','l','l','q','l','q','q','Q','d','d','g','D','D','G'],
-    ['L','L','L','L','L','q','L','q','L','q','Q','d','d','g','D','D','G'],
-    ['q','q','q','q','q','q','q','q','q','q','d','d','d','g','D','D','G'],
-    ['Q','Q','Q','Q','Q','Q','Q','Q','Q','d','Q','d','d','g','D','D','G'],
-    ['f','f','f','f','f','d','d','d','d','d','d','f','d','g','F','D','G'],
-    ['d','d','d','d','d','d','d','d','d','d','d','d','d','g','D','D','G'],
-    ['g','g','g','g','g','g','g','g','g','g','g','g','g','g','G','G','G'],
-    ['F','F','F','F','F','D','D','D','D','D','D','F','D','G','F','D','G'],
-    ['D','D','D','D','D','D','D','D','D','D','D','D','D','G','D','D','G'],
-    ['G','G','G','G','G','G','G','G','G','G','G','G','G','G','G','G','G']
-    ],'S1')
+# This compares scalarmath against ufuncs.
 
 class test_types(ScipyTestCase):
     def check_types(self, level=1):
         # list of types
         for k, atype in enumerate(types):
             vala = atype(3)
+            val1 = array([3],dtype=atype)
             for l, btype in enumerate(types):
                 valb = btype(1)
+                val2 = array([1],dtype=btype)
                 val = vala+valb
-                assert val.dtype.num == typeconv[k,l] and \
-                       val.dtype.char == typeconv2[k,l], \
+                valo = val1 + val2
+                assert val.dtype.num == valo.dtype.num and \
+                       val.dtype.char == valo.dtype.char, \
                        "error with (%d,%d)" % (k,l)
+
+if __name__ == "__main__":
+    NumpyTest().run()