qrisp.QuantumVariable.uncompute#

QuantumVariable.uncompute(do_it=True, recompute=False)[source]#

Method for automatic uncomputation. Uses a generalized form of this algorithm.

For more information check the uncomputation documentation.

Parameters
do_itbool, optional

If set to False, this variable will be appended to the uncomputation stack of it’s QuantumSession and uncomputed once an uncompute call with do_it = True is performed. The default is True.

recomputebool, optional

If set to True, this QuantumVariable will be uncomputed but temporarily recomputed, if it is required for the uncomputation of another QuantumVariable. For more information check recomputation. The default is False.

Examples

We create two QuantumVariables, apply some gates and perform automatic uncomputation:

>>> from qrisp import QuantumVariable, x, cx, h, p, mcx
>>> a = QuantumVariable(3)
>>> b = QuantumVariable(2)
>>> mcx(a, b[0])
>>> h(a[:2])
>>> x(b[0])
>>> cx(b[0], b[1])
>>> p(0.5, b[1])
>>> print(a.qs)
QuantumCircuit:
--------------
          ┌───┐
a.0: ──■──┤ H ├───────────────
       │  ├───┤
a.1: ──■──┤ H ├───────────────
       │  └───┘
a.2: ──■──────────────────────
     ┌─┴─┐┌───┐
b.0: ┤ X ├┤ X ├──■────────────
     └───┘└───┘┌─┴─┐┌────────┐
b.1: ──────────┤ X ├┤ P(0.5) ├
               └───┘└────────┘
Live QuantumVariables:
---------------------
QuantumVariable a
QuantumVariable b
>>> b.uncompute()
>>> print(b.qs)
QuantumCircuit:
--------------
     ┌────────┐                              ┌────────┐┌───┐
a.0: ┤0       ├──────────────────────────────┤0       ├┤ H ├
     │        │                              │        │├───┤
a.1: ┤1       ├──────────────────────────────┤1       ├┤ H ├
     │  pt3cx │                              │  pt3cx │└───┘
a.2: ┤2       ├──────────────────────────────┤2       ├─────
     │        │┌───┐                    ┌───┐│        │
b.0: ┤3       ├┤ X ├──■──────────────■──┤ X ├┤3       ├─────
     └────────┘└───┘┌─┴─┐┌────────┐┌─┴─┐└───┘└────────┘
b.1: ───────────────┤ X ├┤ P(0.5) ├┤ X ├────────────────────
                    └───┘└────────┘└───┘
Live QuantumVariables:
---------------------
QuantumVariable a