def test_multiply(self) -> None: dimension = 2 identity = Unitary.identity(dimension) product = Unitary(dimension) product = product.left_multiply(UnitaryDefinitions.sigmax()) assert product.close_to(UnitaryDefinitions.sigmax()) product = product.right_multiply(UnitaryDefinitions.sigmay()) assert product.close_to(UnitaryDefinitions.sigmaz()) product = product.left_multiply(UnitaryDefinitions.sigmaz()) assert product.close_to(identity)
def test_inverse_fixed(self) -> None: dimension = 2 operation_name = 'U' unitary = Unitary(dimension, np.array([[np.exp(1j * np.pi / 4), 0], [0, 1j]]), operation_name) inverse = unitary.inverse() assert unitary.left_multiply(inverse).close_to(np.identity(dimension)) assert unitary.right_multiply(inverse).close_to(np.identity(dimension)) assert inverse.get_display_name() == 'U†' double_inverse = inverse.inverse() assert double_inverse.get_display_name() == 'U' assert unitary.close_to(double_inverse)
def test_default(self) -> None: dimension = 4 unitary = Unitary(dimension) assert unitary.get_dimension() == dimension assert unitary.close_to(np.identity(dimension))