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),))
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))
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)
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')))
'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':
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'))
def test_phase_gradient_gate_repr(): a = cirq.PhaseGradientGate(num_qubits=2, exponent=0.5) cirq.testing.assert_equivalent_repr(a)
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]'
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