Skip to main content
IBM Quantum Platform
This page is from an old version of Qiskit SDK and does not exist in the latest version. We recommend you migrate to the latest version. See the release notes for more information.

CNOTDihedral

class CNOTDihedral(data, validate=True)

GitHub

Bases: qiskit.quantum_info.operators.base_operator.BaseOperator

CNOT-dihedral Object Class. The CNOT-dihedral group on num_qubits qubits is generated by the gates CNOT, T and X.

References

  1. Shelly Garion and Andrew W. Cross, On the structure of the CNOT-Dihedral group, arXiv:2006.12042 [quant-ph]
  2. Andrew W. Cross, Easwar Magesan, Lev S. Bishop, John A. Smolin and Jay M. Gambetta, Scalable randomised benchmarking of non-Clifford gates, npj Quantum Inf 2, 16012 (2016).

Initialize a CNOTDihedral operator object.


Methods

adjoint

CNOTDihedral.adjoint()

Return the conjugate transpose of the CNOTDihedral element

cnot

CNOTDihedral.cnot(i, j)

Apply a CNOT gate to this element. Left multiply the element by CNOT_{i,j}.

compose

CNOTDihedral.compose(other, qargs=None, front=False)

Return the composed operator.

Parameters

  • other (CNOTDihedral) – an operator object.
  • qargs (None) – using specific qargs is not implemented for this operator.
  • front (bool) – if True compose using right operator multiplication, instead of left multiplication [default: False].

Returns

The operator self @ other.

Return type

CNOTDihedral

Raises

  • QiskitError – if operators have incompatible dimensions for composition.
  • NotImplementedError – if qargs is not None.

Additional Information:

Composition (@) is defined as left matrix multiplication for matrix operators. That is that A @ B is equal to B * A. Setting front=True returns right matrix multiplication A * B and is equivalent to the dot() method.

conjugate

CNOTDihedral.conjugate()

Return the conjugate of the CNOTDihedral element.

copy

CNOTDihedral.copy()

Make a deep copy of current operator.

dot

CNOTDihedral.dot(other, qargs=None)

Return the right multiplied operator self * other.

Parameters

  • other (CNOTDihedral) – an operator object.
  • qargs (None) – using specific qargs is not implemented for this operator.

Returns

The operator self * other.

Return type

CNOTDihedral

Raises

  • QiskitError – if operators have incompatible dimensions for composition.
  • NotImplementedError – if qargs is not None.

expand

CNOTDihedral.expand(other)

Return the tensor product operator: other tensor self.

Parameters

other (CNOTDihedral) – an operator subclass object.

Returns

the tensor product operator: other tensor other.

Return type

CNOTDihedral

flip

CNOTDihedral.flip(i)

Apply X to this element. Left multiply the element by X_i.

from_circuit

CNOTDihedral.from_circuit(circuit)

Initialize from a QuantumCircuit or Instruction.

Parameters

circuit (QuantumCircuit orInstruction) – instruction to initialize.

Returns

the CNOTDihedral object for the circuit.

Return type

CNOTDihedral

Raises

QiskitError – if the input instruction is not CNOTDihedral or contains classical register instruction.

input_dims

CNOTDihedral.input_dims(qargs=None)

Return tuple of input dimension for specified subsystems.

is_cnotdihedral

CNOTDihedral.is_cnotdihedral()

Return True if input is a CNOTDihedral element.

output_dims

CNOTDihedral.output_dims(qargs=None)

Return tuple of output dimension for specified subsystems.

phase

CNOTDihedral.phase(k, i)

Apply an k-th power of T to this element. Left multiply the element by T_i^k.

power

CNOTDihedral.power(n)

Return the compose of a operator with itself n times.

Parameters

n (int) – the number of times to compose with self (n>0).

Returns

the n-times composed operator.

Return type

Pauli

Raises

QiskitError – if the input and output dimensions of the operator are not equal, or the power is not a positive integer.

reshape

CNOTDihedral.reshape(input_dims=None, output_dims=None, num_qubits=None)

Return a shallow copy with reshaped input and output subsystem dimensions.

Parameters

  • input_dims (None or tuple) – new subsystem input dimensions. If None the original input dims will be preserved [Default: None].
  • output_dims (None or tuple) – new subsystem output dimensions. If None the original output dims will be preserved [Default: None].
  • num_qubits (None or int) – reshape to an N-qubit operator [Default: None].

Returns

returns self with reshaped input and output dimensions.

Return type

BaseOperator

Raises

QiskitError – if combined size of all subsystem input dimension or subsystem output dimensions is not constant.

tensor

CNOTDihedral.tensor(other)

Return the tensor product operator: self tensor other.

Parameters

other (CNOTDihedral) – an operator subclass object.

Returns

the tensor product operator: self tensor other.

Return type

CNOTDihedral

to_circuit

CNOTDihedral.to_circuit()

Return a QuantumCircuit implementing the CNOT-Dihedral element.

Returns

a circuit implementation of the CNOTDihedral object.

Return type

QuantumCircuit

Remark:

Decompose 1 and 2-qubit CNOTDihedral elements.

References

  1. Shelly Garion and Andrew W. Cross, On the structure of the CNOT-Dihedral group, arXiv:2006.12042 [quant-ph]
  2. Andrew W. Cross, Easwar Magesan, Lev S. Bishop, John A. Smolin and Jay M. Gambetta, Scalable randomised benchmarking of non-Clifford gates, npj Quantum Inf 2, 16012 (2016).

to_instruction

CNOTDihedral.to_instruction()

Return a Gate instruction implementing the CNOTDihedral object.

to_matrix

CNOTDihedral.to_matrix()

Convert operator to Numpy matrix.

to_operator

CNOTDihedral.to_operator()

Convert to an Operator object.

transpose

CNOTDihedral.transpose()

Return the transpose of the CNOT-Dihedral element.


Attributes

dim

Return tuple (input_shape, output_shape).

key

Return a string representation of a CNOT-dihedral object.

num_qubits

Return the number of qubits if a N-qubit operator or None otherwise.

qargs

Return the qargs for the operator.

settings

Return operator settings.

Was this page helpful?
Report a bug or request content on GitHub.