CNOTDihedral
class CNOTDihedral(data, validate=True)
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
- Shelly Garion and Andrew W. Cross, On the structure of the CNOT-Dihedral group, arXiv:2006.12042 [quant-ph]
- 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
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
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
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
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
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
to_circuit
CNOTDihedral.to_circuit()
Return a QuantumCircuit implementing the CNOT-Dihedral element.
Returns
a circuit implementation of the CNOTDihedral object.
Return type
Remark:
Decompose 1 and 2-qubit CNOTDihedral elements.
References
- Shelly Garion and Andrew W. Cross, On the structure of the CNOT-Dihedral group, arXiv:2006.12042 [quant-ph]
- 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.