qiskit.ignis.verification.CNOTDihedral
class CNOTDihedral(data, validate=True)
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.
__init__
__init__(data, validate=True)
Initialize a CNOTDihedral operator object.
Methods
__init__ (data[, validate]) | Initialize a CNOTDihedral operator object. |
adjoint () | Return the conjugate transpose of the CNOTDihedral element |
cnot (i, j) | Apply a CNOT gate to this element. |
compose (other[, qargs, front]) | Return the composed operator. |
conjugate () | Return the conjugate of the CNOTDihedral element. |
copy () | Make a deep copy of current operator. |
dot (other[, qargs]) | Return the right multiplied operator self * other. |
expand (other) | Return the tensor product operator: other tensor self. |
flip (i) | Apply X to this element. |
from_circuit (circuit) | Initialize from a QuantumCircuit or Instruction. |
input_dims ([qargs]) | Return tuple of input dimension for specified subsystems. |
is_cnotdihedral () | Return True if input is a CNOTDihedral element. |
output_dims ([qargs]) | Return tuple of output dimension for specified subsystems. |
phase (k, i) | Apply an k-th power of T to this element. |
power (n) | Return the compose of a operator with itself n times. |
reshape ([input_dims, output_dims, num_qubits]) | Return a shallow copy with reshaped input and output subsystem dimensions. |
tensor (other) | Return the tensor product operator: self tensor other. |
to_circuit () | Return a QuantumCircuit implementing the CNOT-Dihedral element. |
to_instruction () | Return a Gate instruction implementing the CNOTDihedral object. |
to_matrix () | Convert operator to Numpy matrix. |
to_operator () | Convert to an Operator object. |
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. |
adjoint
adjoint()
Return the conjugate transpose of the CNOTDihedral element
cnot
cnot(i, j)
Apply a CNOT gate to this element. Left multiply the element by CNOT_{i,j}.
compose
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
conjugate()
Return the conjugate of the CNOTDihedral element.
copy
copy()
Make a deep copy of current operator.
dim
Return tuple (input_shape, output_shape).
dot
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
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
flip(i)
Apply X to this element. Left multiply the element by X_i.
from_circuit
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
input_dims(qargs=None)
Return tuple of input dimension for specified subsystems.
is_cnotdihedral
is_cnotdihedral()
Return True if input is a CNOTDihedral element.
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.
output_dims
output_dims(qargs=None)
Return tuple of output dimension for specified subsystems.
phase
phase(k, i)
Apply an k-th power of T to this element. Left multiply the element by T_i^k.
power
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.
qargs
Return the qargs for the operator.
reshape
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
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
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
to_instruction()
Return a Gate instruction implementing the CNOTDihedral object.
to_matrix
to_matrix()
Convert operator to Numpy matrix.
to_operator
to_operator()
Convert to an Operator object.
transpose
transpose()
Return the transpose of the CNOT-Dihedral element.