The following example breaks Deutsch-Josza for two-qubit case with error:
Traceback (most recent call last):
File "./deutsch-josza.py", line 15, in <module>
is_constant = dj.is_constant(qvm,qubit_bitmap)
File "/Users/ruslan/anaconda3/envs/pyquil/lib/python3.6/site-packages/grove/deutsch_jozsa/deutsch_jozsa.py", line 59, in is_constant
constant = all([bit == 0 for bit in bitstring])
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Code producing the error:
import numpy as np
import pyquil.api as api
import pyquil.quil as pq
from pyquil.gates import X, H, CNOT
from grove.deutsch_jozsa.deutsch_jozsa import DeutschJosza, ORACLE_GATE_NAME
qvm = api.QVMConnection()
qubit_bitmap = {"00": "1", "01" : "1", "10" : "1", "11": "1"}
dj = DeutschJosza()
is_constant = dj.is_constant(qvm,qubit_bitmap)
print(is_constant)
Is fixable by changing the offending line to:
constant = all([bit == 0 for bit in bitstring][0])
but I'm not sure if that's the most elegant solution.
You might also want to consider adding it to tests (they lack working 2-qubit mapping examples, only the ones that are invalid).
See also PR #146
The following example breaks Deutsch-Josza for two-qubit case with error:
Code producing the error:
Is fixable by changing the offending line to:
but I'm not sure if that's the most elegant solution.
You might also want to consider adding it to tests (they lack working 2-qubit mapping examples, only the ones that are invalid).
See also PR #146