Define a detector over one or more measurement results. A detector is a parity constraint: under noise-free execution the XOR of the referenced measurements is deterministic. Each call defines one detector. Arguments are :class:`QuakeValue` handles returned by ``kern
(self, *measurements)
| 1259 | return qv.mlirValue |
| 1260 | |
| 1261 | def detector(self, *measurements): |
| 1262 | """Define a detector over one or more measurement results. |
| 1263 | |
| 1264 | A detector is a parity constraint: under noise-free execution the |
| 1265 | XOR of the referenced measurements is deterministic. Each call |
| 1266 | defines one detector. Arguments are :class:`QuakeValue` handles |
| 1267 | returned by ``kernel.mz`` / ``mx`` / ``my`` (scalar handles or |
| 1268 | handle vectors). |
| 1269 | """ |
| 1270 | if not measurements: |
| 1271 | emitFatalError("kernel.detector requires at least one " |
| 1272 | "cudaq.measure_handle argument") |
| 1273 | with self.ctx, self.insertPoint, self.loc: |
| 1274 | values = [ |
| 1275 | self.__qecOperandValue(m, "detector") for m in measurements |
| 1276 | ] |
| 1277 | qec.DetectorOp(values) |
| 1278 | |
| 1279 | def logical_observable(self, *measurements, observable_index=0): |
| 1280 | """Define a logical observable over one or more measurement results. |