UniformRotation

This module implements the uniform rotation gate defined by Möttönen et. al. (10.1103/PhysRevLett.93.130502).

There are many convenience functions also being monkey patched.

binary_codes

Convenience function to get a list of numbers from 0 to 2**number_qubits - 1 :param number_qubits: exponent :return: list of numbers

gray_code

Cyclic Gray Code of number :param number: input number :return: Gray Code

matrix_M_entry

The matrix for the angle computation :param row: row number (one based!) :param col: column number (one based!) :return: matrix entry

compute_theta

Compute the rotational angles from alpha :param alpha: the input uniform rotation angles :return: the single qubit rotation angles

pairwise

Calculates pairwise consecutive pairs of an iterable s -> (s0,s1), (s1,s2), (s2, s3), .

UniformRotationGate

Uniform rotation gate (Möttönen).

uni_rot

Apply a generic uniform rotation with rotation gate.

uni_rot_dg

Apply the dagger (inverse) of a generic uniform rotation with rotation gate.

unirz

Apply a uniform rotation around z.

unirz_dg

Apply dagger (inverse) of a uniform rotation around z.

uniry

Apply a uniform rotation around y.

uniry_dg

Apply the dagger (inverse) of a uniform rotation around y.

MultiControlledXGate

Multi-Controlled X-Gate (via Möttönen).

Here are the details:

binary_codes

dc_qiskit_algorithms.UniformRotation.binary_codes(number_qubits)[source]

Convenience function to get a list of numbers from 0 to 2**number_qubits - 1 :param number_qubits: exponent :return: list of numbers

gray_code

dc_qiskit_algorithms.UniformRotation.gray_code(number)[source]

Cyclic Gray Code of number :param number: input number :return: Gray Code

matrix_M_entry

dc_qiskit_algorithms.UniformRotation.matrix_M_entry(row, col)[source]

The matrix for the angle computation :param row: row number (one based!) :param col: column number (one based!) :return: matrix entry

compute_theta

dc_qiskit_algorithms.UniformRotation.compute_theta(alpha)[source]

Compute the rotational angles from alpha :param alpha: the input uniform rotation angles :return: the single qubit rotation angles

pairwise

dc_qiskit_algorithms.UniformRotation.pairwise(iterable)[source]

Calculates pairwise consecutive pairs of an iterable s -> (s0,s1), (s1,s2), (s2, s3), … :param iterable: any iterable :return: an iterable of tuples

UniformRotationGate

class dc_qiskit_algorithms.UniformRotation.UniformRotationGate(gate, alpha)[source]

Uniform rotation gate (Möttönen).

uni_rot

dc_qiskit_algorithms.UniformRotation.uni_rot(self, rotation_gate, alpha, control_qubits, tgt)[source]

Apply a generic uniform rotation with rotation gate. :param self: either a composite gate or a circuit :param rotation_gate: A single qubit rotation gate :param alpha: conditional rotation angles :param control_qubits: control qubits :param tgt: target :return: applied composite gate or circuit

uni_rot_dg

dc_qiskit_algorithms.UniformRotation.uni_rot_dg(self, rotation_gate, alpha, control_qubits, tgt)[source]

Apply the dagger (inverse) of a generic uniform rotation with rotation gate. :param self: either a composite gate or a circuit :param rotation_gate: A single qubit rotation gate :param alpha: conditional rotation angles :param control_qubits: control qubits :param tgt: target :return: applied composite gate or circuit

unirz

dc_qiskit_algorithms.UniformRotation.unirz(self, alpha, control_qubits, tgt)[source]

Apply a uniform rotation around z. :param self: either a composite gate or a circuit :param alpha: conditional rotation angles :param control_qubits: control qubits :param tgt: target :return: applied composite gate or circuit

unirz_dg

dc_qiskit_algorithms.UniformRotation.unirz_dg(self, alpha, control_qubits, tgt)[source]

Apply dagger (inverse) of a uniform rotation around z. :param self: either a composite gate or a circuit :param alpha: conditional rotation angles :param control_qubits: control qubits :param tgt: target :return: applied composite gate or circuit

uniry

dc_qiskit_algorithms.UniformRotation.uniry(self, alpha, control_qubits, tgt)[source]

Apply a uniform rotation around y. :param self: either a composite gate or a circuit :param alpha: conditional rotation angles :param control_qubits: control qubits :param tgt: target :return: applied composite gate or circuit

uniry_dg

dc_qiskit_algorithms.UniformRotation.uniry_dg(self, alpha, control_qubits, tgt)[source]

Apply the dagger (inverse) of a uniform rotation around y. :param self: either a composite gate or a circuit :param alpha: conditional rotation angles :param control_qubits: control qubits :param tgt: target :return: applied composite gate or circuit

MultiControlledXGate

class dc_qiskit_algorithms.UniformRotation.MultiControlledXGate(conditional_case, control_qubits)[source]

Multi-Controlled X-Gate (via Möttönen).

ccx

ccx_dg

dc_qiskit_algorithms.UniformRotation.binary_codes(number_qubits)[source]

Convenience function to get a list of numbers from 0 to 2**number_qubits - 1 :param number_qubits: exponent :return: list of numbers

dc_qiskit_algorithms.UniformRotation.gray_code(number)[source]

Cyclic Gray Code of number :param number: input number :return: Gray Code

dc_qiskit_algorithms.UniformRotation.matrix_M_entry(row, col)[source]

The matrix for the angle computation :param row: row number (one based!) :param col: column number (one based!) :return: matrix entry

dc_qiskit_algorithms.UniformRotation.compute_theta(alpha)[source]

Compute the rotational angles from alpha :param alpha: the input uniform rotation angles :return: the single qubit rotation angles

dc_qiskit_algorithms.UniformRotation.pairwise(iterable)[source]

Calculates pairwise consecutive pairs of an iterable s -> (s0,s1), (s1,s2), (s2, s3), … :param iterable: any iterable :return: an iterable of tuples

class dc_qiskit_algorithms.UniformRotation.UniformRotationGate(gate, alpha)[source]

Uniform rotation gate (Möttönen).

dc_qiskit_algorithms.UniformRotation.uni_rot(self, rotation_gate, alpha, control_qubits, tgt)[source]

Apply a generic uniform rotation with rotation gate. :param self: either a composite gate or a circuit :param rotation_gate: A single qubit rotation gate :param alpha: conditional rotation angles :param control_qubits: control qubits :param tgt: target :return: applied composite gate or circuit

dc_qiskit_algorithms.UniformRotation.uni_rot_dg(self, rotation_gate, alpha, control_qubits, tgt)[source]

Apply the dagger (inverse) of a generic uniform rotation with rotation gate. :param self: either a composite gate or a circuit :param rotation_gate: A single qubit rotation gate :param alpha: conditional rotation angles :param control_qubits: control qubits :param tgt: target :return: applied composite gate or circuit

dc_qiskit_algorithms.UniformRotation.unirz(self, alpha, control_qubits, tgt)[source]

Apply a uniform rotation around z. :param self: either a composite gate or a circuit :param alpha: conditional rotation angles :param control_qubits: control qubits :param tgt: target :return: applied composite gate or circuit

dc_qiskit_algorithms.UniformRotation.unirz_dg(self, alpha, control_qubits, tgt)[source]

Apply dagger (inverse) of a uniform rotation around z. :param self: either a composite gate or a circuit :param alpha: conditional rotation angles :param control_qubits: control qubits :param tgt: target :return: applied composite gate or circuit

dc_qiskit_algorithms.UniformRotation.uniry(self, alpha, control_qubits, tgt)[source]

Apply a uniform rotation around y. :param self: either a composite gate or a circuit :param alpha: conditional rotation angles :param control_qubits: control qubits :param tgt: target :return: applied composite gate or circuit

dc_qiskit_algorithms.UniformRotation.uniry_dg(self, alpha, control_qubits, tgt)[source]

Apply the dagger (inverse) of a uniform rotation around y. :param self: either a composite gate or a circuit :param alpha: conditional rotation angles :param control_qubits: control qubits :param tgt: target :return: applied composite gate or circuit

dc_qiskit_algorithms.UniformRotation.cnry(self, theta, control_qubits, tgt)[source]

Apply a multiple controlled y rotation on the target qubit. :param self: either a composite gate or a circuit :param theta: rotation angle :param control_qubits: control qubits :param tgt: target :return: applied composite gate or circuit

dc_qiskit_algorithms.UniformRotation.cnry_dg(self, theta, control_qubits, tgt)[source]

Apply the dagger (inverse) of a multiple controlled y rotation on the target qubit. :param self: either a composite gate or a circuit :param theta: rotation angle :param control_qubits: control qubits :param tgt: target :return: applied composite gate or circuit

class dc_qiskit_algorithms.UniformRotation.MultiControlledXGate(conditional_case, control_qubits)[source]

Multi-Controlled X-Gate (via Möttönen).

dc_qiskit_algorithms.UniformRotation.ccx_uni_rot(self, conditional_case, control_qubits, tgt)[source]

Apply a multi-controlled X gate depending on conditional binary representation :param self: either a composite gate or a circuit :param conditional_case: the controlled case (1 or 0) in binary :param control_qubits: control qubits :param tgt: target :return: applied composite gate or circuit

dc_qiskit_algorithms.UniformRotation.ccx_uni_rot_dg(self, conditional_case, control_qubits, tgt)[source]

Apply the dagger (inverse) a multi-controlled X gate depending on conditional binary representation :param self: either a composite gate or a circuit :param conditional_case: the controlled case (1 or 0) in binary :param control_qubits: control qubits :param tgt: target :return: applied composite gate or circuit