Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions qiskit/circuit/library/data_preparation/initializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
from qiskit.circuit.instruction import Instruction
from qiskit.circuit.library.generalized_gates import Isometry
from .state_preparation import StatePreparation
from qiskit.circuit.exceptions import CircuitError

if typing.TYPE_CHECKING:
from qiskit.quantum_info.states.statevector import Statevector
Expand Down Expand Up @@ -106,3 +107,8 @@ def params(self, parameters: Statevector | Sequence[complex] | str | int) -> Non

def broadcast_arguments(self, qargs, cargs):
return self._stateprep.broadcast_arguments(qargs, cargs)

def inverse(self, annotated: bool = False):
"""Overrides initialize.inverse() and raise a circuit error"""
Comment thread
CosminDinuThiery marked this conversation as resolved.
Outdated
raise CircuitError ("Initialize is not unitary thus can not be inverted."
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
raise CircuitError ("Initialize is not unitary thus can not be inverted."
raise CircuitError ("Initialize is not unitary thus can not be inverted. "

"If you want an invertible state preparation, use StatePreparation instead.")
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
fixes:
- |
Fixed late error appearance when running initialize.inverse() method by overrinding
the method with :meth:`.Initialize.inverse` .
Comment thread
CosminDinuThiery marked this conversation as resolved.
Outdated

See `#15595 <https://github.com/Qiskit/qiskit/issues/15595>`__.


Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that 2 lines of space are not needed.

8 changes: 8 additions & 0 deletions test/python/circuit/test_initializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
from qiskit.exceptions import QiskitError
from qiskit.circuit.library import Initialize
from test import QiskitTestCase
from qiskit.circuit.exceptions import CircuitError


@ddt
Expand Down Expand Up @@ -514,6 +515,13 @@ def test_repeat(self):
statevector = Statevector(qc)
self.assertTrue(np.allclose(statevector, desired_vector))

def test_irreversible_initialize(self):
"""Test failure of the initialize.inverse() method"""
circuit = QuantumCircuit(4, 0)
circuit.initialize(0, circuit.qubits)
with self.assertRaises(CircuitError):
circuit.inverse()
Comment thread
CosminDinuThiery marked this conversation as resolved.
Outdated


class TestInstructionParam(QiskitTestCase):
"""Test conversion of numpy type parameters."""
Expand Down
Loading