Ejemplo n.º 1
0
 def known_qasm_output(self,
                       qubits: Tuple[raw_types.QubitId, ...],
                       args: gate_features.QasmOutputArgs) -> Optional[str]:
     if self.half_turns != 1:
         return None  # Don't have an equivalent gate in QASM
     args.validate_version('2.0')
     return args.format('cz {0},{1};\n', qubits[0], qubits[1])
Ejemplo n.º 2
0
 def known_qasm_output(self, qubits: Tuple[raw_types.QubitId, ...],
                       args: gate_features.QasmOutputArgs) -> Optional[str]:
     args.validate_version('2.0')
     if self.half_turns == 1:
         return args.format('z {0};\n', qubits[0])
     else:
         return args.format('rz({0:half_turns}) {1};\n', self.half_turns,
                            qubits[0])
Ejemplo n.º 3
0
    def known_qasm_output(self, qubits: Tuple[raw_types.QubitId, ...],
                          args: gate_features.QasmOutputArgs) -> Optional[str]:
        if self._exponent != 1:
            return None

        args.validate_version('2.0')
        return args.format('ccx {0},{1},{2};\n', qubits[0], qubits[1],
                           qubits[2])
Ejemplo n.º 4
0
 def known_qasm_output(self,
                       qubits: Tuple[raw_types.QubitId, ...],
                       args: gate_features.QasmOutputArgs) -> Optional[str]:
     args.validate_version('2.0')
     lines = [
         args.format('h {0};\n', qubits[2]),
         args.format('ccx {0},{1},{2};\n', qubits[0], qubits[1], qubits[2]),
         args.format('h {0};\n', qubits[2])]
     return ''.join(lines)
Ejemplo n.º 5
0
 def known_qasm_output(self,
                       qubits: Tuple[raw_types.QubitId, ...],
                       args: gate_features.QasmOutputArgs) -> Optional[str]:
     args.validate_version('2.0')
     if self.half_turns == 1:
         return args.format('z {0};\n', qubits[0])
     else:
         return args.format('rz({0:half_turns}) {1};\n',
                            self.half_turns, qubits[0])
Ejemplo n.º 6
0
 def known_qasm_output(self,
                       qubits: Tuple[raw_types.QubitId, ...],
                       args: gate_features.QasmOutputArgs) -> Optional[str]:
     args.validate_version('2.0')
     lines = [
         args.format('h {0};\n', qubits[2]),
         args.format('ccx {0},{1},{2};\n', qubits[0], qubits[1], qubits[2]),
         args.format('h {0};\n', qubits[2])]
     return ''.join(lines)
Ejemplo n.º 7
0
 def known_qasm_output(self,
                       qubits: Tuple[raw_types.QubitId, ...],
                       args: gate_features.QasmOutputArgs) -> Optional[str]:
     args.validate_version('2.0')
     invert_mask = self.invert_mask
     if len(invert_mask) < len(qubits):
         invert_mask = (invert_mask
                        + (False,) * (len(qubits) - len(invert_mask)))
     lines = []
     for i, (qubit, inv) in enumerate(zip(qubits, invert_mask)):
         if inv:
             lines.append(args.format(
                     'x {0};  // Invert the following measurement\n', qubit))
         lines.append(args.format('measure {0} -> {1:meas}[{2}];\n',
                                  qubit, self.key, i))
     return ''.join(lines)
Ejemplo n.º 8
0
 def known_qasm_output(self, qubits: Tuple[raw_types.QubitId, ...],
                       args: gate_features.QasmOutputArgs) -> Optional[str]:
     args.validate_version('2.0')
     return args.format('h {0};\n', qubits[0])
Ejemplo n.º 9
0
 def known_qasm_output(self,
                       qubits: Tuple[raw_types.QubitId, ...],
                       args: gate_features.QasmOutputArgs) -> Optional[str]:
     args.validate_version('2.0')
     return args.format('h {0};\n', qubits[0])