summaryrefslogtreecommitdiff
path: root/numpy/linalg/tests
diff options
context:
space:
mode:
authorCJ Carey <perimosocordiae@gmail.com>2017-02-02 12:27:36 -0500
committerCJ Carey <perimosocordiae@gmail.com>2017-09-16 10:22:49 -0400
commitae1191b656654b18deeba44bb6ecc084f0b41737 (patch)
tree62a4476567edca51515141efdf686bbdbeab5ae0 /numpy/linalg/tests
parent7da52beb00b7c5d44ed1c946f2b43692d6ec4e1a (diff)
downloadnumpy-ae1191b656654b18deeba44bb6ecc084f0b41737.tar.gz
ENH: add hermitian=False kwarg to matrix_power
With a symmetric matrix, the more efficient `eigvalsh` method can be used to find singular values.
Diffstat (limited to 'numpy/linalg/tests')
-rw-r--r--numpy/linalg/tests/test_linalg.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/numpy/linalg/tests/test_linalg.py b/numpy/linalg/tests/test_linalg.py
index fa20cc5ea..8b3984883 100644
--- a/numpy/linalg/tests/test_linalg.py
+++ b/numpy/linalg/tests/test_linalg.py
@@ -1383,6 +1383,19 @@ class TestMatrixRank(object):
# works on scalar
yield assert_equal, matrix_rank(1), 1
+ def test_symmetric_rank(self):
+ yield assert_equal, 4, matrix_rank(np.eye(4), hermitian=True)
+ yield assert_equal, 1, matrix_rank(np.ones((4, 4)), hermitian=True)
+ yield assert_equal, 0, matrix_rank(np.zeros((4, 4)), hermitian=True)
+ # rank deficient matrix
+ I = np.eye(4)
+ I[-1, -1] = 0.
+ yield assert_equal, 3, matrix_rank(I, hermitian=True)
+ # manually supplied tolerance
+ I[-1, -1] = 1e-8
+ yield assert_equal, 4, matrix_rank(I, hermitian=True, tol=0.99e-8)
+ yield assert_equal, 3, matrix_rank(I, hermitian=True, tol=1.01e-8)
+
def test_reduced_rank():
# Test matrices with reduced rank