Skip to content

Deutsch-Josza broken for two-qubit case #156

@rsln-s

Description

@rsln-s

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions