MCPcopy Create free account
hub / github.com/NVIDIA/cuda-quantum / __qecOperandValue

Method __qecOperandValue

python/cudaq/kernel/kernel_builder.py:1242–1259  ·  view source on GitHub ↗

Normalize a builder-side QEC operand: must be a ``QuakeValue`` whose MLIR type is ``!cc.measure_handle`` or ``!cc.stdvec<!cc.measure_handle>`` (the value forms produced by ``mz`` / ``mx`` / ``my`` for scalar and ``qvector`` targets).

(self, qv, opName)

Source from the content-addressed store, hash-verified

1240 return self.__measure(quake.MyOp, target, regName)
1241
1242 def __qecOperandValue(self, qv, opName):
1243 """Normalize a builder-side QEC operand: must be a
1244 ``QuakeValue`` whose MLIR type is ``!cc.measure_handle`` or
1245 ``!cc.stdvec<!cc.measure_handle>`` (the value forms produced by
1246 ``mz`` / ``mx`` / ``my`` for scalar and ``qvector`` targets)."""
1247 if not isinstance(qv, QuakeValue):
1248 emitFatalError(
1249 f"kernel.{opName} arguments must be QuakeValue "
1250 f"measurement handles (returned by kernel.mz / mx / my)")
1251 ty = qv.mlirValue.type
1252 ok = (cc.MeasureHandleType.isinstance(ty) or
1253 (cc.StdvecType.isinstance(ty) and cc.MeasureHandleType.isinstance(
1254 cc.StdvecType.getElementType(ty))))
1255 if not ok:
1256 emitFatalError(
1257 f"kernel.{opName} arguments must each be a "
1258 f"cudaq.measure_handle or list[cudaq.measure_handle]")
1259 return qv.mlirValue
1260
1261 def detector(self, *measurements):
1262 """Define a detector over one or more measurement results.

Callers 3

detectorMethod · 0.95
logical_observableMethod · 0.95
detectorsMethod · 0.95

Calls 2

getElementTypeMethod · 0.80
emitFatalErrorFunction · 0.70

Tested by

no test coverage detected