Quantum Benchmarking · Rust · Open Source

Four simulators.
Same circuit.
One outlier.

CleitonForge routes identical quantum circuits through multiple simulation backends using a canonical intermediate representation. It found something that standard benchmarks miss entirely.

QAOA MaxCut — cross-backend statevector fidelity
native 1.00000000
roqoqo 1.00000000
q1tsim 1.00000000
quantrs2 1.00000000
Running benchmark…

The Finding

The Rz gate has two valid definitions.
Only one benchmark layer is neutral enough to notice.

The Rz(λ) gate is one of the most common in quantum computing. IBM, Qiskit, and OpenQASM 3 define it with a specific sign convention. Most simulators follow it. quantrs2-core does not — and no standard benchmark catches it, because random-angle circuits average out the divergence.

It only surfaces in circuits with purposeful angles — exactly the ones used in QAOA, VQE, and variational quantum algorithms. The error is not small: it is exactly zero fidelity.

✓ IBM / Qiskit — Standard
e−iλ/2 0 ⎤
⎣ 0 e+iλ/2
CleitonForge native roqoqo q1tsim IBM Quantum Qiskit
✗ Reversed sign
e+iλ/2 0 ⎤
⎣ 0 e−iλ/2
quantrs2-core

The Quantum Volume benchmark — the industry standard for comparing simulators — is entirely insensitive to this class of divergence. Haar-random circuits use angles drawn from a uniform distribution; the sign flip maps one random angle to another from the same distribution. In expectation, HOG fractions are identical. CleitonForge's QAOA benchmark, which uses specific optimization angles, exposes the divergence immediately.

python · the one-line fix
import cforge

# QAOA circuit built for quantrs2 convention
circuit = build_qaoa(gamma=-3*pi/4, beta=-pi/8)

# Before: fidelity(native, quantrs2) = 0.00000000
fixed = cforge.normalize(circuit)
# After:  fidelity(native, quantrs2) = 1.00000000

# Or directly from QASM:
fixed = cforge.normalize_qasm(qasm_source)

Get Started

Python

pip install cleitonforge
python · full example
import cforge, math

# Build circuit with the builder API
c = cforge.Circuit(2)
c.h(0); c.h(1)
c.cx(0, 1)
c.rz(-3 * math.pi / 2, 1)
c.cx(0, 1)
c.rx(-math.pi / 4, 0)
c.rx(-math.pi / 4, 1)

# Run on any backend
r = cforge.run(c, backend="statevector", shots=4096)
print(r.top_states(4))

# Normalize convention before running on quantrs2
fixed = cforge.normalize(c)
r2 = cforge.run(fixed, backend="quantrs2")

Rust

cargo add cforge-parser cforge-backends

Full documentation and examples at github.com/cleitonaugusto/CleitonForge. A Jupyter notebook reproducing all findings is at notebooks/convention_demo.ipynb.

Who uses it

Researchers, teams, and anyone
running circuits on more than one backend.

Researchers
Reproduce the Rz finding. Use the benchmark suite (Bell, GHZ, QFT, Bernstein–Vazirani, Grover, QAOA) as a reference for your own simulator comparison. Cite the preprint.
QAOA / VQE developers
If you develop variational circuits on one simulator and run on another — or on hardware — run cforge.normalize(circuit) before execution. One line. Prevents silent wrong results.
Enterprise teams
Running quantum workloads across multiple cloud providers? Convention disagreements produce wrong optimization landscapes silently. cforge-enterprise provides per-device calibration, convention-aware routing, and consistency verification as an API.

Publication

Neutral Cross-Framework Benchmarking Reveals Rz Sign Convention Divergence in Quantum Simulation Backends

Cleiton Augusto Correa Bezerra · 2026

DOI: 10.5281/zenodo.21210972 · Zenodo open access.

Read on Zenodo → Jupyter notebook →

Enterprise — convention guarantees at scale

Teams running quantum workloads across IBM, AWS Braket, Azure Quantum, or multiple on-prem simulators need consistency that no single vendor can provide. cforge-enterprise delivers per-device calibration tables, convention-aware circuit routing, Zero-Noise Extrapolation, and readout mitigation as a service.

augusto.cleiton@gmail.com