eclipse-qrisp / Qrisp

Qrisp - a framework for high-level programming of Quantum computers
https://www.qrisp.eu/
Eclipse Public License 2.0
83 stars 23 forks source link

Bug Report: unexpected behavior when combining QuantumModulus and QuantumBool #40

Open diehoq opened 5 months ago

diehoq commented 5 months ago

When trying to evaluate a conditional statement depending of a superposition state of QuantumModulus, the result is wrong and not in superposition. Here is a code snippet showing the issue and the expected behavior with QuantumFloat

import qrisp

qf = qrisp.QuantumModulus(10)

qrisp.h(qf[3])

print(qf)

q_bool_3 = (qf <=  4)

print(q_bool_3)

Output: {0: 0.5, 8: 0.5}
{True: 1.0}

import qrisp 

qf = qrisp.QuantumFloat(10)

qrisp.h(qf[3])

print(qf)

q_bool_3 = (qf <=  4)

print(q_bool_3)

Output: Simulating 10 qubits.. | | [ 0%] {0: 0.5, 8: 0.5}
{False: 0.5, True: 0.5}

For the time being a first solution proposed by @positr0nium is the following:

import qrisp

qf = qrisp.QuantumModulus(10)

qrisp.h(qf[3])

print(qf)

qf.__class__ = qrisp.QuantumFloat

qbl = qf >= 4

qf.__class__ = qrisp.QuantumModulus

print(qbl)

Output: {0: 0.5, 8: 0.5}
{False: 0.5, True: 0.5}