import numpy as np
import pytest
from numpy.linalg import inv
def test_inverse_identity():
matrix = np.eye(3)
inv_matrix = inv(matrix)
np.testing.assert_allclose(inv_matrix, np.eye(3), rtol=1e-9, atol=1e-12)
def test_inverse_product():
matrix = np.array([[4.0, 7.0], [2.0, 6.0]])
inv_matrix = inv(matrix)
identity = np.dot(matrix, inv_matrix)
np.testing.assert_allclose(identity, np.eye(2), rtol=1e-9, atol=1e-12)
def test_singular_matrix():
singular_matrix = np.array([[1.0, 2.0], [2.0, 4.0]])
with pytest.raises(np.linalg.LinAlgError):
inv(singular_matrix)
def test_non_square_matrix():
non_square_matrix = np.array([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
with pytest.raises(ValueError):
inv(non_square_matrix)
def test_incorrect_type():
incorrect_type_matrix = np.array([[1.0, 2.0], [3.0, 'a']])
with pytest.raises(TypeError):
inv(incorrect_type_matrix)
def test_large_matrix():
large_matrix = np.random.rand(100, 100)
inv_large_matrix = inv(large_matrix)
identity = np.dot(large_matrix, inv_large_matrix)
np.testing.assert_allclose(identity, np.eye(100), rtol=1e-9, atol=1e-12)