@@ -37,9 +37,11 @@ def broadcast(
3737 qubits : ilist .IList [PyQrackQubit , Any ] = frame .get (stmt .qubits )
3838 operator .broadcast_apply (qubits )
3939
40- def _measure_qubit (self , qbit : PyQrackQubit ):
40+ def _measure_qubit (self , qbit : PyQrackQubit , interp : PyQrackInterpreter ):
4141 if qbit .is_active ():
4242 return bool (qbit .sim_reg .m (qbit .addr ))
43+ else :
44+ return interp .loss_m_result
4345
4446 @interp .impl (qubit .MeasureQubitList )
4547 def measure_qubit_list (
@@ -49,15 +51,15 @@ def measure_qubit_list(
4951 stmt : qubit .MeasureQubitList ,
5052 ):
5153 qubits : ilist .IList [PyQrackQubit , Any ] = frame .get (stmt .qubits )
52- result = ilist .IList ([self ._measure_qubit (qbit ) for qbit in qubits ])
54+ result = ilist .IList ([self ._measure_qubit (qbit , interp ) for qbit in qubits ])
5355 return (result ,)
5456
5557 @interp .impl (qubit .MeasureQubit )
5658 def measure_qubit (
5759 self , interp : PyQrackInterpreter , frame : interp .Frame , stmt : qubit .MeasureQubit
5860 ):
5961 qbit : PyQrackQubit = frame .get (stmt .qubit )
60- result = self ._measure_qubit (qbit )
62+ result = self ._measure_qubit (qbit , interp )
6163 return (result ,)
6264
6365 @interp .impl (qubit .MeasureAndReset )
@@ -70,10 +72,7 @@ def measure_and_reset(
7072 qubits : ilist .IList [PyQrackQubit , Any ] = frame .get (stmt .qubits )
7173 result = []
7274 for qbit in qubits :
73- if qbit .is_active ():
74- qbit_result = bool (qbit .sim_reg .m (qbit .addr ))
75- else :
76- qbit_result = None
75+ qbit_result = self ._measure_qubit (qbit , interp )
7776
7877 if qbit_result :
7978 qbit .sim_reg .x (qbit .addr )
0 commit comments