open-standards/wai/quantum-cross-simulator/corpus/known-disagreements.json
Transaction Science 3cb52694f7
All checks were successful
wai-quantum command line / does this change touch it (push) Successful in 27s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 11s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 38s
wai-quantum command line / command line · linux (push) Successful in 35m51s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 14m31s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Successful in 20m2s
wai-quantum command line / command line · macos (push) Successful in 5m23s
WAI Quantum cross-simulator: the full tier's results on both hosts, with the new methods
The committed runs, regenerated with the widened corpus at two jobs on
each host, as the nightly run makes them: macOS on arm64 (M3 Ultra) pass
1973, known 16, not run 16, refused 11 as listed, in 66 minutes; Linux on
x86_64 (32 threads) pass 1970, known 12, not run 17, refused 11 as
listed, in 77 minutes. No check failed on either. The README's tables are
written from them (tools/report.py).

The single-precision finding at 20 qubits shows on macOS on arm64 only:
on Linux on x86_64, with the same pinned versions, the distance is
5.5e-7 and the run records the listed disagreement as no longer showing.
The finding says so. The nightly full tier's bound is 190 minutes, from
these runs.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-11 20:56:16 -05:00

29 lines
3.2 KiB
JSON

{
"about": "Disagreements of other engines with the exact reference, each with a reproducer committed beside it (corpus/reproducers/) that states every claim made here as a case and checks it. tools/compare.py reports a failing check that matches one as `known`, not as a failure of the run, and reruns its reproducer. The engine under test may not be listed here: a failure of its checks is always a failure.",
"disagreements": [
{
"entry": "measure_twice",
"engine": "ddsim.statevector",
"quantity": ["deviation of an outcome's count", "L1 distance from the exact distribution"],
"right": "the exact reference: a second measurement of a qubit in the same basis repeats the first, so only 00 and 11 occur. Every other engine that ran this program met it (the results files).",
"finding": "MQT DDSIM 2.7.0's qasm_simulator, given h q[0]; c[0] = measure q[0]; c[1] = measure q[0]; with nothing between the two measurements, returns 00 and 10: c[0] is never set. With x in place of h it gives 10 on every shot; with a barrier between the measurements, 00 and 11; with c[1] measured first and c[0] second, ValueError [changePermutation]. Each is a case of the reproducer, with the circuit built in Qiskit 2.6.2.",
"reproducer": "corpus/reproducers/ddsim_repeated_measurement.py"
},
{
"entry": "repeat_until_success",
"engine": "ddsim.statevector",
"quantity": "counts",
"right": "the exact reference, which every other engine that ran this program met (the results files)",
"finding": "MQT DDSIM 2.7.0's qasm_simulator raises ValueError [changePermutation] on this program (two qubits; qubit 1 measured three times in the middle, with gates between and an x conditioned on each reading; four classical bits) and gives no counts. It raises the same without the conditioned x, and on qubit 1 measured, h, measured again, then qubit 0 measured into a third bit; with no third bit it gives counts. Each is a case of the reproducer.",
"reproducer": "corpus/reproducers/ddsim_feedback_rounds.py"
},
{
"entry": "dyadic_n20_k16",
"engine": "qsim.statevector",
"quantity": ["distance from the exact state"],
"right": "the integer reference: every double-precision engine and the bit-exact method met it within their bounds on this circuit (the results files), and the same construction on 16 qubits meets the single-precision bound.",
"finding": "On macOS on arm64, qsim 0.22.1 (single precision, gates fused to two qubits, one thread), on 148 rotations by m/2^16 of a turn and cz gates on 20 qubits, gives a state 2.3e-4 from the exact one, past the single-precision bound of 1.9e-4 that 148 gates allow (tools/tolerance.py), and almost all of it is the norm: 1.00023. Its run of the first 60 gates has a norm larger than its run of 59 by 6e-5, where the 60th gate applied by hand in single precision to the 59 gates' state moves the norm by under 10^-6. Cirq 1.7.0's own complex64 simulator gives the same distance. On 16 qubits the same construction stays within its bound. On Linux on x86_64, with the same pinned versions, neither shows it: qsim's distance is 5.5e-7 and the norm moves by 1e-8. Each is a case of the reproducer, which builds the circuit with the corpus's own adapter.",
"reproducer": "corpus/reproducers/qsim_single_precision_norm.py"
}
]
}