コード例 #1
0
def test_circuit_unitary(backend):
    from qibo import matrices
    c = Circuit(2)
    c.add(gates.H(0))
    c.add(gates.H(1))
    c.add(gates.CNOT(0, 1))
    c.add(gates.X(0))
    c.add(gates.Y(1))
    h = np.kron(matrices.H, matrices.H)
    target_matrix = np.kron(matrices.X, matrices.Y) @ matrices.CNOT @ h
    K.assert_allclose(c.unitary(), target_matrix)
コード例 #2
0
def test_circuit_unitary_bigger(backend):
    from qibo import matrices
    c = Circuit(4)
    c.add(gates.H(i) for i in range(4))
    c.add(gates.CNOT(0, 1))
    c.add(gates.CZ(1, 2))
    c.add(gates.CNOT(0, 3))
    h = np.kron(matrices.H, matrices.H)
    h = np.kron(h, h)
    m1 = np.kron(matrices.CNOT, np.eye(4))
    m2 = np.kron(np.kron(np.eye(2), matrices.CZ), np.eye(2))
    m3 = np.kron(matrices.CNOT, np.eye(4)).reshape(8 * (2, ))
    m3 = np.transpose(m3, [0, 2, 3, 1, 4, 6, 7, 5]).reshape((16, 16))
    target_matrix = m3 @ m2 @ m1 @ h
    K.assert_allclose(c.unitary(), target_matrix)