qiskit-documentation/docs/api/qiskit/0.29/qiskit.ignis.verification.C...

316 lines
10 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: CNOTDihedral
description: API reference for qiskit.ignis.verification.CNOTDihedral
in_page_toc_min_heading_level: 1
python_api_type: class
python_api_name: qiskit.ignis.verification.CNOTDihedral
---
# CNOTDihedral
<Class id="qiskit.ignis.verification.CNOTDihedral" isDedicatedPage={true} github="https://github.com/qiskit-community/qiskit-ignis/tree/stable/0.6/qiskit/ignis/verification/randomized_benchmarking/dihedral.py" signature="CNOTDihedral(data, validate=True)" modifiers="class">
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\]](https://arxiv.org/abs/2006.12042)
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
<Function id="qiskit.ignis.verification.CNOTDihedral.adjoint" signature="CNOTDihedral.adjoint()">
Return the conjugate transpose of the CNOTDihedral element
</Function>
### cnot
<Function id="qiskit.ignis.verification.CNOTDihedral.cnot" signature="CNOTDihedral.cnot(i, j)">
Apply a CNOT gate to this element. Left multiply the element by CNOT\_\{i,j}.
</Function>
### compose
<Function id="qiskit.ignis.verification.CNOTDihedral.compose" signature="CNOTDihedral.compose(other, qargs=None, front=False)">
Return the composed operator.
**Parameters**
* **other** ([*CNOTDihedral*](qiskit.ignis.verification.CNOTDihedral "qiskit.ignis.verification.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](qiskit.ignis.verification.CNOTDihedral "qiskit.ignis.verification.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()`](qiskit.ignis.verification.CNOTDihedral#dot "qiskit.ignis.verification.CNOTDihedral.dot") method.
</Function>
### conjugate
<Function id="qiskit.ignis.verification.CNOTDihedral.conjugate" signature="CNOTDihedral.conjugate()">
Return the conjugate of the CNOTDihedral element.
</Function>
### copy
<Function id="qiskit.ignis.verification.CNOTDihedral.copy" signature="CNOTDihedral.copy()">
Make a deep copy of current operator.
</Function>
### dot
<Function id="qiskit.ignis.verification.CNOTDihedral.dot" signature="CNOTDihedral.dot(other, qargs=None)">
Return the right multiplied operator self \* other.
**Parameters**
* **other** ([*CNOTDihedral*](qiskit.ignis.verification.CNOTDihedral "qiskit.ignis.verification.CNOTDihedral")) an operator object.
* **qargs** (*None*) using specific qargs is not implemented for this operator.
**Returns**
The operator self \* other.
**Return type**
[CNOTDihedral](qiskit.ignis.verification.CNOTDihedral "qiskit.ignis.verification.CNOTDihedral")
**Raises**
* **QiskitError** if operators have incompatible dimensions for composition.
* **NotImplementedError** if qargs is not None.
</Function>
### expand
<Function id="qiskit.ignis.verification.CNOTDihedral.expand" signature="CNOTDihedral.expand(other)">
Return the tensor product operator: other tensor self.
**Parameters**
**other** ([*CNOTDihedral*](qiskit.ignis.verification.CNOTDihedral "qiskit.ignis.verification.CNOTDihedral")) an operator subclass object.
**Returns**
the tensor product operator: other tensor other.
**Return type**
[CNOTDihedral](qiskit.ignis.verification.CNOTDihedral "qiskit.ignis.verification.CNOTDihedral")
</Function>
### flip
<Function id="qiskit.ignis.verification.CNOTDihedral.flip" signature="CNOTDihedral.flip(i)">
Apply X to this element. Left multiply the element by X\_i.
</Function>
### from\_circuit
<Function id="qiskit.ignis.verification.CNOTDihedral.from_circuit" signature="CNOTDihedral.from_circuit(circuit)">
Initialize from a QuantumCircuit or Instruction.
**Parameters**
**circuit** ([*QuantumCircuit*](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") *or*[*Instruction*](qiskit.circuit.Instruction "qiskit.circuit.Instruction")) instruction to initialize.
**Returns**
the CNOTDihedral object for the circuit.
**Return type**
[CNOTDihedral](qiskit.ignis.verification.CNOTDihedral "qiskit.ignis.verification.CNOTDihedral")
**Raises**
**QiskitError** if the input instruction is not CNOTDihedral or contains classical register instruction.
</Function>
### input\_dims
<Function id="qiskit.ignis.verification.CNOTDihedral.input_dims" signature="CNOTDihedral.input_dims(qargs=None)">
Return tuple of input dimension for specified subsystems.
</Function>
### is\_cnotdihedral
<Function id="qiskit.ignis.verification.CNOTDihedral.is_cnotdihedral" signature="CNOTDihedral.is_cnotdihedral()">
Return True if input is a CNOTDihedral element.
</Function>
### output\_dims
<Function id="qiskit.ignis.verification.CNOTDihedral.output_dims" signature="CNOTDihedral.output_dims(qargs=None)">
Return tuple of output dimension for specified subsystems.
</Function>
### phase
<Function id="qiskit.ignis.verification.CNOTDihedral.phase" signature="CNOTDihedral.phase(k, i)">
Apply an k-th power of T to this element. Left multiply the element by T\_i^k.
</Function>
### power
<Function id="qiskit.ignis.verification.CNOTDihedral.power" signature="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](qiskit.quantum_info.Pauli "qiskit.quantum_info.Pauli")
**Raises**
**QiskitError** if the input and output dimensions of the operator are not equal, or the power is not a positive integer.
</Function>
### reshape
<Function id="qiskit.ignis.verification.CNOTDihedral.reshape" signature="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.
</Function>
### tensor
<Function id="qiskit.ignis.verification.CNOTDihedral.tensor" signature="CNOTDihedral.tensor(other)">
Return the tensor product operator: self tensor other.
**Parameters**
**other** ([*CNOTDihedral*](qiskit.ignis.verification.CNOTDihedral "qiskit.ignis.verification.CNOTDihedral")) an operator subclass object.
**Returns**
the tensor product operator: self tensor other.
**Return type**
[CNOTDihedral](qiskit.ignis.verification.CNOTDihedral "qiskit.ignis.verification.CNOTDihedral")
</Function>
### to\_circuit
<Function id="qiskit.ignis.verification.CNOTDihedral.to_circuit" signature="CNOTDihedral.to_circuit()">
Return a QuantumCircuit implementing the CNOT-Dihedral element.
**Returns**
a circuit implementation of the CNOTDihedral object.
**Return type**
[QuantumCircuit](qiskit.circuit.QuantumCircuit "qiskit.circuit.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\]](https://arxiv.org/abs/2006.12042)
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).
</Function>
### to\_instruction
<Function id="qiskit.ignis.verification.CNOTDihedral.to_instruction" signature="CNOTDihedral.to_instruction()">
Return a Gate instruction implementing the CNOTDihedral object.
</Function>
### to\_matrix
<Function id="qiskit.ignis.verification.CNOTDihedral.to_matrix" signature="CNOTDihedral.to_matrix()">
Convert operator to Numpy matrix.
</Function>
### to\_operator
<Function id="qiskit.ignis.verification.CNOTDihedral.to_operator" signature="CNOTDihedral.to_operator()">
Convert to an Operator object.
</Function>
### transpose
<Function id="qiskit.ignis.verification.CNOTDihedral.transpose" signature="CNOTDihedral.transpose()">
Return the transpose of the CNOT-Dihedral element.
</Function>
## Attributes
### dim
<Attribute id="qiskit.ignis.verification.CNOTDihedral.dim">
Return tuple (input\_shape, output\_shape).
</Attribute>
### key
<Attribute id="qiskit.ignis.verification.CNOTDihedral.key">
Return a string representation of a CNOT-dihedral object.
</Attribute>
### num\_qubits
<Attribute id="qiskit.ignis.verification.CNOTDihedral.num_qubits">
Return the number of qubits if a N-qubit operator or None otherwise.
</Attribute>
### qargs
<Attribute id="qiskit.ignis.verification.CNOTDihedral.qargs">
Return the qargs for the operator.
</Attribute>
### settings
<Attribute id="qiskit.ignis.verification.CNOTDihedral.settings">
Return operator settings.
</Attribute>
</Class>