In this example we will showcase the qRange iterator. Using this object, we can perform loops where the termination condition is based on a QuantumFloat.

from qrisp import QuantumFloat, qRange, h

n = QuantumFloat(3, signed = True, name = "n")
qf = QuantumFloat(5, name = "qf")

n[:] = 4


n_results = n.get_measurement()

for i in qRange(n):
    qf += i

According to Gauß’s formula, we have

\[\sum_{k = 1}^n k = \frac{n (n+1)}{2}\]

Therefore our expectation is:

>>> print([n*(n+1)/2 for n in n_results.keys()])
[10.0, 15.0]

Querying the simulator delivers the result:

>>> print(qf)
{10: 0.5, 15: 0.5}