Esempio n. 1
0
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'
Esempio n. 2
0
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)
Esempio n. 3
0
def test_parameterized_cphase():
    assert cirq.cphase(sympy.pi) == cirq.CZ
    assert cirq.cphase(sympy.pi / 2) == cirq.CZ**0.5
Esempio n. 4
0
def test_cphase_unitary(angle_rads, expected_unitary):
    np.testing.assert_allclose(cirq.unitary(cirq.cphase(angle_rads)),
                               expected_unitary)