summaryrefslogtreecommitdiff
path: root/numpy/linalg/tests/test_regression.py
blob: 1335643bb60b2281984bd0e26f830000d91584e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
""" Test functions for linalg module
"""

from numpy.testing import *
set_package_path()
import numpy as np
from numpy import linalg, arange, float64, array, dot, transpose
restore_path()

rlevel = 1

class TestRegression(NumpyTestCase):
    def test_eig_build(self, level = rlevel):
        """Ticket #652"""
        rva = [1.03221168e+02 +0.j,
               -1.91843603e+01 +0.j,
               -6.04004526e-01+15.84422474j,
               -6.04004526e-01-15.84422474j,
               -1.13692929e+01 +0.j,
               -6.57612485e-01+10.41755503j,
               -6.57612485e-01-10.41755503j,
               1.82126812e+01 +0.j,
               1.06011014e+01 +0.j ,
               7.80732773e+00 +0.j ,
               -7.65390898e-01 +0.j,
               1.51971555e-15 +0.j ,
               -1.51308713e-15 +0.j]
        a = arange(13*13, dtype = float64)
        a.shape = (13,13)
        a = a%17
        va, ve = linalg.eig(a)
        assert_array_almost_equal(va, rva)

    def test_eigh_build(self, level = rlevel):
        """Ticket 662."""
        rvals = [68.60568999, 89.57756725, 106.67185574]

        cov = array([[ 77.70273908,   3.51489954,  15.64602427],
                     [3.51489954,  88.97013878,  -1.07431931],
                     [15.64602427,  -1.07431931,  98.18223512]])

        vals, vecs = linalg.eigh(cov)
        assert_array_almost_equal(vals, rvals)

    def test_svd_build(self, level = rlevel):
        """Ticket 627."""
        a = array([[ 0., 1.], [ 1., 1.], [ 2., 1.], [ 3., 1.]])
        m, n = a.shape
        u, s, vh = linalg.svd(a)

        b = dot(transpose(u[:, n:]), a)

        assert_array_almost_equal(b, np.zeros((2, 2)))

if __name__ == '__main__':
    NumpyTest().run()