diff --git a/releasenotes/notes/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml b/releasenotes/notes/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml index e2f0285e3b22..551fc245bb39 100644 --- a/releasenotes/notes/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml +++ b/releasenotes/notes/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml @@ -1,3 +1,3 @@ fixes: - | - Fixed :meth:`~.SparsePauliOp.apply_layout` to work correctly with zero-qubit operators. + Fixed :meth:`.SparsePauliOp.apply_layout` to work correctly with zero-qubit operators. diff --git a/test/python/quantum_info/operators/symplectic/test_pauli.py b/test/python/quantum_info/operators/symplectic/test_pauli.py index 89324e8212e1..a1dda6c00eed 100644 --- a/test/python/quantum_info/operators/symplectic/test_pauli.py +++ b/test/python/quantum_info/operators/symplectic/test_pauli.py @@ -618,6 +618,29 @@ def test_apply_layout_duplicate_indices(self): with self.assertRaises(QiskitError): op.apply_layout(layout=[0, 0], num_qubits=3) + def test_apply_layout_zero_qubit(self): + """Test apply_layout with a zero-qubit operator""" + with self.subTest("default"): + op = Pauli("") + res = op.apply_layout(layout=None, num_qubits=5) + self.assertEqual(Pauli("IIIII"), res) + with self.subTest("phase -1j"): + op = Pauli("-i") + res = op.apply_layout(layout=None, num_qubits=5) + self.assertEqual(Pauli("-iIIIII"), res) + with self.subTest("phase -1"): + op = Pauli("-") + res = op.apply_layout(layout=None, num_qubits=5) + self.assertEqual(Pauli("-IIIII"), res) + with self.subTest("phase 1j"): + op = Pauli("i") + res = op.apply_layout(layout=None, num_qubits=5) + self.assertEqual(Pauli("iIIIII"), res) + with self.subTest("layout"): + op = Pauli("") + res = op.apply_layout(layout=[], num_qubits=5) + self.assertEqual(Pauli("IIIII"), res) + if __name__ == "__main__": unittest.main()