---
title: WeightedAdder (v2.4)
description: API reference for qiskit.circuit.library.WeightedAdder in qiskit v2.4
source: https://eu-de.quantum.cloud.ibm.com/docs/en/api/qiskit/2.4/qiskit.circuit.library.WeightedAdder
---

# WeightedAdder

*class* `qiskit.circuit.library.WeightedAdder(num_state_qubits=None, weights=None, name='adder')`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/2.4/qiskit/circuit/library/arithmetic/weighted_adder.py#L25-L354)

Bases: `BlueprintCircuit`

A circuit to compute the weighted sum of qubit registers.

Given $n$ qubit basis states $q_0, \ldots, q_{n-1} \in \{0, 1\}$ and non-negative integer weights $\lambda_0, \ldots, \lambda_{n-1}$, this circuit performs the operation

$$
|q_0 \ldots q_{n-1}\rangle |0\rangle_s
\mapsto |q_0 \ldots q_{n-1}\rangle |\sum_{j=0}^{n-1} \lambda_j q_j\rangle_s
$$

where $s$ is the number of sum qubits required. This can be computed as

$$
s = 1 + \left\lfloor \log_2\left( \sum_{j=0}^{n-1} \lambda_j \right) \right\rfloor
$$

or $s = 1$ if the sum of the weights is 0 (then the expression in the logarithm is invalid).

For qubits in a circuit diagram, the first weight applies to the upper-most qubit. For an example where the state of 4 qubits is added into a sum register, the circuit can be schematically drawn as

```text
           ┌────────┐
  state_0: ┤0       ├ | state_0 * weights[0]
           │        │ |
  state_1: ┤1       ├ | + state_1 * weights[1]
           │        │ |
  state_2: ┤2       ├ | + state_2 * weights[2]
           │        │ |
  state_3: ┤3       ├ | + state_3 * weights[3]
           │        │
    sum_0: ┤4       ├ |
           │  Adder │ |
    sum_1: ┤5       ├ | = sum_0 * 2^0 + sum_1 * 2^1 + sum_2 * 2^2
           │        │ |
    sum_2: ┤6       ├ |
           │        │
  carry_0: ┤7       ├
           │        │
  carry_1: ┤8       ├
           │        │
control_0: ┤9       ├
           └────────┘
```

**Parameters**

- **num\_state\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int) *| None*) – The number of state qubits.
- **weights** ([*list*](https://docs.python.org/3/library/stdtypes.html#list)*\[*[*int*](https://docs.python.org/3/library/functions.html#int)*] | None*) – List of weights, one for each state qubit. If none are provided they default to 1 for every qubit.
- **name** ([*str*](https://docs.python.org/3/library/stdtypes.html#str)) – The name of the circuit.

## Attributes

### num\_carry\_qubits

The number of carry qubits required to compute the sum.

Note that this is not necessarily equal to the number of ancilla qubits, these can be queried using `num_ancilla_qubits`.

**Returns**

The number of carry qubits required to compute the sum.

### num\_control\_qubits

The number of additional control qubits required.

Note that the total number of ancilla qubits can be obtained by calling the method `num_ancilla_qubits`.

**Returns**

The number of additional control qubits required (0 or 1).

### num\_state\_qubits

The number of qubits to be summed.

**Returns**

The number of state qubits.

### num\_sum\_qubits

The number of sum qubits in the circuit.

**Returns**

The number of qubits needed to represent the weighted sum of the qubits.

### weights

The weights for the qubit states.

**Returns**

The weight for the qubit states.

### name

Type: `str`

A human-readable name for the circuit.

**Example**

```python
from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
```

```text
my_circuit
```
