Source code for qibocal.protocols.two_qubit_interaction.chsh.utils
"""Auxiliary functions to run CHSH protocol."""
from qibo.config import log
READOUT_BASIS = ["ZZ", "ZX", "XZ", "XX"]
[docs]def compute_chsh(frequencies, basis, i):
"""Computes the chsh inequality out of the frequencies of the 4 circuits executed."""
chsh = 0
aux = 0
for freq in frequencies:
for outcome in freq:
if aux == 1 + 2 * (
basis % 2
): # This value sets where the minus sign is in the CHSH inequality
chsh -= (-1) ** (int(outcome[0]) + int(outcome[1])) * freq[outcome][i]
else:
chsh += (-1) ** (int(outcome[0]) + int(outcome[1])) * freq[outcome][i]
aux += 1
nshots = sum(freq[x][i] for x in freq)
try:
return chsh / nshots
except ZeroDivisionError:
log.warning("Zero number of shots, returning zero.")
return 0