Skip to main content
IBM Quantum Platform
이 페이지는 Qiskit SDK 의 이전 버전에서 가져온 것으로, 최신 버전에는 존재하지 않습니다. 최신 버전으로 업데이트하시기를 권장합니다. 자세한 정보는 릴리스 정보를 참조하십시오.

ClassicalFunction compiler

qiskit.circuit.classicalfunction


Overview

Warning

This module is deprecated as of Qiskit 1.4.0. It will be removed in the Qiskit 2.0 release.

The classical function compiler provides the necessary tools to map a classical potentially irreversible functions into quantum circuits. Below is a simple example of how to synthesize a simple boolean function defined using Python into a QuantumCircuit:

from qiskit.circuit.classicalfunction import classical_function
from qiskit.circuit.classicalfunction.types import Int1

@classical_function
def grover_oracle(a: Int1, b: Int1, c: Int1, d: Int1) -> Int1:
    return (not a and b and not c and d)

quantum_circuit = grover_oracle.synth(registerless=False)
quantum_circuit.draw('text')

     a: ──o──

     b: ──■──

     c: ──o──

     d: ──■──
        ┌─┴─┐
return: ┤ X ├
        └───┘

Following Qiskit’s little-endian bit ordering convention, the left-most bit (a) is the most significant bit and the right-most bit (d) is the least significant bit.

Warning

The functionality of qiskit.circuit.classicalfunction requires tweedledum, which isn’t available on all platforms (up to Python version 3.11). See tweedledum installation guide for more details.


Supplementary Information

Tweedledum

Tweedledum is a C++-17 header-only library that implements a large set of reversible (and quantum) synthesis, optimization, and mapping algorithms. The classical function compiler relies on it and its dependencies to both represent logic networks and synthesize them into quantum circuits.

ClassicalFunction data types

At the moment, the only type supported by the classical_function compilers is qiskit.circuit.classicalfunction.types.Int1. The classical function function to parse must include type hints (just Int1 for now). The resulting gate will be a gate in the size of the sum of all the parameters and the return.

The type Int1 means the classical function will only operate at bit level.


ClassicalFunction compiler API

classical_function

Decorator for a classical function that returns a ClassicalFunction object.

classical_function

qiskit.circuit.classicalfunction.classical_function(func)

GitHub

Parses and type checks the callable func to compile it into an ClassicalFunction that can be synthesized into a QuantumCircuit.

Deprecated since version 1.4

The function qiskit.circuit.classicalfunction.classical_function() is deprecated as of qiskit 1.4. It will be removed in Qiskit 2.0. Use PhaseOracle instead, which can be turned into a bit-flip oracle by applying Hadamard gates on the target qubit before and after the instruction, and conditioning.the instruction on the target qubit.

Parameters

func (callable) – A callable (with type hints) to compile into an ClassicalFunction.

Returns

An object that can synthesis into a QuantumCircuit (via synth() method).

Return type

ClassicalFunction

ClassicalFunction

ClassicalFunction(source[, name])Represent a classical function and its logic network.
BooleanExpression(expression[, name, var_order])The Boolean Expression gate.

Exceptions

ClassicalFunctionCompilerTypeError(*message)ClassicalFunction compiler type error.
ClassicalFunctionParseError(*message)ClassicalFunction compiler parse error.
ClassicalFunctionCompilerTypeError(*message)ClassicalFunction compiler type error.
이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.