ClassicalFunction#

class qiskit.circuit.classicalfunction.ClassicalFunction(source, name=None)[source]#

Bases: ClassicalElement

Represent a classical function and its logic network.

Creates a ClassicalFunction from Python source code in source.

The code should be a single function with types.

প্যারামিটার:
  • source (str) -- Python code with type hints.

  • name (str) -- Optional. Default: "classicalfunction". ClassicalFunction name.

রেইজেস:

QiskitError -- If source is not a string.

Attributes

args#

Returns the classicalfunction arguments

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.

network#

Returns the logical network

num_clbits#

Return the number of clbits.

num_qubits#

Return the number of qubits.

params#

return instruction params.

qregs#

The list of qregs used by the classicalfunction

scopes#

Returns the scope dict

truth_table#

Returns (and computes) the truth table

types#

Dumps a list of scopes with their variables and types.

রিটার্নস:

A list of scopes as dicts, where key is the variable name and value is its type.

রিটার্ন টাইপ:

list(dict)

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 and handling of the arguments and its relationship.

For example, cx([q[0],q[1]], q[2]) means cx(q[0], q[2]); cx(q[1], q[2]). This method yields the arguments in the right grouping. In the given example:

in: [[q[0],q[1]], q[2]],[]
outs: [q[0], q[2]], []
      [q[1], q[2]], []

The general broadcasting rules are:

  • If len(qargs) == 1:

    [q[0], q[1]] -> [q[0]],[q[1]]
    
  • If len(qargs) == 2:

    [[q[0], q[1]], [r[0], r[1]]] -> [q[0], r[0]], [q[1], r[1]]
    [[q[0]], [r[0], r[1]]]       -> [q[0], r[0]], [q[0], r[1]]
    [[q[0], q[1]], [r[0]]]       -> [q[0], r[0]], [q[1], r[0]]
    
  • If len(qargs) >= 3:

    [q[0], q[1]], [r[0], r[1]],  ...] -> [q[0], r[0], ...], [q[1], r[1], ...]
    
প্যারামিটার:
  • qargs (list) -- List of quantum bit arguments.

  • cargs (list) -- List of classical bit arguments.

রিটার্নস:

A tuple with single arguments.

রেইজেস:

CircuitError -- If the input is not valid. For example, the number of arguments does not match the gate expectation.

রিটার্ন টাইপ:

Iterable[tuple[list, list]]

c_if(classical, val)#

Set a classical equality condition on this instruction between the register or cbit classical and value val.

নোট

This is a setter method, not an additive one. Calling this multiple times will silently override any previously set condition; it does not stack.

compile()[source]#

Parses and creates the logical circuit

control(num_ctrl_qubits=1, label=None, ctrl_state=None)#

Return controlled version of gate. See ControlledGate for usage.

প্যারামিটার:
  • num_ctrl_qubits (int) -- number of controls to add to gate (default: 1)

  • label (str | None) -- optional gate label

  • ctrl_state (int | str | None) -- The control state in decimal or as a bitstring (e.g. '111'). If None, use 2**num_ctrl_qubits-1.

রিটার্নস:

Controlled version of gate. This default algorithm uses num_ctrl_qubits-1 ancilla qubits so returns a gate of size num_qubits + 2*num_ctrl_qubits - 1.

রিটার্ন টাইপ:

qiskit.circuit.ControlledGate

রেইজেস:

QiskitError -- unrecognized mode or invalid ctrl_state

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

রিটার্ন টাইপ:

qiskit.circuit.Instruction

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

রিটার্ন টাইপ:

qiskit.circuit.Instruction

রেইজেস:

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

power(exponent)#

Creates a unitary gate as gate^exponent.

প্যারামিটার:

exponent (float) -- Gate^exponent

রিটার্নস:

To which to_matrix is self.to_matrix^exponent.

রিটার্ন টাইপ:

qiskit.extensions.UnitaryGate

রেইজেস:

CircuitError -- If Gate is not unitary

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.

রিটার্ন টাইপ:

qiskit.circuit.Instruction

রেইজেস:

CircuitError -- If n < 1.

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.

রিটার্ন টাইপ:

qiskit.circuit.Instruction

simulate(bitstring)[source]#

Evaluate the expression on a bitstring.

This evaluation is done classically.

প্যারামিটার:

bitstring (str) -- The bitstring for which to evaluate.

রিটার্নস:

result of the evaluation.

রিটার্ন টাইপ:

bool

simulate_all()[source]#

Returns a truth table.

রিটার্নস:

a bitstring with a truth table

রিটার্ন টাইপ:

str

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.

রিটার্ন টাইপ:

bool

synth(registerless=True, synthesizer=None)[source]#

Synthesis the logic network into a QuantumCircuit.

প্যারামিটার:
  • registerless (bool) -- Default True. If False uses the parameter names to create

  • Otherwise (registers with those names.) --

  • register. (creates a circuit with a flat quantum) --

  • synthesizer (Callable[[ClassicalElement], QuantumCircuit] | None) -- Optional. If None tweedledum's pkrm_synth is used.

রিটার্নস:

A circuit implementing the logic network.

রিটার্ন টাইপ:

QuantumCircuit

to_matrix()#

Return a Numpy.array for the gate unitary matrix.

রিটার্নস:

if the Gate subclass has a matrix definition.

রিটার্ন টাইপ:

np.ndarray

রেইজেস:

CircuitError -- If a Gate subclass does not implement this method an exception will be raised when this base class method is called.

validate_parameter(parameter)#

Gate parameters should be int, float, or ParameterExpression