Пример #1
0
def test_decomp2_invalid(u):
    q0, q1 = cirq.LineQubit.range(2)
    with pytest.raises(
            ValueError,
            match='cannot be decomposed into exactly 2 sqrt-iSWAP gates'):
        cirq.two_qubit_matrix_to_sqrt_iswap_operations(
            q0, q1, u, required_sqrt_iswap_count=2)
Пример #2
0
def test_decomp3_invalid():
    # All two-qubit gates can be synthesized with three SQRT_ISWAP gates
    u = cirq.unitary(cirq.X**0.2)  # Pass an invalid size unitary
    q0, q1 = cirq.LineQubit.range(2)
    with pytest.raises(ValueError,
                       match='Input must correspond to a 4x4 unitary matrix'):
        cirq.two_qubit_matrix_to_sqrt_iswap_operations(
            q0, q1, u, required_sqrt_iswap_count=3)
Пример #3
0
def test_decomp0_invalid(u):
    # Attempt to decompose other unitaries into zero SQRT_ISWAP gates
    q0, q1 = cirq.LineQubit.range(2)
    with pytest.raises(
            ValueError,
            match='cannot be decomposed into exactly 0 sqrt-iSWAP gates'):
        cirq.two_qubit_matrix_to_sqrt_iswap_operations(
            q0, q1, u, required_sqrt_iswap_count=0)
Пример #4
0
def test_all_weyl_regions(u):
    q0, q1 = cirq.LineQubit.range(2)
    ops = cirq.two_qubit_matrix_to_sqrt_iswap_operations(q0,
                                                         q1,
                                                         u,
                                                         clean_operations=True)
    assert_valid_decomp(u, ops, single_qubit_gate_types=(cirq.PhasedXZGate, ))
    ops = cirq.two_qubit_matrix_to_sqrt_iswap_operations(q0, q1, u)
    assert_valid_decomp(u, ops)
Пример #5
0
def test_decomp0(u):
    # Decompose unitaries into zero sqrt-iSWAP gates
    q0, q1 = cirq.LineQubit.range(2)
    ops = cirq.two_qubit_matrix_to_sqrt_iswap_operations(
        q0, q1, u, required_sqrt_iswap_count=0)
    assert_valid_decomp(u, ops)
    assert_specific_sqrt_iswap_count(ops, 0)
Пример #6
0
def test_decomp_sqrt_iswap_inv(u):
    q0, q1 = cirq.LineQubit.range(2)
    ops = cirq.two_qubit_matrix_to_sqrt_iswap_operations(
        q0, q1, u, use_sqrt_iswap_inv=True)
    assert_valid_decomp(u, ops, two_qubit_gate=cirq.SQRT_ISWAP_INV)
Пример #7
0
def test_decomp_optimal3(u):
    q0, q1 = cirq.LineQubit.range(2)
    ops = cirq.two_qubit_matrix_to_sqrt_iswap_operations(q0, q1, u)
    assert_valid_decomp(u, ops)
    assert_specific_sqrt_iswap_count(ops, 3)
Пример #8
0
def test_qubit_order(u):
    q0, q1 = cirq.LineQubit.range(2)
    ops = cirq.two_qubit_matrix_to_sqrt_iswap_operations(
        q1, q0, u, required_sqrt_iswap_count=2)
    assert_valid_decomp(u, ops, qubit_order=(q1, q0))
    assert_specific_sqrt_iswap_count(ops, 2)
Пример #9
0
def test_decomp1(u):
    q0, q1 = cirq.LineQubit.range(2)
    ops = cirq.two_qubit_matrix_to_sqrt_iswap_operations(
        q0, q1, u, required_sqrt_iswap_count=1)
    assert_valid_decomp(u, ops)
    assert_specific_sqrt_iswap_count(ops, 1)
Пример #10
0
def test_invalid_required_sqrt_iswap_count(cnt):
    u = TWO_SQRT_ISWAP_UNITARIES[0]
    q0, q1 = cirq.LineQubit.range(2)
    with pytest.raises(ValueError, match='required_sqrt_iswap_count'):
        cirq.two_qubit_matrix_to_sqrt_iswap_operations(
            q0, q1, u, required_sqrt_iswap_count=cnt)
Пример #11
0
def test_all_weyl_regions(u):
    q0, q1 = cirq.LineQubit.range(2)
    ops = cirq.two_qubit_matrix_to_sqrt_iswap_operations(q0, q1, u)
    assert_valid_decomp(u, ops)