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))
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')
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)
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