The superoperators and PTMs returned by these two functions can often be simplified by forcing separation of the real and imaginary components of their parameters, especially (but not exclusively) when AssertValidChannels -> False.
For instance:
Thankfully, I so far haven't seen CalcPauliTransferMatrix return an unsimplified element which would otherwise simplify to 0 (which would be very important to address). But it still remains useful to simplify per gate, even if we do not attempt to simplify the matrix resulting from an entire circuit. Note when changing CalcPauliTransferMatrix, the component substitution will be performed upon a sparse array.
Note that the Ph gate needs specific attention; the posteriori FullSimplify[] traps it into a bad simplification, re-combining the components for some elements. Grr!
The affected functions would be:
CalcCircuitMatrix[] (only when AsSuperoperator->True)
CalcPauliTransferMatrix[]
etc
The superoperators and PTMs returned by these two functions can often be simplified by forcing separation of the real and imaginary components of their parameters, especially (but not exclusively) when
AssertValidChannels -> False.For instance:
Thankfully, I so far haven't seen
CalcPauliTransferMatrixreturn an unsimplified element which would otherwise simplify to0(which would be very important to address). But it still remains useful to simplify per gate, even if we do not attempt to simplify the matrix resulting from an entire circuit. Note when changingCalcPauliTransferMatrix, the component substitution will be performed upon a sparse array.Note that the
Phgate needs specific attention; the posterioriFullSimplify[]traps it into a bad simplification, re-combining the components for some elements. Grr!The affected functions would be:
CalcCircuitMatrix[](only whenAsSuperoperator->True)CalcPauliTransferMatrix[]etc