def test_sin(): x = random.random() assert_delta((np.sin(x * np.pi)), (np.sin((x * np.pi) + (2 * np.pi)))) return "sin({})={}\nsin(2pi+{})={}\n{}".format( x * np.pi, round(np.sin(x * np.pi), 6), x * np.pi, round(np.sin((x * np.pi) + 2 * np.pi), 6), "They are equal so the test passes")
def test_cos(): x = random.random() assert_delta((np.cos(x * np.pi)), (np.cos(x * np.pi + (2 * np.pi)))) return "cos({})={}\ncos(2pi+{})={}\n{}".format( x * np.pi, round(np.cos(x * np.pi), 6), x * np.pi, round(np.cos((x * np.pi) + 2 * np.pi), 6), "They are equal so the test passes")
def test_determinant_2(): A = gen_matrix(25, 25, square=True) B = np.copy(A) scale_factor = random() B[randrange(0, B.shape[0] ), :] *= scale_factor # scale a random row by scale_factor assert_delta(scale_factor * np.linalg.det(A), np.linalg.det(B))
def test_norm_4(): a = random() * 2 - 1 dim = randrange(1, 5) diag = np.identity(dim) * a norm = np.linalg.norm(diag) assert_delta(norm, np.abs(a) * np.sqrt(dim)) return """A =\n{}\n|a|*sqrt(dimension) = |{}|*sqrt({}) = {}\nNorm = {} They are equal so the test passes""".format(diag, a, dim, np.abs(a) * np.sqrt(dim), norm)
def test_determinant_1(): # determinant can become quite large for large matrices # throwing off assert_delta, so the dimension must be restricted to 50 A = gen_matrix(25, 25, square=True) B = np.copy(A) # swap two random rows in B row1, row2 = randrange(0, B.shape[0]), randrange(0, B.shape[0]) B[[row1, row2]] = B[[row2, row1]] assert_delta(abs(np.linalg.det(A)), abs(np.linalg.det(B)))
def test_norm_2(): A = gen_matrix(100, 100) scalar = random() * 2 - 1 # random number on interval [-1, 1] assert_delta(np.linalg.norm(scalar * A), abs(scalar) * np.linalg.norm(A))
def test_norm_1(): A = gen_matrix(100, 100) assert_delta(np.linalg.norm(A), np.linalg.norm(A.T))
def test_determinant_3(): A = gen_matrix(25, 25, square=True, non_singular=True) B = np.linalg.inv(A) assert_delta(np.linalg.det(A), 1 / np.linalg.det(B))
def test_assert_delta_1(x): a = random() b = a + 0.00019 * (random() - 0.5) assert_delta(a, b, delta=0.0001) return "{} = {} within a delta of .0001".format(a, b)
def test_assert_delta_2(x): a = random() b = a + randrange(1, 100) with pytest.raises(AssertionError): assert_delta(a, a + b) return "{} != {} within a delta of .0001".format(a, b)
def test_square_root_2(): x = random.uniform(1, 100.0) assert_delta(x, (np.sqrt(x)**2))
def test_arctan(): x = random.random() assert_delta((np.tan(np.arctan(x))), x)
def test_arccos(): x = random.random() assert_delta((np.cos(np.arccos(x))), x)
def test_metaTan(): x = random.random() assert_delta((np.tan(x * np.pi)), -(np.tan((2 * np.pi) - (x * np.pi))))
def test_metaCos(): x = random.random() assert_delta((np.cos(x * np.pi)), (np.cos((2 * np.pi) - (x * np.pi))))