Skip to main contentIBM Quantum Documentation

HalfAdderSynthesisDefault

class qiskit.transpiler.passes.synthesis.hls_plugins.HalfAdderSynthesisDefault

GitHub

Bases: HighLevelSynthesisPlugin

The default half-adder (no carry in, but a carry out qubit) synthesis.

If we have an auxiliary qubit available, the Cuccaro ripple-carry adder uses O(n)O(n) CX gates and 1 auxiliary qubit, whereas the Vedral ripple-carry uses more CX and n1n-1 auxiliary qubits. The QFT-based adder uses no auxiliary qubits, but O(n2)O(n^2), hence it is only used if no auxiliary qubits are available.

This plugin name is:HalfAdder.default which can be used as the key on an HLSConfig object to use this method with HighLevelSynthesis.

If at least one clean auxiliary qubit is available, the HalfAdderSynthesisC04 is used, otherwise HalfAdderSynthesisD00.

The plugin supports the following plugin-specific options:

  • num_clean_ancillas: The number of clean auxiliary qubits available.

Methods

run

run(high_level_object, coupling_map=None, target=None, qubits=None, **options)

GitHub

Run synthesis for the given Operation.

Parameters

  • high_level_object (Operation) – The Operation to synthesize to a DAGCircuit object.
  • coupling_map (CouplingMap) – The coupling map of the backend in case synthesis is done on a physical circuit.
  • target (Target) – A target representing the target backend.
  • qubits (list) – List of qubits over which the operation is defined in case synthesis is done on a physical circuit.
  • options – Additional method-specific optional kwargs.

Returns

The quantum circuit representation of the Operation

when successful, and None otherwise.

Return type

QuantumCircuit

Was this page helpful?
Report a bug or request content on GitHub.