FAILURE MAP
← Case archive

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.

Verified by executionVariant 1 · 7 checks per implementationDownload source bundle ↓JSON ↗

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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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