예제 #1
0
def test_decomposite3(basis):
    p = random.random()
    q = random.random()
    r = random.random()
    s = random.random()

    c = Circuit().ry(p)[1].rz(q)[1].ry(r)[0].rz(s)[0].zz[0, 1].h[2].ry(
        r)[0].rz(s)[0].ry(p)[1].rz(q)[1]
    v1 = c.run()
    v2 = c.run_with_2q_decomposition(basis=basis).run()
    assert np.allclose(ignore_global_phase(v1), ignore_global_phase(v2))
예제 #2
0
def test_decomposite3(basis):
    p = random.random()
    q = random.random()
    r = random.random()
    s = random.random()

    c = Circuit().ry(p)[1].rz(q)[1].ry(r)[0].rz(s)[0].zz[0, 1].h[2].ry(
        r)[0].rz(s)[0].ry(p)[1].rz(q)[1]
    v1 = c.run()
    v2 = c.run_with_2q_decomposition(basis=basis).run()
    assert is_vec_same(v1, v2, ignore_global='ab')
예제 #3
0
def test_mat1_decomposite(backend):
    if backend == 'qgate':
        pytest.xfail('mat1 gate for qgate is unimplemented.')
    p = random.random() * math.pi
    q = random.random() * math.pi
    r = random.random() * math.pi
    a1 = Circuit().u3(p, q, r)[0].run(backend=backend)
    a2 = Circuit().x[0].u3(p, q, r)[0].run(backend=backend)
    a = np.hstack([a1.reshape((2, 1)), a2.reshape((2, 1))])

    c = Circuit().mat1(a)[2, 4]
    v1 = c.run(backend=backend)
    v2 = c.run_with_2q_decomposition(
        basis='cx', mat1_decomposer=u3_decomposer).run(backend=backend)
    assert is_vec_same(v1, v2)
예제 #4
0
 def run(gates: List[Operation],
         n_qubits: int,
         transpile: Optional[List[str]] = None,
         avoid_empty_circuit: bool = True) -> BraketCircuit:
     if transpile:
         c = BlueqatCircuit(n_qubits=n_qubits, ops=gates)
         c = c.run_with_2q_decomposition(basis=transpile,
                                         mat1_decomposer=ryrz_decomposer)
         gates = c.ops
     if len(gates) == 0 and avoid_empty_circuit:
         if n_qubits == 0:
             raise ValueError('0 qubits circuit is always empty.')
         gates = BlueqatCircuit().i[n_qubits - 1].ops
     bc = BraketCircuit()
     for g in gates:
         _apply(g, n_qubits, bc)
     return bc