Example #1
0
def test_takagi_factorization_real_neg_imag_neg(rank, dtype):
    a = get_random_complex_symmetric_matrices(10, rank, dtype)
    a = sm.to_complex(a.real * -1, a.imag * -1)

    eigenvalues, s = sm.takagi_eig(a)

    assert_sds_equals_a(s, eigenvalues, a)
Example #2
0
def assert_sds_equals_a(s, eigenvalues, a, atol=1e-5, rtol=1e-5):
    diagonal = torch.diag_embed(eigenvalues)
    diagonal = sm.to_complex(diagonal, torch.zeros_like(diagonal))
    np.testing.assert_allclose(
        a,
        s.conj() @ diagonal @ s.conj().transpose(-1, -2),
        atol=atol,
        rtol=rtol)
Example #3
0
def test_takagi_factorization_imag_identity(rank, dtype):
    a = sm.identity_like(get_random_complex_symmetric_matrices(
        10, rank, dtype))
    a = sm.to_complex(a.imag, a.real)

    eigenvalues, s = sm.takagi_eig(a)

    assert_sds_equals_a(s, eigenvalues, a)
Example #4
0
def test_takagi_factorization_idem_takagi_fact():
    real_a = torch.Tensor([[[0.222662581850819, 0.98644223215106],
                            [0.98644223215106, 0.27907583542894]]])
    imag_a = torch.Tensor([[[0.204990135642257, 1.28603437847092],
                            [1.28603437847092, 1.18098457998164]]])
    a = sm.to_complex(real_a, imag_a)

    eigenvalues, s = sm.takagi_eig(a)

    assert_sds_equals_a(s, eigenvalues, a)