IfElseOp#
- class qiskit.circuit.IfElseOp(condition, true_body, false_body=None, label=None)[ソース]#
ベースクラス:
ControlFlowOp
A circuit operation which executes a program (
true_body
) if a provided condition (condition
) evaluates to true, and optionally evaluates another program (false_body
) otherwise.- パラメータ:
condition (tuple[ClassicalRegister, int] | tuple[Clbit, int] | expr.Expr) – A condition to be evaluated at circuit runtime which, if true, will trigger the evaluation of
true_body
. Can be specified as either a tuple of aClassicalRegister
to be tested for equality with a givenint
, or as a tuple of aClbit
to be compared to either abool
or anint
.true_body (QuantumCircuit) – A program to be executed if
condition
evaluates to true.false_body (QuantumCircuit | None) – A optional program to be executed if
condition
evaluates to false.label (str | None) – An optional label for identifying the instruction.
If provided,
false_body
must be of the samenum_qubits
andnum_clbits
astrue_body
.The classical bits used in
condition
must be a subset of those attached to the circuit on which thisIfElseOp
will be appended.Circuit symbol:
┌───────────┐ q_0: ┤0 ├ │ │ q_1: ┤1 ├ │ if_else │ q_2: ┤2 ├ │ │ c_0: ╡0 ╞ └───────────┘
Create a new instruction.
- パラメータ:
name (str) – instruction name
num_qubits (int) – instruction’s qubit width
num_clbits (int) – instruction’s clbit width
params (list[int|float|complex|str|ndarray|list|ParameterExpression]) – list of parameters
duration (int or float) – instruction’s duration. it must be integer if
unit
is 『dt』unit (str) – time unit of duration
label (str or None) – An optional label for identifying the instruction.
- 例外:
CircuitError – when the register is not in the correct format.
TypeError – when the optional label is provided, but it is not a string.
Attributes
- blocks#
- condition_bits#
Get Clbits in condition.
- decompositions#
Get the decompositions of the instruction from the SessionEquivalenceLibrary.
- definition#
Return definition in terms of other basic gates.
- duration#
Get the duration.
- label#
Return instruction label
- name#
Return the name.
- num_clbits#
Return the number of clbits.
- num_qubits#
Return the number of qubits.
- params#
- unit#
Get the time unit of duration.
Methods
- add_decomposition(decomposition)#
Add a decomposition of the instruction to the SessionEquivalenceLibrary.
- assemble()#
Assemble a QasmQobjInstruction
- broadcast_arguments(qargs, cargs)#
Validation of the arguments.
- パラメータ:
qargs (List) – List of quantum bit arguments.
cargs (List) – List of classical bit arguments.
- 列挙:
Tuple(List, List) – A tuple with single arguments.
- 例外:
CircuitError – If the input is not valid. For example, the number of arguments does not match the gate expectation.
- c_if(classical, val)[ソース]#
Set a classical equality condition on this instruction between the register or cbit
classical
and valueval
.注釈
This is a setter method, not an additive one. Calling this multiple times will silently override any previously set condition; it does not stack.
- copy(name=None)#
Copy of the instruction.
- パラメータ:
name (str) – name to be given to the copied circuit, if
None
then the name stays the same.- 戻り値:
a copy of the current instruction, with the name updated if it was provided
- 戻り値の型:
- inverse()#
Invert this instruction.
If the instruction is composite (i.e. has a definition), then its definition will be recursively inverted.
Special instructions inheriting from Instruction can implement their own inverse (e.g. T and Tdg, Barrier, etc.)
- 戻り値:
a fresh instruction for the inverse
- 戻り値の型:
- 例外:
CircuitError – if the instruction is not composite and an inverse has not been implemented for it.
- is_parameterized()#
Return True .IFF. instruction is parameterized else False
- qasm()#
Return a default OpenQASM string for the instruction.
Derived instructions may override this to print in a different format (e.g.
measure q[0] -> c[0];
).バージョン 0.25.0 で非推奨: The method
qiskit.circuit.instruction.Instruction.qasm()
is deprecated as of qiskit-terra 0.25.0. It will be removed no earlier than 3 months after the release date. Correct exporting to OpenQASM 2 is the responsibility of a larger exporter; it cannot safely be done on an object-by-object basis without context. No replacement will be provided, because the premise is wrong.
- repeat(n)#
Creates an instruction with gate repeated n amount of times.
- パラメータ:
n (int) – Number of times to repeat the instruction
- 戻り値:
Containing the definition.
- 戻り値の型:
- 例外:
CircuitError – If n < 1.
- replace_blocks(blocks)[ソース]#
Replace blocks and return new instruction.
- パラメータ:
blocks (Iterable[QuantumCircuit]) – Iterable of circuits for 「if」 and 「else」 condition. If there is no 「else」 circuit it may be set to None or omitted.
- 戻り値:
New IfElseOp with replaced blocks.
- 戻り値の型:
- reverse_ops()#
For a composite instruction, reverse the order of sub-instructions.
This is done by recursively reversing all sub-instructions. It does not invert any gate.
- 戻り値:
- a new instruction with
sub-instructions reversed.
- 戻り値の型:
- soft_compare(other)#
Soft comparison between gates. Their names, number of qubits, and classical bit numbers must match. The number of parameters must match. Each parameter is compared. If one is a ParameterExpression then it is not taken into account.
- パラメータ:
other (instruction) – other instruction.
- 戻り値:
are self and other equal up to parameter expressions.
- 戻り値の型:
- validate_parameter(parameter)#
Instruction parameters has no validation or normalization.