FA-90841 / Quantum circuit simulation / Open access
Statevector CNOT swaps control and target roles · case 01
A Bell-pair circuit with CNOT(0,1) leaves the state as |+>|0> amplitudes on the wrong basis states whenever the control is not in superposition symmetrically.
ROOT CAUSE
The CNOT kernel builds its control mask from the second operand and its target mask from the first, so the gate is applied as CNOT(t,c).
VERIFIED REPAIR
Take the control mask from g[1] and the target mask from g[2].
Unsuccessful approach: The attempted repair keeps the masks but tests the control with `i & c == 1`, comparing the masked value to 1, which only holds when the control is qubit 0.
Case contract
Input [n, gates]; start in |0...0>, apply gates h,x,y,z,s,sdg,t (["g", q]) and cx,cz,swap (["g", a, b]) with qubit 0 as the least significant bit of the basis index; return the statevector as [re, im] pairs rounded to 6 decimals.
Why this case matters
Statevector simulators underpin circuit unit tests; a gate-kernel slip silently corrupts every downstream amplitude.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
import cmath
N = 1
observations = []
def solve(x):
n, gates = x
dim = 1 << n
st = [0j] * dim
st[0] = 1 + 0j
r = 1 / math.sqrt(2)
for g in gates:
op = g[0]
if op in ('h', 'x', 'y', 'z', 's', 'sdg', 't'):
m = 1 << g[1]
for i in range(dim):
if i & m:
continue
a, b = st[i], st[i | m]
if op == 'h':
st[i], st[i | m] = (a + b) * r, (a - b) * r
elif op == 'x':
st[i], st[i | m] = b, a
elif op == 'y':
st[i], st[i | m] = -1j * b, 1j * a
elif op == 'z':
st[i | m] = -b
elif op == 's':
st[i | m] = 1j * b
elif op == 'sdg':
st[i | m] = -1j * b
else:
st[i | m] = b * cmath.exp(1j * math.pi / 4)
elif op == 'cx':
c, t = 1 << g[2], 1 << g[1]
for i in range(dim):
if i & c and not i & t:
st[i], st[i | t] = st[i | t], st[i]
elif op == 'cz':
both = (1 << g[1]) | (1 << g[2])
for i in range(dim):
if i & both == both:
st[i] = -st[i]
elif op == 'swap':
a, b = 1 << g[1], 1 << g[2]
for i in range(dim):
if i & a and not i & b:
j = (i ^ a) | b
st[i], st[j] = st[j], st[i]
return [[round(v.real, 6) + 0.0, round(v.imag, 6) + 0.0] for v in st]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: bell pair', [2, [['h', 0], ['cx', 0, 1]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]], ['regression: ghz three qubits', [3, [['h', 0], ['cx', 0, 1], ['cx', 1, 2]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]], ['regression: cx with control on high qubit', [2, [['x', 1], ['cx', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['control: empty circuit on two qubits', [2, []], [[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: swap moves excitation', [3, [['x', 0], ['swap', 0, 2]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: y on ground state', [1, [['y', 0]]], [[0.0, 0.0], [0.0, 1.0]]], ['control: y after x', [1, [['x', 0], ['y', 0]]], [[0.0, -1.0], [0.0, 0.0]]]], [['regression: random circuit 6', [2, [['cz', 0, 1], ['cz', 0, 1], ['z', 1], ['sdg', 0], ['x', 0], ['x', 1], ['cx', 0, 1]]], [[0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['regression: random circuit 7', [2, [['s', 0], ['cz', 1, 0], ['x', 1], ['cx', 1, 0], ['swap', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['regression: random circuit 29', [2, [['h', 1], ['sdg', 0], ['cx', 1, 0], ['z', 1], ['h', 1], ['t', 0], ['s', 1]]], [[0.5, 0.0], [-0.353553, -0.353553], [0.0, 0.5], [-0.353553, 0.353553]]], ['control: t after h', [1, [['h', 0], ['t', 0]]], [[0.707107, 0.0], [0.5, 0.5]]], ['control: sdg after h', [2, [['h', 1], ['sdg', 1]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, -0.707107], [0.0, 0.0]]], ['control: h on excited qubit', [1, [['x', 0], ['h', 0]]], [[0.707107, 0.0], [-0.707107, 0.0]]], ['control: single x on qubit 0 of three', [3, [['x', 0]]], [[0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]]], [['regression: random circuit 12', [3, [['sdg', 2], ['h', 2], ['h', 1], ['s', 0], ['z', 0], ['cx', 0, 1]]], [[0.5, 0.0], [0.0, 0.0], [0.5, 0.0], [0.0, 0.0], [0.5, 0.0], [0.0, 0.0], [0.5, 0.0], [0.0, 0.0]]], ['regression: random circuit 21', [3, [['cz', 2, 0], ['s', 0], ['cx', 1, 0], ['y', 2], ['sdg', 0], ['sdg', 2], ['cx', 0, 2]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['regression: random circuit 39', [3, [['swap', 0, 2], ['cx', 2, 1], ['y', 2], ['z', 2], ['cx', 0, 1], ['sdg', 0], ['cx', 2, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, -1.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 0', [3, [['swap', 2, 1], ['cx', 2, 0], ['z', 2], ['y', 1], ['cx', 0, 2], ['s', 1], ['swap', 1, 0]]], [[0.0, 0.0], [-1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 1', [3, [['cx', 1, 2], ['cz', 2, 1]]], [[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 2', [3, [['z', 0], ['sdg', 1], ['cx', 1, 0], ['cz', 0, 1], ['cx', 2, 0], ['y', 0], ['z', 2]]], [[0.0, 0.0], [0.0, 1.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 3', [2, [['x', 1], ['s', 1], ['x', 0], ['h', 0], ['s', 1], ['h', 1]]], [[-0.5, 0.0], [0.5, 0.0], [0.5, 0.0], [-0.5, 0.0]]]], [['regression: random circuit 29', [2, [['h', 1], ['sdg', 0], ['cx', 1, 0], ['z', 1], ['h', 1], ['t', 0], ['s', 1]]], [[0.5, 0.0], [-0.353553, -0.353553], [0.0, 0.5], [-0.353553, 0.353553]]], ['regression: random circuit 38', [2, [['sdg', 0], ['x', 0], ['cx', 0, 1], ['z', 1]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [-1.0, 0.0]]], ['regression: cx with control on high qubit', [2, [['x', 1], ['cx', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['control: random circuit 4', [2, [['cx', 0, 1], ['cz', 0, 1], ['h', 1], ['x', 1], ['y', 0], ['swap', 0, 1]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.707107], [0.0, 0.707107]]], ['control: random circuit 5', [2, [['cx', 1, 0], ['cx', 0, 1], ['t', 1], ['h', 1]]], [[0.707107, 0.0], [0.0, 0.0], [0.707107, 0.0], [0.0, 0.0]]], ['control: random circuit 8', [1, [['s', 0], ['h', 0], ['s', 0]]], [[0.707107, 0.0], [0.0, 0.707107]]], ['control: random circuit 9', [1, [['z', 0], ['t', 0], ['z', 0], ['h', 0]]], [[0.707107, 0.0], [0.707107, 0.0]]]], [['regression: bell pair', [2, [['h', 0], ['cx', 0, 1]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]], ['regression: ghz three qubits', [3, [['h', 0], ['cx', 0, 1], ['cx', 1, 2]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]], ['regression: random circuit 29', [2, [['h', 1], ['sdg', 0], ['cx', 1, 0], ['z', 1], ['h', 1], ['t', 0], ['s', 1]]], [[0.5, 0.0], [-0.353553, -0.353553], [0.0, 0.5], [-0.353553, 0.353553]]], ['control: random circuit 11', [2, [['s', 0], ['h', 0]]], [[0.707107, 0.0], [0.707107, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 13', [2, [['sdg', 0], ['cz', 0, 1], ['swap', 0, 1], ['cx', 1, 0]]], [[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 14', [2, [['z', 0], ['swap', 0, 1], ['x', 1], ['t', 0]]], [[0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0]]], ['control: random circuit 15', [2, [['cx', 1, 0], ['z', 0], ['cz', 1, 0], ['h', 1], ['h', 0], ['y', 1], ['h', 1]]], [[0.0, 0.0], [0.0, 0.0], [0.0, -0.707107], [0.0, -0.707107]]]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: bell pair | [[0.707107, 0.0], [0.707107, 0.0], [0.0, 0.0], [0.0, 0.0]] | [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]] | Failed |
| regression: ghz three qubits | [[0.707107, 0.0], [0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]] | [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]] | Failed |
| regression: cx with control on high qubit | [[0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0]] | [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]] | Failed |
| control: empty circuit on two qubits | [[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]] | [[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]] | Passed |
| control: swap moves excitation | [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]] | [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]] | Passed |
| control: y on ground state | [[0.0, 0.0], [0.0, 1.0]] | [[0.0, 0.0], [0.0, 1.0]] | Passed |
| control: y after x | [[0.0, -1.0], [0.0, 0.0]] | [[0.0, -1.0], [0.0, 0.0]] | Passed |
SHA-256 / a9fca4ae1583b4bc9a5ea830035a5583487c20fb4f4bb64fc01882ccca719602
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
import cmath
N = 1
observations = []
def solve(x):
n, gates = x
dim = 1 << n
st = [0j] * dim
st[0] = 1 + 0j
r = 1 / math.sqrt(2)
for g in gates:
op = g[0]
if op in ('h', 'x', 'y', 'z', 's', 'sdg', 't'):
m = 1 << g[1]
for i in range(dim):
if i & m:
continue
a, b = st[i], st[i | m]
if op == 'h':
st[i], st[i | m] = (a + b) * r, (a - b) * r
elif op == 'x':
st[i], st[i | m] = b, a
elif op == 'y':
st[i], st[i | m] = -1j * b, 1j * a
elif op == 'z':
st[i | m] = -b
elif op == 's':
st[i | m] = 1j * b
elif op == 'sdg':
st[i | m] = -1j * b
else:
st[i | m] = b * cmath.exp(1j * math.pi / 4)
elif op == 'cx':
c, t = 1 << g[1], 1 << g[2]
for i in range(dim):
if i & c == 1 and not i & t:
st[i], st[i | t] = st[i | t], st[i]
elif op == 'cz':
both = (1 << g[1]) | (1 << g[2])
for i in range(dim):
if i & both == both:
st[i] = -st[i]
elif op == 'swap':
a, b = 1 << g[1], 1 << g[2]
for i in range(dim):
if i & a and not i & b:
j = (i ^ a) | b
st[i], st[j] = st[j], st[i]
return [[round(v.real, 6) + 0.0, round(v.imag, 6) + 0.0] for v in st]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: bell pair', [2, [['h', 0], ['cx', 0, 1]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]], ['regression: ghz three qubits', [3, [['h', 0], ['cx', 0, 1], ['cx', 1, 2]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]], ['regression: cx with control on high qubit', [2, [['x', 1], ['cx', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['control: empty circuit on two qubits', [2, []], [[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: swap moves excitation', [3, [['x', 0], ['swap', 0, 2]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: y on ground state', [1, [['y', 0]]], [[0.0, 0.0], [0.0, 1.0]]], ['control: y after x', [1, [['x', 0], ['y', 0]]], [[0.0, -1.0], [0.0, 0.0]]]], [['regression: random circuit 6', [2, [['cz', 0, 1], ['cz', 0, 1], ['z', 1], ['sdg', 0], ['x', 0], ['x', 1], ['cx', 0, 1]]], [[0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['regression: random circuit 7', [2, [['s', 0], ['cz', 1, 0], ['x', 1], ['cx', 1, 0], ['swap', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['regression: random circuit 29', [2, [['h', 1], ['sdg', 0], ['cx', 1, 0], ['z', 1], ['h', 1], ['t', 0], ['s', 1]]], [[0.5, 0.0], [-0.353553, -0.353553], [0.0, 0.5], [-0.353553, 0.353553]]], ['control: t after h', [1, [['h', 0], ['t', 0]]], [[0.707107, 0.0], [0.5, 0.5]]], ['control: sdg after h', [2, [['h', 1], ['sdg', 1]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, -0.707107], [0.0, 0.0]]], ['control: h on excited qubit', [1, [['x', 0], ['h', 0]]], [[0.707107, 0.0], [-0.707107, 0.0]]], ['control: single x on qubit 0 of three', [3, [['x', 0]]], [[0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]]], [['regression: random circuit 12', [3, [['sdg', 2], ['h', 2], ['h', 1], ['s', 0], ['z', 0], ['cx', 0, 1]]], [[0.5, 0.0], [0.0, 0.0], [0.5, 0.0], [0.0, 0.0], [0.5, 0.0], [0.0, 0.0], [0.5, 0.0], [0.0, 0.0]]], ['regression: random circuit 21', [3, [['cz', 2, 0], ['s', 0], ['cx', 1, 0], ['y', 2], ['sdg', 0], ['sdg', 2], ['cx', 0, 2]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['regression: random circuit 39', [3, [['swap', 0, 2], ['cx', 2, 1], ['y', 2], ['z', 2], ['cx', 0, 1], ['sdg', 0], ['cx', 2, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, -1.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 0', [3, [['swap', 2, 1], ['cx', 2, 0], ['z', 2], ['y', 1], ['cx', 0, 2], ['s', 1], ['swap', 1, 0]]], [[0.0, 0.0], [-1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 1', [3, [['cx', 1, 2], ['cz', 2, 1]]], [[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 2', [3, [['z', 0], ['sdg', 1], ['cx', 1, 0], ['cz', 0, 1], ['cx', 2, 0], ['y', 0], ['z', 2]]], [[0.0, 0.0], [0.0, 1.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 3', [2, [['x', 1], ['s', 1], ['x', 0], ['h', 0], ['s', 1], ['h', 1]]], [[-0.5, 0.0], [0.5, 0.0], [0.5, 0.0], [-0.5, 0.0]]]], [['regression: random circuit 29', [2, [['h', 1], ['sdg', 0], ['cx', 1, 0], ['z', 1], ['h', 1], ['t', 0], ['s', 1]]], [[0.5, 0.0], [-0.353553, -0.353553], [0.0, 0.5], [-0.353553, 0.353553]]], ['regression: random circuit 38', [2, [['sdg', 0], ['x', 0], ['cx', 0, 1], ['z', 1]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [-1.0, 0.0]]], ['regression: cx with control on high qubit', [2, [['x', 1], ['cx', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['control: random circuit 4', [2, [['cx', 0, 1], ['cz', 0, 1], ['h', 1], ['x', 1], ['y', 0], ['swap', 0, 1]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.707107], [0.0, 0.707107]]], ['control: random circuit 5', [2, [['cx', 1, 0], ['cx', 0, 1], ['t', 1], ['h', 1]]], [[0.707107, 0.0], [0.0, 0.0], [0.707107, 0.0], [0.0, 0.0]]], ['control: random circuit 8', [1, [['s', 0], ['h', 0], ['s', 0]]], [[0.707107, 0.0], [0.0, 0.707107]]], ['control: random circuit 9', [1, [['z', 0], ['t', 0], ['z', 0], ['h', 0]]], [[0.707107, 0.0], [0.707107, 0.0]]]], [['regression: bell pair', [2, [['h', 0], ['cx', 0, 1]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]], ['regression: ghz three qubits', [3, [['h', 0], ['cx', 0, 1], ['cx', 1, 2]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]], ['regression: random circuit 29', [2, [['h', 1], ['sdg', 0], ['cx', 1, 0], ['z', 1], ['h', 1], ['t', 0], ['s', 1]]], [[0.5, 0.0], [-0.353553, -0.353553], [0.0, 0.5], [-0.353553, 0.353553]]], ['control: random circuit 11', [2, [['s', 0], ['h', 0]]], [[0.707107, 0.0], [0.707107, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 13', [2, [['sdg', 0], ['cz', 0, 1], ['swap', 0, 1], ['cx', 1, 0]]], [[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 14', [2, [['z', 0], ['swap', 0, 1], ['x', 1], ['t', 0]]], [[0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0]]], ['control: random circuit 15', [2, [['cx', 1, 0], ['z', 0], ['cz', 1, 0], ['h', 1], ['h', 0], ['y', 1], ['h', 1]]], [[0.0, 0.0], [0.0, 0.0], [0.0, -0.707107], [0.0, -0.707107]]]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: bell pair | [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]] | [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]] | Passed |
| regression: ghz three qubits | [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]] | [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]] | Failed |
| regression: cx with control on high qubit | [[0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0]] | [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]] | Failed |
| control: empty circuit on two qubits | [[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]] | [[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]] | Passed |
| control: swap moves excitation | [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]] | [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]] | Passed |
| control: y on ground state | [[0.0, 0.0], [0.0, 1.0]] | [[0.0, 0.0], [0.0, 1.0]] | Passed |
| control: y after x | [[0.0, -1.0], [0.0, 0.0]] | [[0.0, -1.0], [0.0, 0.0]] | Passed |
SHA-256 / b77089f46391dca6092e8504f74aa61d0fc93cb3439b2a9d62c61684c9168a53
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import math
import cmath
N = 1
observations = []
def solve(x):
n, gates = x
dim = 1 << n
st = [0j] * dim
st[0] = 1 + 0j
r = 1 / math.sqrt(2)
for g in gates:
op = g[0]
if op in ('h', 'x', 'y', 'z', 's', 'sdg', 't'):
m = 1 << g[1]
for i in range(dim):
if i & m:
continue
a, b = st[i], st[i | m]
if op == 'h':
st[i], st[i | m] = (a + b) * r, (a - b) * r
elif op == 'x':
st[i], st[i | m] = b, a
elif op == 'y':
st[i], st[i | m] = -1j * b, 1j * a
elif op == 'z':
st[i | m] = -b
elif op == 's':
st[i | m] = 1j * b
elif op == 'sdg':
st[i | m] = -1j * b
else:
st[i | m] = b * cmath.exp(1j * math.pi / 4)
elif op == 'cx':
c, t = 1 << g[1], 1 << g[2]
for i in range(dim):
if i & c and not i & t:
st[i], st[i | t] = st[i | t], st[i]
elif op == 'cz':
both = (1 << g[1]) | (1 << g[2])
for i in range(dim):
if i & both == both:
st[i] = -st[i]
elif op == 'swap':
a, b = 1 << g[1], 1 << g[2]
for i in range(dim):
if i & a and not i & b:
j = (i ^ a) | b
st[i], st[j] = st[j], st[i]
return [[round(v.real, 6) + 0.0, round(v.imag, 6) + 0.0] for v in st]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: bell pair', [2, [['h', 0], ['cx', 0, 1]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]], ['regression: ghz three qubits', [3, [['h', 0], ['cx', 0, 1], ['cx', 1, 2]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]], ['regression: cx with control on high qubit', [2, [['x', 1], ['cx', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['control: empty circuit on two qubits', [2, []], [[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: swap moves excitation', [3, [['x', 0], ['swap', 0, 2]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: y on ground state', [1, [['y', 0]]], [[0.0, 0.0], [0.0, 1.0]]], ['control: y after x', [1, [['x', 0], ['y', 0]]], [[0.0, -1.0], [0.0, 0.0]]]], [['regression: random circuit 6', [2, [['cz', 0, 1], ['cz', 0, 1], ['z', 1], ['sdg', 0], ['x', 0], ['x', 1], ['cx', 0, 1]]], [[0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['regression: random circuit 7', [2, [['s', 0], ['cz', 1, 0], ['x', 1], ['cx', 1, 0], ['swap', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['regression: random circuit 29', [2, [['h', 1], ['sdg', 0], ['cx', 1, 0], ['z', 1], ['h', 1], ['t', 0], ['s', 1]]], [[0.5, 0.0], [-0.353553, -0.353553], [0.0, 0.5], [-0.353553, 0.353553]]], ['control: t after h', [1, [['h', 0], ['t', 0]]], [[0.707107, 0.0], [0.5, 0.5]]], ['control: sdg after h', [2, [['h', 1], ['sdg', 1]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, -0.707107], [0.0, 0.0]]], ['control: h on excited qubit', [1, [['x', 0], ['h', 0]]], [[0.707107, 0.0], [-0.707107, 0.0]]], ['control: single x on qubit 0 of three', [3, [['x', 0]]], [[0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]]], [['regression: random circuit 12', [3, [['sdg', 2], ['h', 2], ['h', 1], ['s', 0], ['z', 0], ['cx', 0, 1]]], [[0.5, 0.0], [0.0, 0.0], [0.5, 0.0], [0.0, 0.0], [0.5, 0.0], [0.0, 0.0], [0.5, 0.0], [0.0, 0.0]]], ['regression: random circuit 21', [3, [['cz', 2, 0], ['s', 0], ['cx', 1, 0], ['y', 2], ['sdg', 0], ['sdg', 2], ['cx', 0, 2]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['regression: random circuit 39', [3, [['swap', 0, 2], ['cx', 2, 1], ['y', 2], ['z', 2], ['cx', 0, 1], ['sdg', 0], ['cx', 2, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, -1.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 0', [3, [['swap', 2, 1], ['cx', 2, 0], ['z', 2], ['y', 1], ['cx', 0, 2], ['s', 1], ['swap', 1, 0]]], [[0.0, 0.0], [-1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 1', [3, [['cx', 1, 2], ['cz', 2, 1]]], [[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 2', [3, [['z', 0], ['sdg', 1], ['cx', 1, 0], ['cz', 0, 1], ['cx', 2, 0], ['y', 0], ['z', 2]]], [[0.0, 0.0], [0.0, 1.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 3', [2, [['x', 1], ['s', 1], ['x', 0], ['h', 0], ['s', 1], ['h', 1]]], [[-0.5, 0.0], [0.5, 0.0], [0.5, 0.0], [-0.5, 0.0]]]], [['regression: random circuit 29', [2, [['h', 1], ['sdg', 0], ['cx', 1, 0], ['z', 1], ['h', 1], ['t', 0], ['s', 1]]], [[0.5, 0.0], [-0.353553, -0.353553], [0.0, 0.5], [-0.353553, 0.353553]]], ['regression: random circuit 38', [2, [['sdg', 0], ['x', 0], ['cx', 0, 1], ['z', 1]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [-1.0, 0.0]]], ['regression: cx with control on high qubit', [2, [['x', 1], ['cx', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['control: random circuit 4', [2, [['cx', 0, 1], ['cz', 0, 1], ['h', 1], ['x', 1], ['y', 0], ['swap', 0, 1]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.707107], [0.0, 0.707107]]], ['control: random circuit 5', [2, [['cx', 1, 0], ['cx', 0, 1], ['t', 1], ['h', 1]]], [[0.707107, 0.0], [0.0, 0.0], [0.707107, 0.0], [0.0, 0.0]]], ['control: random circuit 8', [1, [['s', 0], ['h', 0], ['s', 0]]], [[0.707107, 0.0], [0.0, 0.707107]]], ['control: random circuit 9', [1, [['z', 0], ['t', 0], ['z', 0], ['h', 0]]], [[0.707107, 0.0], [0.707107, 0.0]]]], [['regression: bell pair', [2, [['h', 0], ['cx', 0, 1]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]], ['regression: ghz three qubits', [3, [['h', 0], ['cx', 0, 1], ['cx', 1, 2]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]], ['regression: random circuit 29', [2, [['h', 1], ['sdg', 0], ['cx', 1, 0], ['z', 1], ['h', 1], ['t', 0], ['s', 1]]], [[0.5, 0.0], [-0.353553, -0.353553], [0.0, 0.5], [-0.353553, 0.353553]]], ['control: random circuit 11', [2, [['s', 0], ['h', 0]]], [[0.707107, 0.0], [0.707107, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 13', [2, [['sdg', 0], ['cz', 0, 1], ['swap', 0, 1], ['cx', 1, 0]]], [[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 14', [2, [['z', 0], ['swap', 0, 1], ['x', 1], ['t', 0]]], [[0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0]]], ['control: random circuit 15', [2, [['cx', 1, 0], ['z', 0], ['cz', 1, 0], ['h', 1], ['h', 0], ['y', 1], ['h', 1]]], [[0.0, 0.0], [0.0, 0.0], [0.0, -0.707107], [0.0, -0.707107]]]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: bell pair | [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]] | [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]] | Passed |
| regression: ghz three qubits | [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]] | [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]] | Passed |
| regression: cx with control on high qubit | [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]] | [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]] | Passed |
| control: empty circuit on two qubits | [[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]] | [[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]] | Passed |
| control: swap moves excitation | [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]] | [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]] | Passed |
| control: y on ground state | [[0.0, 0.0], [0.0, 1.0]] | [[0.0, 0.0], [0.0, 1.0]] | Passed |
| control: y after x | [[0.0, -1.0], [0.0, 0.0]] | [[0.0, -1.0], [0.0, 0.0]] | Passed |
SHA-256 / 597e300f79f81f539e37c3b75c6e6c4f612435b4885e963653404d274fe2327c
Verification & scope
A deterministic bounded teaching model with a stipulated toy contract; amplitudes are rounded to fixed decimals for strict JSON output. It is not a production quantum SDK and claims no standards conformance. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.
Observations recorded using Python 3.12.14 at 2026-09-29T14:51:30.395664+00:00.
Case digest / e107b18d5d90ff879f6acddcd528d572b259657db0ef837d22021e25f196639a