def test_str(): assert str(cirq.X) == 'X' assert str(cirq.X**0.5) == 'X**0.5' assert str(cirq.rx(np.pi)) == 'Rx(π)' assert str(cirq.rx(0.5 * np.pi)) == 'Rx(0.5π)' assert str(cirq.XPowGate( global_shift=-0.25)) == 'XPowGate(exponent=1.0, global_shift=-0.25)' assert str(cirq.Z) == 'Z' assert str(cirq.Z**0.5) == 'S' assert str(cirq.Z**0.125) == 'Z**0.125' assert str(cirq.rz(np.pi)) == 'Rz(π)' assert str(cirq.rz(1.4 * np.pi)) == 'Rz(1.4π)' assert str(cirq.ZPowGate( global_shift=0.25)) == 'ZPowGate(exponent=1.0, global_shift=0.25)' assert str(cirq.S) == 'S' assert str(cirq.S**-1) == 'S**-1' assert str(cirq.T) == 'T' assert str(cirq.T**-1) == 'T**-1' assert str(cirq.Y) == 'Y' assert str(cirq.Y**0.5) == 'Y**0.5' assert str(cirq.ry(np.pi)) == 'Ry(π)' assert str(cirq.ry(3.14 * np.pi)) == 'Ry(3.14π)' assert (str(cirq.YPowGate( exponent=2, global_shift=-0.25)) == 'YPowGate(exponent=2, global_shift=-0.25)') assert str(cirq.CX) == 'CNOT' assert str(cirq.CNOT**0.5) == 'CNOT**0.5' assert str(cirq.CZ) == 'CZ' assert str(cirq.CZ**0.5) == 'CZ**0.5' assert str(cirq.cphase(np.pi)) == 'CZ' assert str(cirq.cphase(np.pi / 2)) == 'CZ**0.5'
def test_text_diagrams(): a = cirq.NamedQubit('a') b = cirq.NamedQubit('b') circuit = cirq.Circuit(cirq.X(a), cirq.Y(a), cirq.Z(a), cirq.Z(a)**sympy.Symbol('x'), cirq.rx(sympy.Symbol('x')).on(a), cirq.CZ(a, b), cirq.CNOT(a, b), cirq.CNOT(b, a), cirq.H(a)**0.5, cirq.I(a), cirq.IdentityGate(2)(a, b), cirq.cphase(sympy.pi * sympy.Symbol('t')).on(a, b)) cirq.testing.assert_has_diagram( circuit, """ a: ───X───Y───Z───Z^x───Rx(x)───@───@───X───H^0.5───I───I───@───── │ │ │ │ │ b: ─────────────────────────────@───X───@───────────────I───@^t─── """) cirq.testing.assert_has_diagram(circuit, """ a: ---X---Y---Z---Z^x---Rx(x)---@---@---X---H^0.5---I---I---@----- | | | | | b: -----------------------------@---X---@---------------I---@^t--- """, use_unicode_characters=False)
def test_parameterized_cphase(): assert cirq.cphase(sympy.pi) == cirq.CZ assert cirq.cphase(sympy.pi / 2) == cirq.CZ**0.5
def test_cphase_unitary(angle_rads, expected_unitary): np.testing.assert_allclose(cirq.unitary(cirq.cphase(angle_rads)), expected_unitary)