Exemplo n.º 1
0
def recompose_so4(a: np.ndarray, b: np.ndarray) -> np.ndarray:
    assert a.shape == (2, 2)
    assert b.shape == (2, 2)
    assert linalg.is_special_unitary(a)
    assert linalg.is_special_unitary(b)

    magic = np.array([[1, 0, 0, 1j], [0, 1j, 1, 0], [0, 1j, -1, 0],
                      [1, 0, 0, -1j]]) * np.sqrt(0.5)
    result = np.real(
        combinators.dot(np.conj(magic.T), linalg.kron(a, b), magic))
    assert linalg.is_orthogonal(result)
    return result
Exemplo n.º 2
0
def test_random_orthogonal():
    o1 = random_orthogonal(2)
    o2 = random_orthogonal(2)
    assert is_orthogonal(o1)
    assert is_orthogonal(o2)
    assert not np.allclose(o1, o2)