[Numpy-svn] r5111 - in trunk/numpy/linalg: . tests

numpy-svn at scipy.org numpy-svn at scipy.org
Mon Apr 28 23:05:52 EDT 2008


Author: charris
Date: 2008-04-28 22:05:50 -0500 (Mon, 28 Apr 2008)
New Revision: 5111

Modified:
   trunk/numpy/linalg/linalg.py
   trunk/numpy/linalg/tests/test_linalg.py
Log:
Keep singular values and eigenvalues as 1D arrays until the matrix indexing
controversy is settled. This will also keep code that uses diag(ev), from
breaking.


Modified: trunk/numpy/linalg/linalg.py
===================================================================
--- trunk/numpy/linalg/linalg.py	2008-04-29 00:13:25 UTC (rev 5110)
+++ trunk/numpy/linalg/linalg.py	2008-04-29 03:05:50 UTC (rev 5111)
@@ -594,7 +594,7 @@
             result_t = _complexType(result_t)
     if results['info'] > 0:
         raise LinAlgError, 'Eigenvalues did not converge'
-    return wrap(w.astype(result_t))
+    return w.astype(result_t)
 
 
 def eigvalsh(a, UPLO='L'):
@@ -673,7 +673,7 @@
                                  iwork, liwork, 0)
     if results['info'] > 0:
         raise LinAlgError, 'Eigenvalues did not converge'
-    return wrap(w.astype(result_t))
+    return w.astype(result_t)
 
 def _convertarray(a):
     t, result_t = _commonType(a)
@@ -786,7 +786,7 @@
     if results['info'] > 0:
         raise LinAlgError, 'Eigenvalues did not converge'
     vt = v.transpose().astype(result_t)
-    return wrap(w.astype(result_t)), wrap(vt)
+    return w.astype(result_t), wrap(vt)
 
 
 def eigh(a, UPLO='L'):
@@ -872,7 +872,7 @@
     if results['info'] > 0:
         raise LinAlgError, 'Eigenvalues did not converge'
     at = a.transpose().astype(result_t)
-    return wrap(w.astype(_realType(result_t))), wrap(at)
+    return w.astype(_realType(result_t)), wrap(at)
 
 
 # Singular value decomposition
@@ -979,9 +979,9 @@
     if compute_uv:
         u = u.transpose().astype(result_t)
         vt = vt.transpose().astype(result_t)
-        return wrap(u), wrap(s), wrap(vt)
+        return wrap(u), s, wrap(vt)
     else:
-        return wrap(s)
+        return s
 
 def cond(x, p=None):
     """Compute the condition number of a matrix.
@@ -1208,7 +1208,7 @@
         if results['rank'] == n and m > n:
             resids = sum((transpose(bstar)[n:,:])**2, axis=0).astype(result_t)
     st = s[:min(n, m)].copy().astype(_realType(result_t))
-    return wrap(x), wrap(resids), results['rank'], wrap(st)
+    return wrap(x), wrap(resids), results['rank'], st
 
 def norm(x, ord=None):
     """Matrix or vector norm.

Modified: trunk/numpy/linalg/tests/test_linalg.py
===================================================================
--- trunk/numpy/linalg/tests/test_linalg.py	2008-04-29 00:13:25 UTC (rev 5110)
+++ trunk/numpy/linalg/tests/test_linalg.py	2008-04-29 03:05:50 UTC (rev 5111)
@@ -88,13 +88,11 @@
         ev = linalg.eigvals(a)
         evalues, evectors = linalg.eig(a)
         assert_almost_equal(ev, evalues)
-        assert imply(isinstance(a, matrix), isinstance(ev, matrix))
 
 class TestEig(LinalgTestCase):
     def do(self, a, b):
         evalues, evectors = linalg.eig(a)
         assert_almost_equal(dot(a, evectors), multiply(evectors, evalues))
-        assert imply(isinstance(a, matrix), isinstance(evalues, matrix))
         assert imply(isinstance(a, matrix), isinstance(evectors, matrix))
 
 class TestSVD(LinalgTestCase):
@@ -102,7 +100,6 @@
         u, s, vt = linalg.svd(a, 0)
         assert_almost_equal(a, dot(multiply(u, s), vt))
         assert imply(isinstance(a, matrix), isinstance(u, matrix))
-        assert imply(isinstance(a, matrix), isinstance(s, matrix))
         assert imply(isinstance(a, matrix), isinstance(vt, matrix))
 
 class TestCondSVD(LinalgTestCase):
@@ -147,7 +144,6 @@
         assert_almost_equal(sv, sv.__array_wrap__(s))
         assert imply(isinstance(b, matrix), isinstance(x, matrix))
         assert imply(isinstance(b, matrix), isinstance(residuals, matrix))
-        assert imply(isinstance(b, matrix), isinstance(sv, matrix))
 
 class TestMatrixPower(ParametricTestCase):
     R90 = array([[0,1],[-1,0]])




More information about the Numpy-svn mailing list