Skip to content

Commit ad50a20

Browse files
authored
Merge pull request #1359 from qiboteam/hamming_weight
Fix to logic in `quantum_info.hamming_distance`
2 parents 1bb08d9 + fdc2c71 commit ad50a20

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

src/qibo/quantum_info/utils.py

+10-2
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,17 @@ def hamming_distance(
102102

103103
nbits = max(len(bitstring_1), len(bitstring_2))
104104

105-
difference = abs(int(bitstring_1, 2) - int(bitstring_2, 2))
105+
bitstring_1 = "0" * (nbits - len(bitstring_1)) + bitstring_1
106+
bitstring_2 = "0" * (nbits - len(bitstring_2)) + bitstring_2
106107

107-
return hamming_weight(f"{difference:{nbits}b}", return_indexes=return_indexes)
108+
difference = np.array(list(bitstring_1), dtype=int) - np.array(
109+
list(bitstring_2), dtype=int
110+
)
111+
difference = np.abs(difference)
112+
difference = difference.astype(str)
113+
difference = "".join(difference)
114+
115+
return hamming_weight(difference, return_indexes=return_indexes)
108116

109117

110118
def hadamard_transform(array, implementation: str = "fast", backend=None):

0 commit comments

Comments
 (0)