Exemplo n.º 1
0
def test_frequency_space_gates():
    a, b, c = cirq.LineQubit.range(3)

    assert_url_to_circuit_returns('{"cols":[["QFT3"]]}',
                                  cirq.Circuit(cirq.QFT(a, b, c),))
    assert_url_to_circuit_returns(
        '{"cols":[["QFT†3"]]}', cirq.Circuit(cirq.inverse(cirq.QFT(a, b, c)),))

    assert_url_to_circuit_returns(
        '{"cols":[["PhaseGradient3"]]}',
        cirq.Circuit(
            cirq.PhaseGradientGate(num_qubits=3, exponent=0.5)(a, b, c),))
    assert_url_to_circuit_returns(
        '{"cols":[["PhaseUngradient3"]]}',
        cirq.Circuit(
            cirq.PhaseGradientGate(num_qubits=3, exponent=-0.5)(a, b, c),))

    t = sympy.Symbol('t')
    assert_url_to_circuit_returns(
        '{"cols":[["grad^t2"]]}',
        cirq.Circuit(
            cirq.PhaseGradientGate(num_qubits=2, exponent=2 * t)(a, b),))
    assert_url_to_circuit_returns(
        '{"cols":[["grad^t3"]]}',
        cirq.Circuit(
            cirq.PhaseGradientGate(num_qubits=3, exponent=4 * t)(a, b, c),))
    assert_url_to_circuit_returns(
        '{"cols":[["grad^-t3"]]}',
        cirq.Circuit(
            cirq.PhaseGradientGate(num_qubits=3, exponent=-4 * t)(a, b, c),))
Exemplo n.º 2
0
def test_phase_gradient():
    np.testing.assert_allclose(
        cirq.unitary(cirq.PhaseGradientGate(num_qubits=2, exponent=1)),
        np.diag([1, 1j, -1, -1j]))

    for k in range(4):
        cirq.testing.assert_implements_consistent_protocols(
            cirq.PhaseGradientGate(num_qubits=k, exponent=1))
Exemplo n.º 3
0
def test_phase_gradient_symbolic(resolve_fn):
    a = cirq.PhaseGradientGate(num_qubits=2, exponent=0.5)
    b = cirq.PhaseGradientGate(num_qubits=2, exponent=sympy.Symbol('t'))
    assert not cirq.is_parameterized(a)
    assert cirq.is_parameterized(b)
    assert cirq.has_unitary(a)
    assert not cirq.has_unitary(b)
    assert resolve_fn(a, {'t': 0.25}) is a
    assert resolve_fn(b, {'t': 0.5}) == a
    assert resolve_fn(b, {'t': 0.25}) == cirq.PhaseGradientGate(num_qubits=2, exponent=0.25)
Exemplo n.º 4
0
def generate_all_frequency_space_cell_makers() -> Iterator[CellMaker]:
    # Frequency space.
    yield from _family("QFT", lambda n: cirq.QuantumFourierTransformGate(n))
    yield from _family(
        "QFT†", lambda n: cirq.inverse(cirq.QuantumFourierTransformGate(n)))
    yield from _family(
        "PhaseGradient",
        lambda n: cirq.PhaseGradientGate(num_qubits=n, exponent=0.5))
    yield from _family(
        "PhaseUngradient",
        lambda n: cirq.PhaseGradientGate(num_qubits=n, exponent=-0.5))
    yield from _family(
        "grad^t", lambda n: cirq.PhaseGradientGate(
            num_qubits=n, exponent=2**(n - 1) * sympy.Symbol('t')))
    yield from _family(
        "grad^-t", lambda n: cirq.PhaseGradientGate(
            num_qubits=n, exponent=-2**(n - 1) * sympy.Symbol('t')))
Exemplo n.º 5
0
 'NamedQubit':
 cirq.NamedQubit('hi mom'),
 'PauliString': [
     cirq.PauliString({
         Q0: cirq.X,
         Q1: cirq.Y,
         Q2: cirq.Z
     }),
     cirq.X(Q0) * cirq.Y(Q1) * 123
 ],
 'PhaseDampingChannel':
 cirq.PhaseDampingChannel(0.5),
 'PhaseFlipChannel':
 cirq.PhaseFlipChannel(0.5),
 'PhaseGradientGate':
 cirq.PhaseGradientGate(num_qubits=3, exponent=0.235),
 'PhasedISwapPowGate':
 cirq.PhasedISwapPowGate(phase_exponent=0.1, exponent=0.2),
 'PhasedXPowGate':
 cirq.PhasedXPowGate(phase_exponent=0.123,
                     exponent=0.456,
                     global_shift=0.789),
 'QuantumFourierTransformGate':
 cirq.QuantumFourierTransformGate(num_qubits=2, without_reverse=True),
 'ResetChannel':
 cirq.ResetChannel(),
 'X':
 cirq.X,
 'Y':
 cirq.Y,
 'Z':
Exemplo n.º 6
0
def test_pow():
    a = cirq.PhaseGradientGate(num_qubits=2, exponent=0.5)
    assert a**0.5 == cirq.PhaseGradientGate(num_qubits=2, exponent=0.25)
    assert a**sympy.Symbol('t') == cirq.PhaseGradientGate(num_qubits=2,
                                                          exponent=0.5 *
                                                          sympy.Symbol('t'))
Exemplo n.º 7
0
def test_phase_gradient_gate_repr():
    a = cirq.PhaseGradientGate(num_qubits=2, exponent=0.5)
    cirq.testing.assert_equivalent_repr(a)
Exemplo n.º 8
0
def test_str():
    assert str(cirq.PhaseGradientGate(num_qubits=2,
                                      exponent=0.5)) == 'Grad[2]^0.5'
    assert str(cirq.PhaseGradientGate(num_qubits=2, exponent=1)) == 'Grad[2]'
Exemplo n.º 9
0
def test_setters_deprecated():
    gate = cirq.PhaseGradientGate(num_qubits=1, exponent=0.1)
    assert gate.exponent == 0.1
    with cirq.testing.assert_deprecated('mutators', deadline='v0.15'):
        gate.exponent = 0.2
        assert gate.exponent == 0.2