]> gitweb.michael.orlitzky.com - dunshire.git/blobdiff - dunshire/matrices.py
Use "..." for floating point output in doctests.
[dunshire.git] / dunshire / matrices.py
index 2d4bb17c98a9187e2cacaa0094ef9c0cfe3c4600..6d5bbc8f667dce05feb93ec9fabcf42340f1157e 100644 (file)
@@ -3,6 +3,7 @@ Utility functions for working with CVXOPT matrices (instances of the
 class:`cvxopt.base.matrix` class).
 """
 
+from copy import copy
 from math import sqrt
 from cvxopt import matrix
 from cvxopt.lapack import gees, gesdd, syevr
@@ -140,7 +141,10 @@ def eigenvalues(symmat):
 
     domain_dim = symmat.size[0]
     eigs = matrix(0, (domain_dim, 1), tc='d')
-    syevr(symmat, eigs)
+
+    # Create a copy of ``symmat`` here because ``syevr`` clobbers it.
+    dummy = copy(symmat)
+    syevr(dummy, eigs)
     return list(eigs)
 
 
@@ -326,12 +330,12 @@ def norm(matrix_or_vector):
     --------
 
         >>> v = matrix([1,1])
-        >>> print('{:.5f}'.format(norm(v)))
-        1.41421
+        >>> norm(v)
+        1.414...
 
         >>> A = matrix([1,1,1,1], (2,2))
         >>> norm(A)
-        2.0
+        2.0...
 
     """
     return sqrt(inner_product(matrix_or_vector, matrix_or_vector))
@@ -418,10 +422,6 @@ def condition_number(mat):
     Examples
     --------
 
-    >>> condition_number(identity(1, typecode='d'))
-    1.0
-    >>> condition_number(identity(2, typecode='d'))
-    1.0
     >>> condition_number(identity(3, typecode='d'))
     1.0
 
@@ -435,7 +435,7 @@ def condition_number(mat):
 
     """
     num_eigs = min(mat.size)
-    eigs = matrix(0, (num_eigs,1), tc='d')
+    eigs = matrix(0, (num_eigs, 1), tc='d')
     gesdd(mat, eigs)
 
     if len(eigs) > 0: