Exemple #1
0
def circuit(p, alpha, tampered_wire):
    """A quantum circuit that will be able to identify bitflip errors.

    DO NOT MODIFY any already-written lines in this function.

    Args:
        p (float): The bit flip probability
        alpha (float): The parameter used to calculate `density_matrix(alpha)`
        tampered_wire (int): The wire that may or may not be flipped (zero-index)

    Returns:
        Some expectation value, state, probs, ... you decide!
    """

    qml.QubitDensityMatrix(density_matrix(alpha), wires=[0, 1, 2])

    # QHACK #

    # put any input processing gates here
    qml.CNOT(wires=(0,1))
    qml.CNOT(wires=(0,2))

    qml.BitFlip(p, wires=int(tampered_wire))

    # put any gates here after the bitflip error has occurred
    ### No gates after bitflip

    # return something!
    return qml.density_matrix((0,1,2))
Exemple #2
0
 def circuit_without_tardigrade():
     """ Circuit without Tardigrade
     Prepares |010> + |100>
     """
     qml.Hadamard(wires=0)
     qml.PauliX(wires=1)
     qml.CNOT(wires=(0, 1))
     return qml.density_matrix(wires=1)
Exemple #3
0
 def circuit_with_tardigrade(theta):
     """ Circuit with Tardigrade 
     Prepares cos(theta/2) |010> + sin(theta/2) |001> + |100>
     """
     qml.Hadamard(wires=0)
     qml.CRY(np.pi + theta, wires=(0, 1))
     qml.CNOT(wires=(0, 2))
     qml.CNOT(wires=(1, 2))
     qml.PauliX(wires=0)
     return qml.density_matrix(wires=1)
Exemple #4
0
    def circuit(inputs, w1, w2, w3, w4, w5, w6, w7):
        """Sample circuit to be used for testing density_matrix() return type."""
        qml.templates.AngleEmbedding(inputs, wires=list(range(n_qubits)))
        qml.templates.StronglyEntanglingLayers(w1, wires=list(range(n_qubits)))
        qml.RX(w2[0], wires=0 % n_qubits)
        qml.RX(w3, wires=1 % n_qubits)
        qml.Rot(*w4, wires=2 % n_qubits)
        qml.templates.StronglyEntanglingLayers(w5, wires=list(range(n_qubits)))
        qml.Rot(*w6, wires=3 % n_qubits)
        qml.RX(w7, wires=4 % n_qubits)

        # Using np.log2() here because output_dim is sampled from varying the number of
        # qubits (say, nq) and calculated as (2 ** nq, 2 ** nq)
        return qml.density_matrix(wires=[i for i in range(int(np.log2(output_dim[0])))])
 def func():
     qml.Hadamard(0)
     qml.CNOT(wires=[0, 1])
     return qml.density_matrix(wires=[0, 1])
 def circuit():
     qml.Hadamard(wires=0)
     qml.CNOT(wires=[0, 1])
     qml.CRX(np.pi / 2, wires=[0, 1])
     return qml.density_matrix(wires=[0])
Exemple #7
0
 def circuit(features, weights):
     self.apply(features, weights)
     return qml.density_matrix(self.wires)