Exemplo n.º 1
0
 def test_call_with_cast_to_complex_without_umfpack(self):
     use_solver(useUmfpack=False)
     solve = factorized(self.A)
     b = random.rand(4)
     for t in [np.complex64, np.complex128]:
         with assert_raises(TypeError, match="Cannot cast array data"):
             solve(b.astype(t))
Exemplo n.º 2
0
    def _check_non_singular(self):
        # Make a diagonal dominant, to make sure it is not singular
        n = 5
        a = csc_matrix(random.rand(n, n))
        b = ones(n)

        expected = splu(a).solve(b)
        assert_array_almost_equal(factorized(a)(b), expected)
Exemplo n.º 3
0
 def test_bug_8278(self):
     check_free_memory(8000)
     use_solver(useUmfpack=True)
     A, b = setup_bug_8278()
     A = A.tocsc()
     f = factorized(A)
     x = f(b)
     assert_array_almost_equal(A @ x, b)
Exemplo n.º 4
0
    def test_assume_sorted_indices_flag(self):
        # a sparse matrix with unsorted indices
        unsorted_inds = np.array([2, 0, 1, 0])
        data = np.array([10, 16, 5, 0.4])
        indptr = np.array([0, 1, 2, 4])
        A = csc_matrix((data, unsorted_inds, indptr), (3, 3))
        b = ones(3)

        # should raise when incorrectly assuming indices are sorted
        use_solver(useUmfpack=True, assumeSortedIndices=True)
        with assert_raises(RuntimeError, match="UMFPACK_ERROR_invalid_matrix"):
            factorized(A)

        # should sort indices and succeed when not assuming indices are sorted
        use_solver(useUmfpack=True, assumeSortedIndices=False)
        expected = splu(A.copy()).solve(b)

        assert_equal(A.has_sorted_indices, 0)
        assert_array_almost_equal(factorized(A)(b), expected)
Exemplo n.º 5
0
    def test_call_with_incorrectly_sized_matrix_with_umfpack(self):
        use_solver(useUmfpack=True)
        solve = factorized(self.A)
        b = random.rand(4)
        B = random.rand(4, 3)
        BB = random.rand(self.n, 3, 9)

        # does not raise
        solve(b)
        msg = "object too deep for desired array"
        with assert_raises(ValueError, match=msg):
            solve(B)
        with assert_raises(ValueError, match=msg):
            solve(BB)
Exemplo n.º 6
0
    def test_call_with_incorrectly_sized_matrix_without_umfpack(self):
        use_solver(useUmfpack=False)
        solve = factorized(self.A)
        b = random.rand(4)
        B = random.rand(4, 3)
        BB = random.rand(self.n, 3, 9)

        with assert_raises(ValueError, match="is of incompatible size"):
            solve(b)
        with assert_raises(ValueError, match="is of incompatible size"):
            solve(B)
        with assert_raises(ValueError,
                           match="object too deep for desired array"):
            solve(BB)
Exemplo n.º 7
0
 def _check_singular(self):
     A = csc_matrix((5, 5), dtype='d')
     b = ones(5)
     assert_array_almost_equal(0. * b, factorized(A)(b))
Exemplo n.º 8
0
 def test_call_with_cast_to_complex_with_umfpack(self):
     use_solver(useUmfpack=True)
     solve = factorized(self.A)
     b = random.rand(4)
     for t in [np.complex64, np.complex128]:
         assert_warns(np.ComplexWarning, solve, b.astype(t))
Exemplo n.º 9
0
 def test_factorizes_nonsquare_matrix_with_umfpack(self):
     use_solver(useUmfpack=True)
     # does not raise
     factorized(self.A[:, :4])
Exemplo n.º 10
0
 def test_cannot_factorize_nonsquare_matrix_without_umfpack(self):
     use_solver(useUmfpack=False)
     msg = "can only factor square matrices"
     with assert_raises(ValueError, match=msg):
         factorized(self.A[:, :4])