---
title: LinearAmplitudeFunction (latest version)
description: API reference for qiskit.circuit.library.LinearAmplitudeFunction in the latest version of qiskit
source: https://eu-de.quantum.cloud.ibm.com/docs/en/api/qiskit/qiskit.circuit.library.LinearAmplitudeFunction
---

# LinearAmplitudeFunction

*class* `qiskit.circuit.library.LinearAmplitudeFunction(num_state_qubits, slope, offset, domain, image, rescaling_factor=1, breakpoints=None, name='F')`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/2.5/qiskit/circuit/library/arithmetic/linear_amplitude_function.py#L26-L181)

Bases: [`QuantumCircuit`](/docs/api/qiskit/qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit")

A circuit implementing a (piecewise) linear function on qubit amplitudes.

An amplitude function $F$ of a function $f$ is a mapping

$$
F|x\rangle|0\rangle = \sqrt{1 - \hat{f}(x)} |x\rangle|0\rangle + \sqrt{\hat{f}(x)}
|x\rangle|1\rangle.
$$

for a function $\hat{f}: \{ 0, ..., 2^n - 1 \} \rightarrow [0, 1]$, where $|x\rangle$ is a $n$ qubit state.

This circuit implements $F$ for piecewise linear functions $\hat{f}$. In this case, the mapping $F$ can be approximately implemented using a Taylor expansion and linearly controlled Pauli-Y rotations, see \[1, 2] for more detail. This approximation uses a `rescaling_factor` to determine the accuracy of the Taylor expansion.

In general, the function of interest $f$ is defined from some interval $[a,b]$, the `domain` to $[c,d]$, the `image`, instead of $\{ 1, ..., N \}$ to $[0, 1]$. Using an affine transformation we can rescale $f$ to $\hat{f}$:

$$
\hat{f}(x) = \frac{f(\phi(x)) - c}{d - c}
$$

with

$$
\phi(x) = a + \frac{b - a}{2^n - 1} x.
$$

If $f$ is a piecewise linear function on $m$ intervals $[p_{i-1}, p_i], i \in \{1, ..., m\}$ with slopes $\alpha_i$ and offsets $\beta_i$ it can be written as

$$
f(x) = \sum_{i=1}^m 1_{[p_{i-1}, p_i]}(x) (\alpha_i x + \beta_i)
$$

where $1_{[a, b]}$ is an indicator function that is 1 if the argument is in the interval $[a, b]$ and otherwise 0. The breakpoints $p_i$ can be specified by the `breakpoints` argument.

References:

\[1] Woerner, S., & Egger, D. J. (2018). Quantum Risk Analysis. [arXiv:1806.06893](https://arxiv.org/abs/1806.06893)

\[2] Gacon, J., Zoufal, C., & Woerner, S. (2020). Quantum-Enhanced Simulation-Based Optimization. [arXiv:2005.10780](https://arxiv.org/abs/2005.10780)

> **Deprecated since version 2.2**
>
> The class `qiskit.circuit.library.arithmetic.linear_amplitude_function.LinearAmplitudeFunction` is deprecated as of Qiskit 2.2. It will be removed in Qiskit 3.0. Use the class qiskit.circuit.library.LinearAmplitudeFunctionGate instead.

**Parameters**

- **num\_state\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int)) – The number of qubits used to encode the variable $x$.
- **slope** ([*float*](https://docs.python.org/3/library/functions.html#float)  *|*[*list*](https://docs.python.org/3/library/stdtypes.html#list)*\[*[*float*](https://docs.python.org/3/library/functions.html#float)*]*) – The slope of the linear function. Can be a list of slopes if it is a piecewise linear function.
- **offset** ([*float*](https://docs.python.org/3/library/functions.html#float)  *|*[*list*](https://docs.python.org/3/library/stdtypes.html#list)*\[*[*float*](https://docs.python.org/3/library/functions.html#float)*]*) – The offset of the linear function. Can be a list of offsets if it is a piecewise linear function.
- **domain** ([*tuple*](https://docs.python.org/3/library/stdtypes.html#tuple)*\[*[*float*](https://docs.python.org/3/library/functions.html#float)*,* [*float*](https://docs.python.org/3/library/functions.html#float)*]*) – The domain of the function as tuple $(x_\min{}, x_\max{})$.
- **image** ([*tuple*](https://docs.python.org/3/library/stdtypes.html#tuple)*\[*[*float*](https://docs.python.org/3/library/functions.html#float)*,* [*float*](https://docs.python.org/3/library/functions.html#float)*]*) – The image of the function as tuple $(f_\min{}, f_\max{})$.
- **rescaling\_factor** ([*float*](https://docs.python.org/3/library/functions.html#float)) – The rescaling factor to adjust the accuracy in the Taylor approximation.
- **breakpoints** ([*list*](https://docs.python.org/3/library/stdtypes.html#list)*\[*[*float*](https://docs.python.org/3/library/functions.html#float)*] | None*) – The breakpoints if the function is piecewise linear. If None, the function is not piecewise.
- **name** ([*str*](https://docs.python.org/3/library/stdtypes.html#str)) – Name of the circuit.

## Attributes

### 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
```

## Methods

### post\_processing

`post_processing(scaled_value)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/2.5/qiskit/circuit/library/arithmetic/linear_amplitude_function.py#L162-L181)

Map the function value of the approximated $\hat{f}$ to $f$.

**Parameters**

**scaled\_value** ([*float*](https://docs.python.org/3/library/functions.html#float)) – A function value from the Taylor expansion of $\hat{f}(x)$.

**Returns**

The `scaled_value` mapped back to the domain of $f$, by first inverting the transformation used for the Taylor approximation and then mapping back from $[0, 1]$ to the original domain.

**Return type**

[float](https://docs.python.org/3/library/functions.html#float)
