Chris@87: """ Test functions for linalg module Chris@87: """ Chris@87: from __future__ import division, absolute_import, print_function Chris@87: Chris@87: Chris@87: from numpy.testing import * Chris@87: import numpy as np Chris@87: from numpy import linalg, arange, float64, array, dot, transpose Chris@87: Chris@87: rlevel = 1 Chris@87: Chris@87: class TestRegression(TestCase): Chris@87: def test_eig_build(self, level = rlevel): Chris@87: """Ticket #652""" Chris@87: rva = array([1.03221168e+02 +0.j, Chris@87: -1.91843603e+01 +0.j, Chris@87: -6.04004526e-01+15.84422474j, Chris@87: -6.04004526e-01-15.84422474j, Chris@87: -1.13692929e+01 +0.j, Chris@87: -6.57612485e-01+10.41755503j, Chris@87: -6.57612485e-01-10.41755503j, Chris@87: 1.82126812e+01 +0.j, Chris@87: 1.06011014e+01 +0.j, Chris@87: 7.80732773e+00 +0.j, Chris@87: -7.65390898e-01 +0.j, Chris@87: 1.51971555e-15 +0.j, Chris@87: -1.51308713e-15 +0.j]) Chris@87: a = arange(13*13, dtype = float64) Chris@87: a.shape = (13, 13) Chris@87: a = a%17 Chris@87: va, ve = linalg.eig(a) Chris@87: va.sort() Chris@87: rva.sort() Chris@87: assert_array_almost_equal(va, rva) Chris@87: Chris@87: def test_eigh_build(self, level = rlevel): Chris@87: """Ticket 662.""" Chris@87: rvals = [68.60568999, 89.57756725, 106.67185574] Chris@87: Chris@87: cov = array([[ 77.70273908, 3.51489954, 15.64602427], Chris@87: [3.51489954, 88.97013878, -1.07431931], Chris@87: [15.64602427, -1.07431931, 98.18223512]]) Chris@87: Chris@87: vals, vecs = linalg.eigh(cov) Chris@87: assert_array_almost_equal(vals, rvals) Chris@87: Chris@87: def test_svd_build(self, level = rlevel): Chris@87: """Ticket 627.""" Chris@87: a = array([[ 0., 1.], [ 1., 1.], [ 2., 1.], [ 3., 1.]]) Chris@87: m, n = a.shape Chris@87: u, s, vh = linalg.svd(a) Chris@87: Chris@87: b = dot(transpose(u[:, n:]), a) Chris@87: Chris@87: assert_array_almost_equal(b, np.zeros((2, 2))) Chris@87: Chris@87: def test_norm_vector_badarg(self): Chris@87: """Regression for #786: Froebenius norm for vectors raises Chris@87: TypeError.""" Chris@87: self.assertRaises(ValueError, linalg.norm, array([1., 2., 3.]), 'fro') Chris@87: Chris@87: def test_lapack_endian(self): Chris@87: # For bug #1482 Chris@87: a = array([[5.7998084, -2.1825367 ], Chris@87: [-2.1825367, 9.85910595]], dtype='>f8') Chris@87: b = array(a, dtype=' 0.5) Chris@87: assert_equal(c, 1) Chris@87: assert_equal(np.linalg.matrix_rank(a), 1) Chris@87: assert_array_less(1, np.linalg.norm(a, ord=2)) Chris@87: Chris@87: Chris@87: if __name__ == '__main__': Chris@87: run_module_suite()