From 65e60bfffce5e591c631e48871ce1946db6507bf Mon Sep 17 00:00:00 2001 From: "Christopher J. Wood" Date: Thu, 15 Oct 2020 16:57:11 -0400 Subject: [PATCH] Release 0.7.0 (#993) * Move release notes to 0.7 folder * Update readme example to include ideal and noisy simulation --- README.md | 50 +++++++++---------- .../aer/noise/errors/readout_error.py | 2 +- ...tatevector-precision-24350e9fd7368c24.yaml | 2 +- .../0.7/0.7.0-release-a6655712e304234b.yaml | 15 ++++++ .../add-openblas-lapack-67ad654d1148a309.yaml | 0 .../basis-gates-acbc8a1a52a49413.yaml | 21 +++++++- ...onfigurable-backends-a55cd6a39a0a1561.yaml | 4 ++ ...te-snapshot-variance-7d02188deacf9a08.yaml | 2 +- .../{ => 0.7}/drop-py35-814876e9d7354a39.yaml | 0 ...ix-cpp-for-loop-refs-5a6bb879bf58a4fb.yaml | 0 .../fix-snapshot-copy-54ee685094d1e261.yaml | 0 .../fix-y-expectation-1ad355c31b4c3247.yaml | 0 .../fusion-threshold-33127b9b4e219640.yaml | 19 +++++++ .../global-phase-9fc2105dac076f48.yaml | 0 .../kraus-noise-fusion-5577d4a38862e966.yaml | 2 +- ...move-final-snapshots-1cdc5e93b4695324.yaml | 0 .../0.7/mps-apply-kraus-3cc8de65a66385ab.yaml | 9 ++++ .../mps-density-matrix-51f7d5b1ef51e746.yaml | 9 ++++ .../pybind-functors-a0b7b357fbe67dfb.yaml | 0 .../simd-support-c2352ca3d639770f.yaml | 0 ...e-memory-statevector-d1b4fc48b002856f.yaml | 0 .../vector-class-ee57ad715b18cc55.yaml | 0 .../fusion-threshold-33127b9b4e219640.yaml | 11 ---- .../mps-apply-kraus-3cc8de65a66385ab.yaml | 8 --- .../mps-density-matrix-51f7d5b1ef51e746.yaml | 7 --- .../rotation-gates-7c09f4565329ca78.yaml | 16 ------ 26 files changed, 103 insertions(+), 74 deletions(-) rename releasenotes/notes/{ => 0.6}/fix-statevector-precision-24350e9fd7368c24.yaml (73%) create mode 100644 releasenotes/notes/0.7/0.7.0-release-a6655712e304234b.yaml rename releasenotes/notes/{ => 0.7}/add-openblas-lapack-67ad654d1148a309.yaml (100%) rename releasenotes/notes/{ => 0.7}/basis-gates-acbc8a1a52a49413.yaml (68%) rename releasenotes/notes/{ => 0.7}/configurable-backends-a55cd6a39a0a1561.yaml (88%) rename releasenotes/notes/{ => 0.7}/deprecate-snapshot-variance-7d02188deacf9a08.yaml (81%) rename releasenotes/notes/{ => 0.7}/drop-py35-814876e9d7354a39.yaml (100%) rename releasenotes/notes/{ => 0.7}/fix-cpp-for-loop-refs-5a6bb879bf58a4fb.yaml (100%) rename releasenotes/notes/{ => 0.7}/fix-snapshot-copy-54ee685094d1e261.yaml (100%) rename releasenotes/notes/{ => 0.7}/fix-y-expectation-1ad355c31b4c3247.yaml (100%) create mode 100644 releasenotes/notes/0.7/fusion-threshold-33127b9b4e219640.yaml rename releasenotes/notes/{ => 0.7}/global-phase-9fc2105dac076f48.yaml (100%) rename releasenotes/notes/{ => 0.7}/kraus-noise-fusion-5577d4a38862e966.yaml (97%) rename releasenotes/notes/{ => 0.7}/move-final-snapshots-1cdc5e93b4695324.yaml (100%) create mode 100644 releasenotes/notes/0.7/mps-apply-kraus-3cc8de65a66385ab.yaml create mode 100644 releasenotes/notes/0.7/mps-density-matrix-51f7d5b1ef51e746.yaml rename releasenotes/notes/{ => 0.7}/pybind-functors-a0b7b357fbe67dfb.yaml (100%) rename releasenotes/notes/{ => 0.7}/simd-support-c2352ca3d639770f.yaml (100%) rename releasenotes/notes/{ => 0.7}/validate-memory-statevector-d1b4fc48b002856f.yaml (100%) rename releasenotes/notes/{ => 0.7}/vector-class-ee57ad715b18cc55.yaml (100%) delete mode 100644 releasenotes/notes/fusion-threshold-33127b9b4e219640.yaml delete mode 100644 releasenotes/notes/mps-apply-kraus-3cc8de65a66385ab.yaml delete mode 100644 releasenotes/notes/mps-density-matrix-51f7d5b1ef51e746.yaml delete mode 100644 releasenotes/notes/rotation-gates-7c09f4565329ca78.yaml diff --git a/README.md b/README.md index 12dde86f5..822563289 100755 --- a/README.md +++ b/README.md @@ -41,43 +41,41 @@ $ python ``` ```python -from qiskit import QuantumCircuit, execute -from qiskit import Aer, IBMQ -from qiskit.providers.aer.noise import NoiseModel - -# Choose a real device to simulate from IBMQ provider -provider = IBMQ.load_account() -backend = provider.get_backend('ibmq_vigo') -coupling_map = backend.configuration().coupling_map - -# Generate an Aer noise model for device -noise_model = NoiseModel.from_backend(backend) -basis_gates = noise_model.basis_gates +import qiskit +from qiskit import IBMQ +from qiskit.providers.aer import QasmSimulator # Generate 3-qubit GHZ state -num_qubits = 3 -circ = QuantumCircuit(3, 3) +circ = qiskit.QuantumCircuit(3, 3) circ.h(0) circ.cx(0, 1) circ.cx(1, 2) circ.measure([0, 1, 2], [0, 1 ,2]) +# Construct an ideal simulator +sim = QasmSimulator() + +# Perform an ideal simulation +result_ideal = qiskit.execute(circ, sim).result() +counts_ideal = result_ideal.get_counts(0) +print('Counts(ideal):', counts_ideal) +# Counts(ideal): {'000': 493, '111': 531} + +# Construct a noisy simulator backend from an IBMQ backend +# This simulator backend will be automatically configured +# using the device configuration and noise model +provider = IBMQ.load_account() +vigo_backend = provider.get_backend('ibmq_vigo') +vigo_sim = QasmSimulator.from_backend(vigo_backend) + # Perform noisy simulation -backend = Aer.get_backend('qasm_simulator') -job = execute(circ, backend, - coupling_map=coupling_map, - noise_model=noise_model, - basis_gates=basis_gates) -result = job.result() +result_noise = qiskit.execute(circ, vigo_sim).result() +counts_noise = result_noise.get_counts(0) -print(result.get_counts(0)) +print('Counts(noise):', counts_noise) +# Counts(noise): {'000': 492, '001': 6, '010': 8, '011': 14, '100': 3, '101': 14, '110': 18, '111': 469} ``` -```python -{'000': 495, '001': 18, '010': 8, '011': 18, '100': 2, '101': 14, '110': 28, '111': 441} -``` - - ## Contribution Guidelines If you'd like to contribute to Qiskit, please take a look at our diff --git a/qiskit/providers/aer/noise/errors/readout_error.py b/qiskit/providers/aer/noise/errors/readout_error.py index f492e2c26..6db9072f1 100644 --- a/qiskit/providers/aer/noise/errors/readout_error.py +++ b/qiskit/providers/aer/noise/errors/readout_error.py @@ -42,7 +42,7 @@ class ReadoutError: .. code-block:: python - probabilities[j] = [P(0|m), P(1|m), ..., P(2 ** N - 1|m)] + probabilities[m] = [P(0|m), P(1|m), ..., P(2 ** N - 1|m)] where ``P(j|m)`` is the probability of recording a measurement outcome of ``m`` as the value ``j``. Where ``j`` and ``m`` are integer diff --git a/releasenotes/notes/fix-statevector-precision-24350e9fd7368c24.yaml b/releasenotes/notes/0.6/fix-statevector-precision-24350e9fd7368c24.yaml similarity index 73% rename from releasenotes/notes/fix-statevector-precision-24350e9fd7368c24.yaml rename to releasenotes/notes/0.6/fix-statevector-precision-24350e9fd7368c24.yaml index a0fedb645..6ce405654 100644 --- a/releasenotes/notes/fix-statevector-precision-24350e9fd7368c24.yaml +++ b/releasenotes/notes/0.6/fix-statevector-precision-24350e9fd7368c24.yaml @@ -1,7 +1,7 @@ --- fixes: - | - Fixes bug in the :class:`qiskit.providers.aer.StatevectorSimulator` that + Fixes bug in the :class:`~qiskit.providers.aer.StatevectorSimulator` that caused it to always run as CPU with double-precision without SIMD/AVX2 support even on systems with AVX2, or when single-precision or the GPU method was specified in the backend options. diff --git a/releasenotes/notes/0.7/0.7.0-release-a6655712e304234b.yaml b/releasenotes/notes/0.7/0.7.0-release-a6655712e304234b.yaml new file mode 100644 index 000000000..d6a3cf9be --- /dev/null +++ b/releasenotes/notes/0.7/0.7.0-release-a6655712e304234b.yaml @@ -0,0 +1,15 @@ +--- +prelude: > + This 0.7.0 release includes numerous performance improvements and + significant enhancements to the simulator interface, and drops support + for Python 3.5. + The main interface changes are configurable simulator backends, + and constructing preconfigured simulators from IBMQ backends. + Noise model an basis gate support has also been extended for most of the + Qiskit circuit library standard gates, including new support for 1 and 2-qubit + rotation gates. + Performance improvements include adding SIMD support to the density matrix + and unitary simulation methods, reducing the used memory and improving the + performance of circuits using statevector and density matrix snapshots, and + adding support for Kraus instructions to the gate fusion circuit optimization + for greatly improving the performance of noisy statevector simulations. diff --git a/releasenotes/notes/add-openblas-lapack-67ad654d1148a309.yaml b/releasenotes/notes/0.7/add-openblas-lapack-67ad654d1148a309.yaml similarity index 100% rename from releasenotes/notes/add-openblas-lapack-67ad654d1148a309.yaml rename to releasenotes/notes/0.7/add-openblas-lapack-67ad654d1148a309.yaml diff --git a/releasenotes/notes/basis-gates-acbc8a1a52a49413.yaml b/releasenotes/notes/0.7/basis-gates-acbc8a1a52a49413.yaml similarity index 68% rename from releasenotes/notes/basis-gates-acbc8a1a52a49413.yaml rename to releasenotes/notes/0.7/basis-gates-acbc8a1a52a49413.yaml index 916d72032..fc69d63e9 100644 --- a/releasenotes/notes/basis-gates-acbc8a1a52a49413.yaml +++ b/releasenotes/notes/0.7/basis-gates-acbc8a1a52a49413.yaml @@ -46,10 +46,27 @@ features: class:`~qiskit.providers.aer.StatevectorSimulator`, :class:`~qiskit.providers.aer.UnitarySimulator`, and :class:`~qiskit.providers.aer.QasmSimulator`. + - | + Adds support for 1 and 2-qubit Qiskit circuit library rotation gates + :class:`~qiskit.circuit.library.RXGate`, :class:`~qiskit.circuit.library.RYGate`, + :class:`~qiskit.circuit.library.RZGate`, :class:`~qiskit.circuit.library.RGate`, + :class:`~qiskit.circuit.library.RXXGate`, :class:`~qiskit.circuit.library.RYYGate`, + :class:`~qiskit.circuit.library.RZZGate`, :class:`~qiskit.circuit.library.RZXGate` + to the :class:`~qiskit.providers.aer.StatevectorSimulator`, + :class:`~qiskit.providers.aer.UnitarySimulator`, and the + ``"statevector"`` and ``"density_matrix"`` methods of the + :class:`~qiskit.providers.aer.QasmSimulator`. + - | + Adds support for multi-controlled rotation gates ``"mcr"``, ``"mcrx"``, + ``"mcry"``, ``"mcrz"`` + to the :class:`~qiskit.providers.aer.StatevectorSimulator`, + :class:`~qiskit.providers.aer.UnitarySimulator`, and the + ``"statevector"`` method of the + :class:`~qiskit.providers.aer.QasmSimulator`. deprecations: - | :meth:`qiskit.providers.aer.noise.NoiseModel.set_x90_single_qubit_gates` has been deprecated as unrolling to custom basis gates has been added to the qiskit transpiler. The correct way to use an X90 based noise model is to - define noise on the Sqrt(X) "sx" or "rx" gate and one of the single-qubit - phase gates "u1", "rx", "p" in the noise model. + define noise on the Sqrt(X) ``"sx"`` or ``"rx"`` gate and one of the single-qubit + phase gates ``"u1"``, ``"rx"``, or ``"p"`` in the noise model. diff --git a/releasenotes/notes/configurable-backends-a55cd6a39a0a1561.yaml b/releasenotes/notes/0.7/configurable-backends-a55cd6a39a0a1561.yaml similarity index 88% rename from releasenotes/notes/configurable-backends-a55cd6a39a0a1561.yaml rename to releasenotes/notes/0.7/configurable-backends-a55cd6a39a0a1561.yaml index 6b91dd9ca..da08ec306 100644 --- a/releasenotes/notes/configurable-backends-a55cd6a39a0a1561.yaml +++ b/releasenotes/notes/0.7/configurable-backends-a55cd6a39a0a1561.yaml @@ -14,6 +14,10 @@ features: and defaults will be configured automatically from the backend configuration, properties and defaults. + For example a noisy density matrix simulator backend can be constructed as + ``QasmSimulator(method='density_matrix', noise_model=noise_model)``, or an ideal + matrix product state simulator as ``QasmSimulator(method='matrix_product_state')``. + A benefit is that a :class:`~qiskit.providers.aer.PulseSimulator` instance configured from a backend better serves as a drop-in replacement to the original backend, making it easier to swap in and out a simulator and real backend, e.g. when testing code on a simulator before diff --git a/releasenotes/notes/deprecate-snapshot-variance-7d02188deacf9a08.yaml b/releasenotes/notes/0.7/deprecate-snapshot-variance-7d02188deacf9a08.yaml similarity index 81% rename from releasenotes/notes/deprecate-snapshot-variance-7d02188deacf9a08.yaml rename to releasenotes/notes/0.7/deprecate-snapshot-variance-7d02188deacf9a08.yaml index 01a17da72..5ee827e4e 100644 --- a/releasenotes/notes/deprecate-snapshot-variance-7d02188deacf9a08.yaml +++ b/releasenotes/notes/0.7/deprecate-snapshot-variance-7d02188deacf9a08.yaml @@ -1,7 +1,7 @@ --- deprecations: - | - The `variance` kwarg of Snapshot instructions has been deprecated. This + The ``variance`` kwarg of Snapshot instructions has been deprecated. This function computed the sample variance in the snapshot due to noise model sampling, not the variance due to measurement statistics so was often being used incorrectly. If noise modeling variance is required single shot diff --git a/releasenotes/notes/drop-py35-814876e9d7354a39.yaml b/releasenotes/notes/0.7/drop-py35-814876e9d7354a39.yaml similarity index 100% rename from releasenotes/notes/drop-py35-814876e9d7354a39.yaml rename to releasenotes/notes/0.7/drop-py35-814876e9d7354a39.yaml diff --git a/releasenotes/notes/fix-cpp-for-loop-refs-5a6bb879bf58a4fb.yaml b/releasenotes/notes/0.7/fix-cpp-for-loop-refs-5a6bb879bf58a4fb.yaml similarity index 100% rename from releasenotes/notes/fix-cpp-for-loop-refs-5a6bb879bf58a4fb.yaml rename to releasenotes/notes/0.7/fix-cpp-for-loop-refs-5a6bb879bf58a4fb.yaml diff --git a/releasenotes/notes/fix-snapshot-copy-54ee685094d1e261.yaml b/releasenotes/notes/0.7/fix-snapshot-copy-54ee685094d1e261.yaml similarity index 100% rename from releasenotes/notes/fix-snapshot-copy-54ee685094d1e261.yaml rename to releasenotes/notes/0.7/fix-snapshot-copy-54ee685094d1e261.yaml diff --git a/releasenotes/notes/fix-y-expectation-1ad355c31b4c3247.yaml b/releasenotes/notes/0.7/fix-y-expectation-1ad355c31b4c3247.yaml similarity index 100% rename from releasenotes/notes/fix-y-expectation-1ad355c31b4c3247.yaml rename to releasenotes/notes/0.7/fix-y-expectation-1ad355c31b4c3247.yaml diff --git a/releasenotes/notes/0.7/fusion-threshold-33127b9b4e219640.yaml b/releasenotes/notes/0.7/fusion-threshold-33127b9b4e219640.yaml new file mode 100644 index 000000000..53cc3db1d --- /dev/null +++ b/releasenotes/notes/0.7/fusion-threshold-33127b9b4e219640.yaml @@ -0,0 +1,19 @@ +--- +upgrade: + - | + Updates gate fusion default thresholds so that gate fusion will be applied + to circuits with of more than 14 qubits for statevector simulations on the + :class:`~qiskit.providers.aer.StatevectorSimulator` and + :class:`~qiskit.providers.aer.QasmSimulator`. + + For the ``"density_matrix"`` + method of the :class:`~qiskit.providers.aer.QasmSimulator` and for the + :class:`~qiskit.providers.aer.UnitarySimulator` gate fusion will be applied + to circuits with more than 7 qubits. + + Custom qubit threshold values can be set using the ``fusion_threshold`` + backend option ie ``backend.set_options(fusion_threshold=10)`` + - | + Changes ``fusion_threshold`` backend option to apply fusion when the + number of qubits is above the threshold, not equal or above the threshold, + to match the behavior of the OpenMP qubit threshold parameter. diff --git a/releasenotes/notes/global-phase-9fc2105dac076f48.yaml b/releasenotes/notes/0.7/global-phase-9fc2105dac076f48.yaml similarity index 100% rename from releasenotes/notes/global-phase-9fc2105dac076f48.yaml rename to releasenotes/notes/0.7/global-phase-9fc2105dac076f48.yaml diff --git a/releasenotes/notes/kraus-noise-fusion-5577d4a38862e966.yaml b/releasenotes/notes/0.7/kraus-noise-fusion-5577d4a38862e966.yaml similarity index 97% rename from releasenotes/notes/kraus-noise-fusion-5577d4a38862e966.yaml rename to releasenotes/notes/0.7/kraus-noise-fusion-5577d4a38862e966.yaml index 3a6558c5b..28e76c61e 100644 --- a/releasenotes/notes/kraus-noise-fusion-5577d4a38862e966.yaml +++ b/releasenotes/notes/0.7/kraus-noise-fusion-5577d4a38862e966.yaml @@ -3,4 +3,4 @@ features: - | Improves general noisy statevector simulation performance by adding a Kraus method to the gate fusion circuit optimization that allows applying gate - fusion to noisy statevector simulations with general Kraus noise. + fusion to noisy statevector simulations with general Kraus noise. \ No newline at end of file diff --git a/releasenotes/notes/move-final-snapshots-1cdc5e93b4695324.yaml b/releasenotes/notes/0.7/move-final-snapshots-1cdc5e93b4695324.yaml similarity index 100% rename from releasenotes/notes/move-final-snapshots-1cdc5e93b4695324.yaml rename to releasenotes/notes/0.7/move-final-snapshots-1cdc5e93b4695324.yaml diff --git a/releasenotes/notes/0.7/mps-apply-kraus-3cc8de65a66385ab.yaml b/releasenotes/notes/0.7/mps-apply-kraus-3cc8de65a66385ab.yaml new file mode 100644 index 000000000..7ec0f471f --- /dev/null +++ b/releasenotes/notes/0.7/mps-apply-kraus-3cc8de65a66385ab.yaml @@ -0,0 +1,9 @@ +--- + +features: + - | + Adds support for general Kraus + :class:`~qiskit.providers.aer.noise.QauntumError` gate errors in the + :class:`~qiskit.providers.aer.noise.NoiseModel` to the + ``"matrix_product_state"`` method of the + :class:`~qiskit.providers.aer.QasmSimulator`. diff --git a/releasenotes/notes/0.7/mps-density-matrix-51f7d5b1ef51e746.yaml b/releasenotes/notes/0.7/mps-density-matrix-51f7d5b1ef51e746.yaml new file mode 100644 index 000000000..e8ea0bf6e --- /dev/null +++ b/releasenotes/notes/0.7/mps-density-matrix-51f7d5b1ef51e746.yaml @@ -0,0 +1,9 @@ +--- + +features: + - | + Adds support for density matrix snapshot instruction + :class:`qiskit.providers.aer.extensions.SnapshotDensityMatrix` to the + ``"matrix_product_state"`` method of the + :class:`~qiskit.providers.aer.QasmSimulator`. + diff --git a/releasenotes/notes/pybind-functors-a0b7b357fbe67dfb.yaml b/releasenotes/notes/0.7/pybind-functors-a0b7b357fbe67dfb.yaml similarity index 100% rename from releasenotes/notes/pybind-functors-a0b7b357fbe67dfb.yaml rename to releasenotes/notes/0.7/pybind-functors-a0b7b357fbe67dfb.yaml diff --git a/releasenotes/notes/simd-support-c2352ca3d639770f.yaml b/releasenotes/notes/0.7/simd-support-c2352ca3d639770f.yaml similarity index 100% rename from releasenotes/notes/simd-support-c2352ca3d639770f.yaml rename to releasenotes/notes/0.7/simd-support-c2352ca3d639770f.yaml diff --git a/releasenotes/notes/validate-memory-statevector-d1b4fc48b002856f.yaml b/releasenotes/notes/0.7/validate-memory-statevector-d1b4fc48b002856f.yaml similarity index 100% rename from releasenotes/notes/validate-memory-statevector-d1b4fc48b002856f.yaml rename to releasenotes/notes/0.7/validate-memory-statevector-d1b4fc48b002856f.yaml diff --git a/releasenotes/notes/vector-class-ee57ad715b18cc55.yaml b/releasenotes/notes/0.7/vector-class-ee57ad715b18cc55.yaml similarity index 100% rename from releasenotes/notes/vector-class-ee57ad715b18cc55.yaml rename to releasenotes/notes/0.7/vector-class-ee57ad715b18cc55.yaml diff --git a/releasenotes/notes/fusion-threshold-33127b9b4e219640.yaml b/releasenotes/notes/fusion-threshold-33127b9b4e219640.yaml deleted file mode 100644 index 5ff8ad83f..000000000 --- a/releasenotes/notes/fusion-threshold-33127b9b4e219640.yaml +++ /dev/null @@ -1,11 +0,0 @@ ---- -features: - - | - Changes ``"fusion_threshold"`` backend option to apply fusion when the - number of qubits is above the threshold, not equal or above the threshold, - to match the behaviour of the OpenMP qubit threshold parameter. - - | - Changes the default value of ``"fusion_threshold"`` from 20 to 14 for the - :class:`~qiskit.providers.aer.QasmSimulator` and - :class:`~qiskit.providers.aer.StatevectorSimulator`, and from 10 to 7 for - the :class:`~qiskit.providers.aer.UnitarySimulator`. diff --git a/releasenotes/notes/mps-apply-kraus-3cc8de65a66385ab.yaml b/releasenotes/notes/mps-apply-kraus-3cc8de65a66385ab.yaml deleted file mode 100644 index d24a9fc18..000000000 --- a/releasenotes/notes/mps-apply-kraus-3cc8de65a66385ab.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- - -features: - - | - Added support for ``apply_kraus``in ``matrix_product_state.hpp``. This - enables running the ``matrix_product_state`` simulation method with all - types of Kraus noise. - diff --git a/releasenotes/notes/mps-density-matrix-51f7d5b1ef51e746.yaml b/releasenotes/notes/mps-density-matrix-51f7d5b1ef51e746.yaml deleted file mode 100644 index 037898c26..000000000 --- a/releasenotes/notes/mps-density-matrix-51f7d5b1ef51e746.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- - -features: - - | - Adds support for ``snapshot_density_matrix`` in the ``matrix_product_state - simulation method``. - diff --git a/releasenotes/notes/rotation-gates-7c09f4565329ca78.yaml b/releasenotes/notes/rotation-gates-7c09f4565329ca78.yaml deleted file mode 100644 index 367cfa18a..000000000 --- a/releasenotes/notes/rotation-gates-7c09f4565329ca78.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -features: - - | - Adds support for 1 and 2-qubit rotation gates ``"rx"``, ``"ry"``, ``"rz"``, - ``"r"``, ``"rxx"``, ``"ryy"``, ``"rzz"``, ``"rzx"`` to the - :class:`~qiskit.providers.aer.StatevectorSimulator`, - :class:`~qiskit.providers.aer.UnitarySimulator`, and the - ``"statevector"`` and ``"density_matrix"`` methods of the - :class:`~qiskit.providers.aer.StatevectorSimulator`. - - | - Adds support for multi-controlled rotation gates ``"mcr"``, ``"mcrx"``, - ``"mcry"``, ``"mcrz"`` - to the :class:`~qiskit.providers.aer.StatevectorSimulator`, - :class:`~qiskit.providers.aer.UnitarySimulator`, and the - ``"statevector"`` method of the - :class:`~qiskit.providers.aer.StatevectorSimulator`.