Skip to content

Instantly share code, notes, and snippets.

@yasuhito
Created October 3, 2026 08:00
Show Gist options
  • Select an option

  • Save yasuhito/3e3627ae2ad95b5f822dbfdc8c24a531 to your computer and use it in GitHub Desktop.

Select an option

Save yasuhito/3e3627ae2ad95b5f822dbfdc8c24a531 to your computer and use it in GitHub Desktop.
mqt-qcec #815: timeout overrun repro (alternating DD checker, ~1e-8 RZ noise)

mqt-qcec #815: timeout overrun repro (alternating DD checker, ~1e-8 RZ noise)

Supporting files for a comment on munich-quantum-toolkit/qcec#815.

Environment: mqt.qcec 3.10.1, mqt.core 3.10.1, Python 3.12.4, qiskit 2.5.2, numpy 2.5.3, Linux x86_64 (see environment.txt).

Files

File Purpose
repro_qcec_timeout.py Runs qcec.verify with only the alternating DD checker, parallel=False, nthreads=1, and a given --timeout. Prints wall time. Exit 1 if verify returns later than max(20, 3*timeout) s.
repro_dd_blowup.py Builds a DD from the residual matrix with DDPackage.from_matrix at a given --tolerance. No checker is run.
regenerate_relative.py Regenerates the residual matrix relative.npy (phase-aligned U^dagger V) from two QASM files. The matrix itself (17 MB binary) is not included.
prefix-133-clean.qasm, prefix-133-noise.qasm 8-qubit, 133-gate pair. Same H/RZ/nearest-neighbor-CX sequence; the noise variant adds independent RZ perturbations uniform in [-1e-8, 1e-8] rad (seed 7).
original.qasm, bqskit-l2.qasm Original 10-qubit Ising input (480 gates) and the BQSKit optimization level 2 output (687 gates).
log-prefix-133.log, log-prefix-133-repeat.log Two runs of the 133-gate pair with --timeout 5: verify returned after 41.86 s and 52.56 s.
log-full-timeout20.log, log-full-timeout2.log Original/BQSKit pair with --timeout 20 and --timeout 2: no return before the 60 s external SIGKILL (only the start line is present).
log-dd-default.log, log-dd-1e-8.log repro_dd_blowup.py at default tolerance (2.27e-13, killed at 60 s) and at 1e-8 (0.00843 s, DD size 1218).
gdb-30s.txt, gdb-60s.txt gdb stacks of the --timeout 20 original/BQSKit run at 30 s and 60 s. Local install paths are replaced with <venv> and <uv-python>.
environment.txt Python, platform, and package versions.

Layout

Gists are flat. The commands in the issue comment use a repro/ subdirectory, so either recreate it:

git clone <this gist URL> qcec-815 && cd qcec-815
mkdir repro && mv *.qasm repro/
python regenerate_relative.py repro/original.qasm repro/bqskit-l2.qasm -o repro/relative.npy

and then the commands in the comment work as written, or use the flat commands below.

Commands (flat layout)

# QCEC timeout overrun (alternating DD checker only).
timeout -s KILL 60 python repro_qcec_timeout.py prefix-133-clean.qasm prefix-133-noise.qasm --timeout 5
timeout -s KILL 60 python repro_qcec_timeout.py original.qasm bqskit-l2.qasm --timeout 20

# Residual matrix, then from_matrix DD construction in separate processes.
python regenerate_relative.py original.qasm bqskit-l2.qasm -o relative.npy
timeout -s KILL 60 python repro_dd_blowup.py --matrix relative.npy
timeout -s KILL 60 python repro_dd_blowup.py --matrix relative.npy --tolerance 1e-8

# Alternatively, skip the saved matrix and recompute U^dagger V in-process:
timeout -s KILL 60 python repro_dd_blowup.py --pair original.qasm bqskit-l2.qasm

regenerate_relative.py takes about 10 s and prints max|W - I| (about 5.1e-08 for this pair). The regenerated matrix matched the originally saved one to within 2.2e-16 (max elementwise difference), not byte for byte.

Raising the tolerance in repro_dd_blowup.py is a diagnostic only, not a sound verification fix.

OPENQASM 2.0;
include "qelib1.inc";
qreg q[10];
sx q[0];
sx q[1];
sx q[2];
sx q[3];
sx q[4];
sx q[5];
sx q[6];
sx q[7];
sx q[8];
sx q[9];
sx q[0];
sx q[1];
sx q[2];
sx q[3];
sx q[4];
sx q[5];
sx q[6];
sx q[7];
sx q[8];
sx q[9];
cx q[0],q[1];
cx q[2],q[3];
cx q[4],q[5];
cx q[6],q[7];
cx q[8],q[9];
rz(1.570796326766539) q[0];
sx q[1];
rz(-pi/2) q[2];
sx q[3];
rz(1.5707963263349827) q[4];
sx q[5];
rz(-1.5707963267098648) q[6];
sx q[7];
rz(1.5707963268085277) q[8];
sx q[9];
sx q[0];
sx q[1];
sx q[2];
sx q[3];
sx q[4];
sx q[5];
sx q[6];
sx q[7];
sx q[8];
sx q[9];
rz(2.8415926535830835) q[0];
rz(3.5015926535897774) q[2];
rz(3.0215926535899897) q[4];
rz(2.9215926548216458) q[6];
rz(3.221592653531373) q[8];
sx q[0];
sx q[2];
sx q[4];
sx q[6];
sx q[8];
cx q[0],q[1];
cx q[2],q[3];
cx q[4],q[5];
cx q[6],q[7];
cx q[8],q[9];
rz(0.36415135509048624) q[0];
sx q[1];
rz(pi/2) q[2];
sx q[3];
rz(4.712388980844604) q[4];
sx q[5];
rz(17.278759593717062) q[6];
sx q[7];
rz(14.137166941140439) q[8];
rz(7.500624726077651) q[9];
sx q[0];
rz(5*pi/2) q[1];
sx q[2];
rz(5*pi/2) q[3];
sx q[4];
rz(5*pi/2) q[5];
sx q[6];
rz(5*pi/2) q[7];
sx q[8];
sx q[9];
rz(4.993771669138829) q[0];
sx q[1];
rz(3*pi/2) q[2];
sx q[3];
rz(3*pi/2) q[4];
sx q[5];
rz(1.5707963271689163) q[6];
sx q[7];
rz(5*pi/2) q[8];
rz(4.562121471956146) q[9];
sx q[0];
rz(0.8599999999999991) q[1];
sx q[2];
rz(0.4599999999999999) q[3];
sx q[4];
rz(0.6199999999999999) q[5];
sx q[6];
rz(-0.6999999999999994) q[7];
sx q[8];
sx q[9];
rz(5.200632029778484) q[0];
rz(5.403185307179586) q[2];
rz(0.40000000000000113) q[4];
rz(-9.964777960221397) q[6];
rz(16.307963267948967) q[8];
rz(0.8927525681308145) q[9];
cx q[1],q[2];
cx q[3],q[4];
cx q[5],q[6];
cx q[7],q[8];
sx q[1];
sx q[2];
sx q[3];
sx q[4];
sx q[5];
sx q[6];
sx q[7];
sx q[8];
sx q[1];
sx q[2];
sx q[3];
sx q[4];
sx q[5];
sx q[6];
sx q[7];
sx q[8];
rz(2.8815926535897933) q[2];
rz(-2.8815926532647236) q[4];
rz(2.7615926535897923) q[6];
rz(3.401592653489739) q[8];
cx q[1],q[2];
cx q[3],q[4];
cx q[5],q[6];
cx q[7],q[8];
rz(3*pi/2) q[1];
rz(1.5707963267485237) q[2];
rz(4.712388979777364) q[3];
rz(-4.712388982822769) q[4];
rz(4.712388980258119) q[5];
rz(pi/2) q[6];
rz(-1.570796327828446) q[7];
rz(1.57079632710251) q[8];
sx q[1];
sx q[2];
sx q[3];
sx q[4];
sx q[5];
sx q[6];
sx q[7];
sx q[8];
rz(4.363185307179588) q[1];
rz(5.061592653655823) q[2];
rz(4.363185307268782) q[3];
rz(5.061592710561221) q[4];
rz(4.363185307113856) q[5];
rz(5.06159265358997) q[6];
rz(4.363185293823303) q[7];
rz(5.061592653645638) q[8];
sx q[1];
sx q[2];
sx q[3];
sx q[4];
sx q[5];
sx q[6];
sx q[7];
sx q[8];
rz(4.234796326794896) q[1];
rz(-1.4987963268410536) q[2];
rz(2.6747963274582145) q[3];
rz(-3.3707963294173067) q[4];
rz(1.7147963268975859) q[5];
rz(0.6252036732049869) q[6];
rz(6.2459816349882615) q[7];
rz(-0.08279632650731704) q[8];
cx q[0],q[1];
cx q[2],q[3];
cx q[4],q[5];
cx q[6],q[7];
cx q[8],q[9];
sx q[0];
sx q[1];
rz(5.2031853071335465) q[3];
rz(-0.3599999958435931) q[5];
rz(0.6599999996230553) q[7];
sx q[8];
sx q[9];
sx q[0];
sx q[1];
cx q[2],q[3];
cx q[4],q[5];
cx q[6],q[7];
sx q[8];
sx q[9];
rz(-2.2415926535897928) q[1];
sx q[2];
sx q[3];
sx q[4];
sx q[5];
sx q[6];
sx q[7];
rz(-3.3815926535897933) q[9];
cx q[0],q[1];
rz(pi) q[2];
rz(-3.1415926535437446) q[3];
rz(3.1415926585878258) q[4];
rz(3.141592651239592) q[5];
rz(3.141592655398158) q[6];
rz(3.141592652816256) q[7];
cx q[8],q[9];
rz(10.99557428750019) q[0];
sx q[1];
sx q[2];
sx q[3];
sx q[4];
sx q[5];
sx q[6];
sx q[7];
sx q[8];
rz(4.712388979911112) q[9];
sx q[0];
rz(pi) q[1];
rz(1.5815926535966793) q[2];
rz(2.361592653628609) q[3];
rz(4.701592652592706) q[4];
rz(4.281592658592358) q[5];
rz(7.1447779589235285) q[6];
rz(8.64477795892418) q[7];
sx q[8];
sx q[9];
rz(5.3231853072479876) q[0];
sx q[1];
cx q[3],q[4];
cx q[5],q[6];
rz(4.701592653589793) q[8];
rz(2.1815926544462925) q[9];
sx q[0];
rz(0.7800000000000011) q[1];
sx q[3];
sx q[4];
sx q[5];
sx q[6];
cx q[7],q[8];
sx q[9];
rz(-0.07320367326842457) q[0];
cx q[1],q[2];
sx q[3];
sx q[4];
sx q[5];
sx q[6];
sx q[7];
sx q[8];
rz(6.141981634449226) q[9];
sx q[1];
sx q[2];
rz(3.921592653589794) q[4];
rz(2.001592653589793) q[6];
sx q[7];
sx q[8];
sx q[1];
sx q[2];
cx q[3],q[4];
cx q[5],q[6];
rz(-2.3615926535897924) q[8];
rz(-3.9215926535897943) q[2];
rz(3*pi/2) q[3];
rz(5*pi/2) q[4];
rz(4.712388980509549) q[5];
rz(1.5707963267874094) q[6];
cx q[7],q[8];
cx q[1],q[2];
sx q[3];
sx q[4];
sx q[5];
sx q[6];
rz(1.5707963267893712) q[7];
rz(pi/2) q[8];
rz(4.712388980396197) q[1];
rz(4.712388979981071) q[2];
rz(5.323185307179586) q[3];
rz(4.101592653588754) q[4];
rz(5.323185307199576) q[5];
rz(4.101592653571709) q[6];
sx q[7];
sx q[8];
sx q[1];
sx q[2];
sx q[3];
sx q[4];
sx q[5];
sx q[6];
rz(7.243185307175269) q[7];
rz(4.101592653589793) q[8];
rz(5.323185307202827) q[1];
rz(8.46477796120194) q[2];
rz(4.6427963267948975) q[3];
rz(9.675574287563714) q[4];
rz(2.4827963269199858) q[5];
rz(0.2972036732125831) q[6];
sx q[7];
sx q[8];
sx q[1];
sx q[2];
cx q[4],q[5];
rz(2.3683889803791645) q[7];
rz(-0.5467963267948973) q[8];
rz(5.002796326806416) q[1];
rz(6.629981634378102) q[2];
rz(-0.5999999955422642) q[5];
cx q[6],q[7];
cx q[8],q[9];
cx q[0],q[1];
cx q[2],q[3];
cx q[4],q[5];
rz(1.0999999999998549) q[7];
sx q[8];
sx q[9];
sx q[0];
sx q[1];
rz(-1.799999999999291) q[3];
sx q[4];
sx q[5];
cx q[6],q[7];
sx q[8];
sx q[9];
sx q[0];
sx q[1];
cx q[2],q[3];
rz(3.1415926585212235) q[4];
rz(3.1415926514147468) q[5];
sx q[6];
sx q[7];
rz(2.7415926535895236) q[9];
rz(-1.641592653589774) q[1];
sx q[2];
sx q[3];
sx q[4];
sx q[5];
rz(pi) q[6];
rz(pi) q[7];
cx q[8],q[9];
cx q[0],q[1];
rz(pi) q[2];
rz(pi) q[3];
rz(5.741592648966996) q[4];
rz(5.041592658085369) q[5];
sx q[6];
sx q[7];
sx q[8];
sx q[9];
sx q[0];
sx q[1];
sx q[2];
sx q[3];
rz(5.624777960769185) q[6];
rz(8.124777960769167) q[7];
sx q[8];
rz(pi) q[9];
sx q[0];
rz(pi) q[1];
rz(6.824777960768671) q[2];
rz(8.12477796076868) q[3];
cx q[5],q[6];
rz(5.741592653589523) q[8];
sx q[9];
rz(1.0415926535898108) q[0];
sx q[1];
cx q[3],q[4];
sx q[5];
sx q[6];
cx q[7],q[8];
rz(5.163185307179423) q[9];
rz(7.583185307179568) q[1];
sx q[3];
sx q[4];
sx q[5];
sx q[6];
sx q[7];
sx q[8];
cx q[1],q[2];
sx q[3];
sx q[4];
rz(1.2415926535897874) q[6];
sx q[7];
sx q[8];
sx q[1];
sx q[2];
rz(4.4415926520663715) q[4];
cx q[5],q[6];
rz(-1.8415926535897926) q[8];
sx q[1];
sx q[2];
cx q[3],q[4];
sx q[5];
sx q[6];
cx q[7],q[8];
rz(8.12477795061052) q[2];
sx q[3];
sx q[4];
sx q[5];
rz(pi) q[6];
sx q[7];
sx q[8];
cx q[1],q[2];
sx q[3];
rz(3.1415926551115643) q[4];
rz(4.821592653589787) q[5];
sx q[6];
sx q[7];
rz(pi) q[8];
sx q[1];
sx q[2];
rz(1.8984073477396346) q[3];
sx q[4];
rz(1.5400000000000074) q[6];
rz(6.34477796076938) q[7];
sx q[8];
sx q[1];
rz(3.1415926565589807) q[2];
rz(5.443185305825178) q[4];
cx q[6],q[7];
rz(6.843185307179588) q[8];
rz(1.0584073565924195) q[1];
sx q[2];
cx q[4],q[5];
rz(1.5400000000000134) q[7];
cx q[8],q[9];
cx q[0],q[1];
rz(3.7631852969632757) q[2];
rz(-0.8399999999918649) q[5];
cx q[6],q[7];
sx q[8];
sx q[9];
sx q[0];
sx q[1];
cx q[2],q[3];
cx q[4],q[5];
sx q[6];
sx q[7];
sx q[8];
sx q[9];
sx q[0];
sx q[1];
rz(-2.519999999861227) q[3];
sx q[4];
sx q[5];
rz(pi) q[6];
rz(-pi) q[7];
rz(2.5815926535897926) q[9];
rz(-1.0415926535489979) q[1];
cx q[2],q[3];
rz(3.1415926535982464) q[4];
rz(3.1415926535859384) q[5];
sx q[6];
sx q[7];
cx q[8],q[9];
cx q[0],q[1];
sx q[2];
sx q[3];
sx q[4];
sx q[5];
rz(4.104777960769366) q[6];
rz(1.321592653589806) q[7];
sx q[8];
rz(4.7123889913469625) q[9];
rz(10.995574300343888) q[0];
sx q[1];
rz(3.141592653725377) q[2];
rz(3.1415926535368124) q[3];
rz(6.781592653581288) q[4];
rz(5.801592653593257) q[5];
sx q[8];
sx q[9];
sx q[0];
rz(3.141592653629371) q[1];
sx q[2];
sx q[3];
cx q[5],q[6];
rz(0.49840734641020773) q[8];
rz(4.101592652421426) q[9];
rz(7.243185302277056) q[0];
sx q[1];
rz(5.784777960646355) q[2];
rz(7.604777960639208) q[3];
sx q[5];
sx q[6];
cx q[7],q[8];
sx q[9];
sx q[0];
rz(1.820000000041152) q[1];
cx q[3],q[4];
sx q[5];
sx q[6];
sx q[7];
sx q[8];
rz(7.325981623011066) q[9];
rz(11.581166953932831) q[0];
cx q[1],q[2];
sx q[3];
sx q[4];
rz(0.4815926535897931) q[6];
sx q[7];
sx q[8];
sx q[1];
sx q[2];
sx q[3];
sx q[4];
cx q[5],q[6];
rz(-1.3215926535897897) q[8];
sx q[1];
sx q[2];
rz(-1.3215926535897928) q[4];
rz(pi/2) q[5];
rz(4.712388980586217) q[6];
cx q[7],q[8];
rz(1.3215926535897928) q[2];
cx q[3],q[4];
sx q[5];
sx q[6];
rz(1.5707963266140668) q[7];
rz(3*pi/2) q[8];
cx q[1],q[2];
rz(1.570796326793349) q[3];
rz(3*pi/2) q[4];
rz(5.323185307179937) q[5];
rz(4.10159265315054) q[6];
sx q[7];
sx q[8];
rz(5*pi/2) q[1];
rz(3*pi/2) q[2];
sx q[3];
sx q[4];
sx q[5];
sx q[6];
rz(5.323185307906886) q[7];
rz(4.101592653588472) q[8];
sx q[1];
sx q[2];
rz(5.323185307180154) q[3];
rz(4.101592653589794) q[4];
rz(0.8772036732057483) q[5];
rz(2.7827963265646045) q[6];
sx q[7];
sx q[8];
rz(5.323185307179585) q[1];
rz(4.101592653589695) q[2];
sx q[3];
sx q[4];
rz(0.896388980203909) q[7];
rz(1.6667963267954262) q[8];
sx q[1];
sx q[2];
rz(5.437203673203555) q[3];
rz(1.210796326794897) q[4];
cx q[6],q[7];
cx q[8],q[9];
rz(3.3972036732051047) q[1];
rz(4.037981633974547) q[2];
cx q[4],q[5];
rz(1.9800000000650855) q[7];
sx q[8];
sx q[9];
cx q[0],q[1];
cx q[2],q[3];
rz(5.203185296433202) q[5];
cx q[6],q[7];
sx q[8];
sx q[9];
sx q[0];
sx q[1];
rz(-3.239999993423908) q[3];
cx q[4],q[5];
sx q[6];
sx q[7];
rz(2.421592653589794) q[9];
sx q[0];
sx q[1];
cx q[2],q[3];
sx q[4];
sx q[5];
rz(pi) q[6];
rz(3.1415926535196523) q[7];
cx q[8],q[9];
rz(-0.4415926535897885) q[1];
sx q[2];
sx q[3];
rz(3.1415926536833783) q[4];
rz(3.1415926427077374) q[5];
sx q[6];
sx q[7];
sx q[8];
rz(1.5707963266715046) q[9];
cx q[0],q[1];
rz(3.1415926601610615) q[2];
rz(3.141592650056775) q[3];
sx q[4];
sx q[5];
rz(2.584777960716447) q[6];
rz(0.8015926536598212) q[7];
sx q[8];
sx q[9];
rz(4.712388980420065) q[0];
sx q[1];
sx q[2];
sx q[3];
rz(1.5384073483624991) q[4];
rz(6.5615926427072875) q[5];
rz(1.538407346410207) q[8];
rz(1.221592653545729) q[9];
sx q[0];
rz(pi) q[1];
rz(4.744777958824058) q[2];
rz(7.084777954740828) q[3];
cx q[5],q[6];
cx q[7],q[8];
sx q[9];
rz(1.9199999994316708) q[0];
sx q[1];
cx q[3],q[4];
sx q[5];
sx q[6];
sx q[7];
sx q[8];
rz(6.536388980261214) q[9];
sx q[0];
rz(2.340000000000005) q[1];
sx q[3];
sx q[4];
sx q[5];
sx q[6];
sx q[7];
sx q[8];
rz(1.858796325959933) q[0];
cx q[1],q[2];
sx q[3];
sx q[4];
rz(-0.2784073464102064) q[6];
rz(-0.801592653570598) q[8];
sx q[1];
sx q[2];
rz(-0.801592653587827) q[4];
cx q[5],q[6];
cx q[7],q[8];
sx q[1];
sx q[2];
cx q[3],q[4];
rz(pi/2) q[5];
rz(3*pi/2) q[6];
rz(1.5707963232292967) q[7];
rz(4.712388994085269) q[8];
rz(0.8015926535810277) q[2];
rz(-4.712388980949175) q[3];
rz(3*pi/2) q[4];
sx q[5];
sx q[6];
sx q[7];
sx q[8];
cx q[1],q[2];
sx q[3];
sx q[4];
rz(4.363185307179587) q[5];
rz(5.061592653590232) q[6];
rz(4.363185308142294) q[7];
rz(5.061592663870813) q[8];
rz(1.5707963332045383) q[1];
rz(4.71238898021683) q[2];
rz(4.363185305231892) q[3];
rz(5.061592653589418) q[4];
sx q[5];
sx q[6];
sx q[7];
sx q[8];
sx q[1];
sx q[2];
sx q[3];
sx q[4];
rz(5.288388980384686) q[5];
rz(0.03479632679487865) q[6];
rz(5.000388975948881) q[7];
rz(0.32279633704755234) q[8];
rz(4.363185308532399) q[1];
rz(5.061592653703396) q[2];
rz(12.051574288136235) q[3];
rz(3.0107963267964033) q[4];
sx q[1];
sx q[2];
rz(3.8483889792425043) q[1];
rz(0.4187963267857433) q[2];
3.12.4 (main, Jul 25 2024, 22:42:01) [Clang 18.1.8 ]
Linux-7.2.5-3-omarchy-x86_64-with-glibc2.44
{'mqt.qcec': '3.10.1', 'mqt.core': '3.10.1', 'qiskit': '2.5.2', 'numpy': '2.5.3'}
{"target_s": 30, "elapsed_s": 30.000071740010753, "utc": "2026-10-03T04:41:46Z", "pid": 3888378}
This GDB supports auto-downloading debuginfo from the following URLs:
<https://debuginfod.archlinux.org>
Enable debuginfod for this session? (y or [n]) [answered N; input not from terminal]
Debuginfod has been disabled.
To make this setting permanent, add 'set debuginfod enabled off' to .gdbinit.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
0x000074f28a208988 in dd::RealNumberUniqueTable::findOrInsert(long, double) () from <venv>/lib/python3.12/site-packages/mqt/qcec/../core/lib64/libmqt-core-dd.so.3.10
Thread 1 (Thread 0x74f2a24b1bc0 (LWP 3888378) "python"):
#0 0x000074f28a208988 in dd::RealNumberUniqueTable::findOrInsert(long, double) () from <venv>/lib/python3.12/site-packages/mqt/qcec/../core/lib64/libmqt-core-dd.so.3.10
#1 0x000074f28a1e3a8b in dd::ComplexNumbers::lookup(double, double) () from <venv>/lib/python3.12/site-packages/mqt/qcec/../core/lib64/libmqt-core-dd.so.3.10
#2 0x000074f28a1e326e in _ZN2dd10CachedEdgeINS_5mNodeEE9normalizeEPS1_RKSt5arrayIS2_Lm4EERNS_13MemoryManagerERNS_14ComplexNumbersEQ8IsMatrixIT_E () from <venv>/lib/python3.12/site-packages/mqt/qcec/../core/lib64/libmqt-core-dd.so.3.10
#3 0x000074f28a259450 in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#4 0x000074f28a259b16 in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#5 0x000074f28a2599b7 in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#6 0x000074f28a2599b7 in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#7 0x000074f28a25bb7f in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#8 0x000074f28a25ba62 in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#9 0x000074f28a25ba62 in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#10 0x000074f28a25ba62 in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#11 0x000074f28a25ba62 in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#12 0x000074f28a25ba62 in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#13 0x000074f28a25c356 in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#14 0x000074f28a261223 in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#15 0x000074f28a254f0e in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#16 0x000074f28a24620c in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#17 0x000074f28a2d6764 in ?? () from <venv>/lib/python3.12/site-packages/nanobind_backend/_nb_backend_v1.cpython-312-x86_64-linux-gnu.so
#18 0x000074f2a0fff960 in _PyEval_EvalFrameDefault () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#19 0x000074f2a10f0b98 in PyEval_EvalCode () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#20 0x000074f2a1133874 in run_mod.llvm () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#21 0x000074f2a0e990df in pyrun_file () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#22 0x000074f2a0e985f0 in _PyRun_SimpleFileObject () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#23 0x000074f2a0e9824a in _PyRun_AnyFileObject () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#24 0x000074f2a0ea3ade in pymain_run_file_obj () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#25 0x000074f2a0ea3894 in pymain_run_file () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#26 0x000074f2a114bdfc in Py_RunMain () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#27 0x000074f2a114c3df in pymain_main () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#28 0x000074f2a114c49c in Py_BytesMain () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#29 0x000074f2a0827781 in ?? () from /usr/lib/libc.so.6
#30 0x000074f2a08278b9 in __libc_start_main () from /usr/lib/libc.so.6
#31 0x00000000006000a9 in _start ()
[Inferior 1 (process 3888378) detached]
{"target_s": 60, "elapsed_s": 60.00009157997556, "utc": "2026-10-03T04:42:16Z", "pid": 3888378}
This GDB supports auto-downloading debuginfo from the following URLs:
<https://debuginfod.archlinux.org>
Enable debuginfod for this session? (y or [n]) [answered N; input not from terminal]
Debuginfod has been disabled.
To make this setting permanent, add 'set debuginfod enabled off' to .gdbinit.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
0x000074f28a208991 in dd::RealNumberUniqueTable::findOrInsert(long, double) () from <venv>/lib/python3.12/site-packages/mqt/qcec/../core/lib64/libmqt-core-dd.so.3.10
Thread 1 (Thread 0x74f2a24b1bc0 (LWP 3888378) "python"):
#0 0x000074f28a208991 in dd::RealNumberUniqueTable::findOrInsert(long, double) () from <venv>/lib/python3.12/site-packages/mqt/qcec/../core/lib64/libmqt-core-dd.so.3.10
#1 0x000074f28a1e3a8b in dd::ComplexNumbers::lookup(double, double) () from <venv>/lib/python3.12/site-packages/mqt/qcec/../core/lib64/libmqt-core-dd.so.3.10
#2 0x000074f28a1e326e in _ZN2dd10CachedEdgeINS_5mNodeEE9normalizeEPS1_RKSt5arrayIS2_Lm4EERNS_13MemoryManagerERNS_14ComplexNumbersEQ8IsMatrixIT_E () from <venv>/lib/python3.12/site-packages/mqt/qcec/../core/lib64/libmqt-core-dd.so.3.10
#3 0x000074f28a259450 in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#4 0x000074f28a25bc88 in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#5 0x000074f28a25ba62 in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#6 0x000074f28a25ba62 in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#7 0x000074f28a25ba62 in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#8 0x000074f28a25ba62 in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#9 0x000074f28a25ba62 in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#10 0x000074f28a25ba62 in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#11 0x000074f28a25ba62 in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#12 0x000074f28a25ba62 in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#13 0x000074f28a25d01b in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#14 0x000074f28a26122c in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#15 0x000074f28a254f0e in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#16 0x000074f28a24620c in ?? () from <venv>/lib/python3.12/site-packages/mqt/qcec/pyqcec.abi3.so
#17 0x000074f28a2d6764 in ?? () from <venv>/lib/python3.12/site-packages/nanobind_backend/_nb_backend_v1.cpython-312-x86_64-linux-gnu.so
#18 0x000074f2a0fff960 in _PyEval_EvalFrameDefault () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#19 0x000074f2a10f0b98 in PyEval_EvalCode () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#20 0x000074f2a1133874 in run_mod.llvm () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#21 0x000074f2a0e990df in pyrun_file () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#22 0x000074f2a0e985f0 in _PyRun_SimpleFileObject () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#23 0x000074f2a0e9824a in _PyRun_AnyFileObject () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#24 0x000074f2a0ea3ade in pymain_run_file_obj () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#25 0x000074f2a0ea3894 in pymain_run_file () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#26 0x000074f2a114bdfc in Py_RunMain () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#27 0x000074f2a114c3df in pymain_main () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#28 0x000074f2a114c49c in Py_BytesMain () from <uv-python>/cpython-3.12.4-linux-x86_64-gnu/bin/../lib/libpython3.12.so.1.0
#29 0x000074f2a0827781 in ?? () from /usr/lib/libc.so.6
#30 0x000074f2a08278b9 in __libc_start_main () from /usr/lib/libc.so.6
#31 0x00000000006000a9 in _start ()
[Inferior 1 (process 3888378) detached]
{"event": "FROM_MATRIX_START", "qubits": 10, "tolerance": 1e-08}
{"event": "FROM_MATRIX_RETURN", "from_matrix_s": 0.008428614935837686, "dd_size": 1218, "is_identity": false}
{"event": "FROM_MATRIX_START", "qubits": 10, "tolerance": 2.2737367544323206e-13}
{"event": "VERIFY_START", "timeout": 2.0, "qubits": [10, 10], "gates": [480, 687]}
{"event": "VERIFY_START", "timeout": 20.0, "qubits": [10, 10], "gates": [480, 687]}
{"event": "VERIFY_START", "timeout": 5.0, "qubits": [8, 8], "gates": [133, 133]}
{"event": "VERIFY_RETURN", "verify_wall_s": 52.55746917310171, "results": {"check_time": 52.540003731, "checkers": [{"checker": "decision_diagram_alternating", "equivalence": "no_information", "runtime": 0.0}], "equivalence": "no_information", "parameterized": {"performed_instantiations": 0}, "preprocessing_time": 0.00861494}}
{"event": "VERIFY_START", "timeout": 5.0, "qubits": [8, 8], "gates": [133, 133]}
{"event": "VERIFY_RETURN", "verify_wall_s": 41.86372114601545, "results": {"check_time": 41.846562094, "checkers": [{"checker": "decision_diagram_alternating", "equivalence": "no_information", "runtime": 0.0}], "equivalence": "no_information", "parameterized": {"performed_instantiations": 0}, "preprocessing_time": 0.008535932}}
OPENQASM 2.0;
include "qelib1.inc";
qreg reg[10];
h reg[0];
rz(-0.3) reg[0];
h reg[1];
rz(0.3) reg[1];
rz(0.3) reg[1];
cx reg[0],reg[1];
rz(-0.3) reg[1];
cx reg[0],reg[1];
h reg[0];
rz(-1.92) reg[0];
h reg[0];
rz(-0.288) reg[0];
rz(-0.9) reg[0];
rz(0.26) reg[1];
h reg[2];
rz(-0.36) reg[2];
h reg[3];
rz(0.36) reg[3];
rz(0.36) reg[3];
cx reg[2],reg[3];
rz(-0.36) reg[3];
cx reg[2],reg[3];
rz(-0.26) reg[2];
rz(-0.26) reg[2];
cx reg[1],reg[2];
rz(0.26) reg[2];
cx reg[1],reg[2];
h reg[1];
rz(-1.92) reg[1];
h reg[1];
rz(0.864) reg[1];
rz(0.9) reg[1];
rz(0.9) reg[1];
cx reg[0],reg[1];
rz(-0.9) reg[1];
cx reg[0],reg[1];
h reg[0];
rz(-0.96) reg[0];
h reg[0];
rz(-0.144) reg[0];
rz(-1.5) reg[0];
rz(0.78) reg[1];
h reg[2];
rz(-1.92) reg[2];
h reg[2];
rz(1.152) reg[2];
rz(-1.08) reg[2];
rz(-0.26) reg[3];
h reg[4];
rz(-0.12) reg[4];
h reg[5];
rz(0.12) reg[5];
rz(0.12) reg[5];
cx reg[4],reg[5];
rz(-0.12) reg[5];
cx reg[4],reg[5];
rz(0.26) reg[4];
rz(0.26) reg[4];
cx reg[3],reg[4];
rz(-0.26) reg[4];
cx reg[3],reg[4];
h reg[3];
rz(-1.92) reg[3];
h reg[3];
rz(-1.056) reg[3];
rz(1.08) reg[3];
rz(1.08) reg[3];
cx reg[2],reg[3];
rz(-1.08) reg[3];
cx reg[2],reg[3];
rz(-0.78) reg[2];
rz(-0.78) reg[2];
cx reg[1],reg[2];
rz(0.78) reg[2];
cx reg[1],reg[2];
h reg[1];
rz(-0.96) reg[1];
h reg[1];
rz(0.432) reg[1];
rz(1.5) reg[1];
rz(1.5) reg[1];
cx reg[0],reg[1];
rz(-1.5) reg[1];
cx reg[0],reg[1];
h reg[0];
rz(0) reg[0];
h reg[0];
rz(0) reg[0];
rz(-2.1) reg[0];
rz(1.3) reg[1];
h reg[2];
rz(-0.96) reg[2];
h reg[2];
rz(0.576) reg[2];
rz(-1.8) reg[2];
rz(-0.78) reg[3];
h reg[4];
rz(-1.92) reg[4];
h reg[4];
rz(-1.44) reg[4];
rz(-0.36) reg[4];
rz(0.38) reg[5];
h reg[6];
rz(0.22) reg[6];
h reg[7];
rz(-0.22) reg[7];
rz(-0.22) reg[7];
cx reg[6],reg[7];
rz(0.22) reg[7];
cx reg[6],reg[7];
rz(-0.38) reg[6];
rz(-0.38) reg[6];
cx reg[5],reg[6];
rz(0.38) reg[6];
cx reg[5],reg[6];
h reg[5];
rz(-1.92) reg[5];
h reg[5];
rz(-0.576) reg[5];
rz(0.36) reg[5];
rz(0.36) reg[5];
cx reg[4],reg[5];
rz(-0.36) reg[5];
cx reg[4],reg[5];
rz(0.78) reg[4];
rz(0.78) reg[4];
cx reg[3],reg[4];
rz(-0.78) reg[4];
cx reg[3],reg[4];
h reg[3];
rz(-0.96) reg[3];
h reg[3];
rz(-0.528) reg[3];
rz(1.8) reg[3];
rz(1.8) reg[3];
cx reg[2],reg[3];
rz(-1.8) reg[3];
cx reg[2],reg[3];
rz(-1.3) reg[2];
rz(-1.3) reg[2];
cx reg[1],reg[2];
rz(1.3) reg[2];
cx reg[1],reg[2];
h reg[1];
rz(0) reg[1];
h reg[1];
rz(0) reg[1];
rz(2.1) reg[1];
rz(2.1) reg[1];
cx reg[0],reg[1];
rz(-2.1) reg[1];
cx reg[0],reg[1];
h reg[0];
rz(0.96) reg[0];
h reg[0];
rz(0.144) reg[0];
rz(-2.7) reg[0];
rz(1.82) reg[1];
h reg[2];
rz(0) reg[2];
h reg[2];
rz(0) reg[2];
rz(-2.52) reg[2];
rz(-1.3) reg[3];
h reg[4];
rz(-0.96) reg[4];
h reg[4];
rz(-0.72) reg[4];
rz(-0.6) reg[4];
rz(1.14) reg[5];
h reg[6];
rz(-1.92) reg[6];
h reg[6];
rz(1.536) reg[6];
rz(0.66) reg[6];
rz(-0.26) reg[7];
h reg[8];
rz(0.08) reg[8];
h reg[9];
rz(-0.08) reg[9];
rz(-0.08) reg[9];
cx reg[8],reg[9];
rz(0.08) reg[9];
cx reg[8],reg[9];
rz(0.26) reg[8];
rz(0.26) reg[8];
cx reg[7],reg[8];
rz(-0.26) reg[8];
cx reg[7],reg[8];
h reg[7];
rz(-1.92) reg[7];
h reg[7];
rz(-0.288) reg[7];
rz(-0.66) reg[7];
rz(-0.66) reg[7];
cx reg[6],reg[7];
rz(0.66) reg[7];
cx reg[6],reg[7];
rz(-1.14) reg[6];
rz(-1.14) reg[6];
cx reg[5],reg[6];
rz(1.14) reg[6];
cx reg[5],reg[6];
h reg[5];
rz(-0.96) reg[5];
h reg[5];
rz(-0.288) reg[5];
rz(0.6) reg[5];
rz(0.6) reg[5];
cx reg[4],reg[5];
rz(-0.6) reg[5];
cx reg[4],reg[5];
rz(1.3) reg[4];
rz(1.3) reg[4];
cx reg[3],reg[4];
rz(-1.3) reg[4];
cx reg[3],reg[4];
h reg[3];
rz(0) reg[3];
h reg[3];
rz(0) reg[3];
rz(2.52) reg[3];
rz(2.52) reg[3];
cx reg[2],reg[3];
rz(-2.52) reg[3];
cx reg[2],reg[3];
rz(-1.82) reg[2];
rz(-1.82) reg[2];
cx reg[1],reg[2];
rz(1.82) reg[2];
cx reg[1],reg[2];
h reg[1];
rz(0.96) reg[1];
h reg[1];
rz(-0.432) reg[1];
rz(2.7) reg[1];
rz(2.7) reg[1];
cx reg[0],reg[1];
rz(-2.7) reg[1];
cx reg[0],reg[1];
h reg[0];
rz(1.92) reg[0];
h reg[0];
rz(0.288) reg[0];
rz(2.34) reg[1];
h reg[2];
rz(0.96) reg[2];
h reg[2];
rz(-0.576) reg[2];
rz(-3.24) reg[2];
rz(-1.82) reg[3];
h reg[4];
rz(0) reg[4];
h reg[4];
rz(0) reg[4];
rz(-0.84) reg[4];
rz(1.9) reg[5];
h reg[6];
rz(-0.96) reg[6];
h reg[6];
rz(0.768) reg[6];
rz(1.1) reg[6];
rz(-0.78) reg[7];
h reg[8];
rz(-1.92) reg[8];
h reg[8];
rz(1.248) reg[8];
rz(0.24) reg[8];
h reg[9];
rz(-1.92) reg[9];
h reg[9];
rz(-1.824) reg[9];
rz(-0.24) reg[9];
rz(-0.24) reg[9];
cx reg[8],reg[9];
rz(0.24) reg[9];
cx reg[8],reg[9];
rz(0.78) reg[8];
rz(0.78) reg[8];
cx reg[7],reg[8];
rz(-0.78) reg[8];
cx reg[7],reg[8];
h reg[7];
rz(-0.96) reg[7];
h reg[7];
rz(-0.144) reg[7];
rz(-1.1) reg[7];
rz(-1.1) reg[7];
cx reg[6],reg[7];
rz(1.1) reg[7];
cx reg[6],reg[7];
rz(-1.9) reg[6];
rz(-1.9) reg[6];
cx reg[5],reg[6];
rz(1.9) reg[6];
cx reg[5],reg[6];
h reg[5];
rz(0) reg[5];
h reg[5];
rz(0) reg[5];
rz(0.84) reg[5];
rz(0.84) reg[5];
cx reg[4],reg[5];
rz(-0.84) reg[5];
cx reg[4],reg[5];
rz(1.82) reg[4];
rz(1.82) reg[4];
cx reg[3],reg[4];
rz(-1.82) reg[4];
cx reg[3],reg[4];
h reg[3];
rz(0.96) reg[3];
h reg[3];
rz(0.528) reg[3];
rz(3.24) reg[3];
rz(3.24) reg[3];
cx reg[2],reg[3];
rz(-3.24) reg[3];
cx reg[2],reg[3];
rz(-2.34) reg[2];
rz(-2.34) reg[2];
cx reg[1],reg[2];
rz(2.34) reg[2];
cx reg[1],reg[2];
h reg[1];
rz(1.92) reg[1];
h reg[1];
rz(-0.864) reg[1];
h reg[2];
rz(1.92) reg[2];
h reg[2];
rz(-1.152) reg[2];
rz(-2.34) reg[3];
h reg[4];
rz(0.96) reg[4];
h reg[4];
rz(0.72) reg[4];
rz(-1.08) reg[4];
rz(2.66) reg[5];
h reg[6];
rz(0) reg[6];
h reg[6];
rz(0) reg[6];
rz(1.54) reg[6];
rz(-1.3) reg[7];
h reg[8];
rz(-0.96) reg[8];
h reg[8];
rz(0.624) reg[8];
rz(0.4) reg[8];
h reg[9];
rz(-0.96) reg[9];
h reg[9];
rz(-0.912) reg[9];
rz(-0.4) reg[9];
rz(-0.4) reg[9];
cx reg[8],reg[9];
rz(0.4) reg[9];
cx reg[8],reg[9];
rz(1.3) reg[8];
rz(1.3) reg[8];
cx reg[7],reg[8];
rz(-1.3) reg[8];
cx reg[7],reg[8];
h reg[7];
rz(0) reg[7];
h reg[7];
rz(0) reg[7];
rz(-1.54) reg[7];
rz(-1.54) reg[7];
cx reg[6],reg[7];
rz(1.54) reg[7];
cx reg[6],reg[7];
rz(-2.66) reg[6];
rz(-2.66) reg[6];
cx reg[5],reg[6];
rz(2.66) reg[6];
cx reg[5],reg[6];
h reg[5];
rz(0.96) reg[5];
h reg[5];
rz(0.288) reg[5];
rz(1.08) reg[5];
rz(1.08) reg[5];
cx reg[4],reg[5];
rz(-1.08) reg[5];
cx reg[4],reg[5];
rz(2.34) reg[4];
rz(2.34) reg[4];
cx reg[3],reg[4];
rz(-2.34) reg[4];
cx reg[3],reg[4];
h reg[3];
rz(1.92) reg[3];
h reg[3];
rz(1.056) reg[3];
h reg[4];
rz(1.92) reg[4];
h reg[4];
rz(1.44) reg[4];
rz(3.42) reg[5];
h reg[6];
rz(0.96) reg[6];
h reg[6];
rz(-0.768) reg[6];
rz(1.98) reg[6];
rz(-1.82) reg[7];
h reg[8];
rz(0) reg[8];
h reg[8];
rz(0) reg[8];
rz(0.56) reg[8];
h reg[9];
rz(0) reg[9];
h reg[9];
rz(0) reg[9];
rz(-0.56) reg[9];
rz(-0.56) reg[9];
cx reg[8],reg[9];
rz(0.56) reg[9];
cx reg[8],reg[9];
rz(1.82) reg[8];
rz(1.82) reg[8];
cx reg[7],reg[8];
rz(-1.82) reg[8];
cx reg[7],reg[8];
h reg[7];
rz(0.96) reg[7];
h reg[7];
rz(0.144) reg[7];
rz(-1.98) reg[7];
rz(-1.98) reg[7];
cx reg[6],reg[7];
rz(1.98) reg[7];
cx reg[6],reg[7];
rz(-3.42) reg[6];
rz(-3.42) reg[6];
cx reg[5],reg[6];
rz(3.42) reg[6];
cx reg[5],reg[6];
h reg[5];
rz(1.92) reg[5];
h reg[5];
rz(0.576) reg[5];
h reg[6];
rz(1.92) reg[6];
h reg[6];
rz(-1.536) reg[6];
rz(-2.34) reg[7];
h reg[8];
rz(0.96) reg[8];
h reg[8];
rz(-0.624) reg[8];
rz(0.72) reg[8];
h reg[9];
rz(0.96) reg[9];
h reg[9];
rz(0.912) reg[9];
rz(-0.72) reg[9];
rz(-0.72) reg[9];
cx reg[8],reg[9];
rz(0.72) reg[9];
cx reg[8],reg[9];
rz(2.34) reg[8];
rz(2.34) reg[8];
cx reg[7],reg[8];
rz(-2.34) reg[8];
cx reg[7],reg[8];
h reg[7];
rz(1.92) reg[7];
h reg[7];
rz(0.288) reg[7];
h reg[8];
rz(1.92) reg[8];
h reg[8];
rz(-1.248) reg[8];
h reg[9];
rz(1.92) reg[9];
h reg[9];
rz(1.824) reg[9];
OPENQASM 2.0;
include "qelib1.inc";
qreg q[8];
h q[0];
rz(0.148) q[0];
h q[1];
rz(0.16) q[1];
h q[2];
rz(0.17200000000000001) q[2];
h q[3];
rz(0.184) q[3];
h q[4];
rz(0.196) q[4];
h q[5];
rz(0.20800000000000002) q[5];
h q[6];
rz(0.22) q[6];
h q[7];
rz(0.232) q[7];
cx q[0],q[1];
cx q[1],q[2];
cx q[2],q[3];
cx q[3],q[4];
cx q[4],q[5];
cx q[5],q[6];
cx q[6],q[7];
rz(-0.252) q[0];
rz(-0.26) q[1];
rz(-0.268) q[2];
rz(-0.276) q[3];
rz(-0.28400000000000003) q[4];
rz(-0.292) q[5];
rz(-0.3) q[6];
rz(-0.308) q[7];
cx q[6],q[7];
cx q[5],q[6];
cx q[4],q[5];
cx q[3],q[4];
cx q[2],q[3];
cx q[1],q[2];
cx q[0],q[1];
h q[0];
rz(0.176) q[0];
h q[1];
rz(0.188) q[1];
h q[2];
rz(0.2) q[2];
h q[3];
rz(0.212) q[3];
h q[4];
rz(0.224) q[4];
h q[5];
rz(0.23600000000000002) q[5];
h q[6];
rz(0.248) q[6];
h q[7];
rz(0.26) q[7];
cx q[0],q[1];
cx q[1],q[2];
cx q[2],q[3];
cx q[3],q[4];
cx q[4],q[5];
cx q[5],q[6];
cx q[6],q[7];
rz(-0.272) q[0];
rz(-0.28) q[1];
rz(-0.28800000000000003) q[2];
rz(-0.296) q[3];
rz(-0.304) q[4];
rz(-0.312) q[5];
rz(-0.32) q[6];
rz(-0.328) q[7];
cx q[6],q[7];
cx q[5],q[6];
cx q[4],q[5];
cx q[3],q[4];
cx q[2],q[3];
cx q[1],q[2];
cx q[0],q[1];
h q[0];
rz(0.20400000000000001) q[0];
h q[1];
rz(0.216) q[1];
h q[2];
rz(0.228) q[2];
h q[3];
rz(0.24) q[3];
h q[4];
rz(0.252) q[4];
h q[5];
rz(0.264) q[5];
h q[6];
rz(0.276) q[6];
h q[7];
rz(0.28800000000000003) q[7];
cx q[0],q[1];
cx q[1],q[2];
cx q[2],q[3];
cx q[3],q[4];
cx q[4],q[5];
cx q[5],q[6];
cx q[6],q[7];
rz(-0.292) q[0];
rz(-0.3) q[1];
rz(-0.308) q[2];
rz(-0.316) q[3];
rz(-0.324) q[4];
rz(-0.332) q[5];
rz(-0.34) q[6];
rz(-0.34800000000000003) q[7];
cx q[6],q[7];
cx q[5],q[6];
cx q[4],q[5];
cx q[3],q[4];
cx q[2],q[3];
cx q[1],q[2];
cx q[0],q[1];
h q[0];
rz(0.232) q[0];
h q[1];
rz(0.244) q[1];
h q[2];
rz(0.256) q[2];
h q[3];
rz(0.268) q[3];
h q[4];
rz(0.28) q[4];
h q[5];
rz(0.292) q[5];
h q[6];
rz(0.304) q[6];
h q[7];
rz(0.316) q[7];
cx q[0],q[1];
cx q[1],q[2];
cx q[2],q[3];
OPENQASM 2.0;
include "qelib1.inc";
qreg q[8];
h q[0];
rz(0.1480000025019093) q[0];
h q[1];
rz(0.16000000794427602) q[1];
h q[2];
rz(0.1720000055137138) q[2];
h q[3];
rz(0.1839999945041438) q[3];
h q[4];
rz(0.1959999960033257) q[4];
h q[5];
rz(0.20800000747106892) q[5];
h q[6];
rz(0.2199999901053061) q[6];
h q[7];
rz(0.2320000064245684) q[7];
cx q[0],q[1];
cx q[1],q[2];
cx q[2],q[3];
cx q[3],q[4];
cx q[4],q[5];
cx q[5],q[6];
cx q[6],q[7];
rz(-0.25199999405861145) q[0];
rz(-0.26000000064130097) q[1];
rz(-0.26800000393935147) q[2];
rz(-0.27600000443148776) q[3];
rz(-0.2840000049026083) q[4];
rz(-0.29200000109847385) q[5];
rz(-0.2999999999090348) q[6];
rz(-0.307999998930053) q[7];
cx q[6],q[7];
cx q[5],q[6];
cx q[4],q[5];
cx q[3],q[4];
cx q[2],q[3];
cx q[1],q[2];
cx q[0],q[1];
h q[0];
rz(0.17600000991000567) q[0];
h q[1];
rz(0.1880000058532384) q[1];
h q[2];
rz(0.2000000024435846) q[2];
h q[3];
rz(0.21200000977920294) q[3];
h q[4];
rz(0.22399999430617398) q[4];
h q[5];
rz(0.2359999932042407) q[5];
h q[6];
rz(0.24800000225079208) q[6];
h q[7];
rz(0.2599999908788402) q[7];
cx q[0],q[1];
cx q[1],q[2];
cx q[2],q[3];
cx q[3],q[4];
cx q[4],q[5];
cx q[5],q[6];
cx q[6],q[7];
rz(-0.27200000928639445) q[0];
rz(-0.2799999997022236) q[1];
rz(-0.28800000067587955) q[2];
rz(-0.29599999165664453) q[3];
rz(-0.3039999974154749) q[4];
rz(-0.3119999997176471) q[5];
rz(-0.3200000000625313) q[6];
rz(-0.32800000504970156) q[7];
cx q[6],q[7];
cx q[5],q[6];
cx q[4],q[5];
cx q[3],q[4];
cx q[2],q[3];
cx q[1],q[2];
cx q[0],q[1];
h q[0];
rz(0.20399999023588053) q[0];
h q[1];
rz(0.2159999938480429) q[1];
h q[2];
rz(0.22800000384064242) q[2];
h q[3];
rz(0.23999999401213448) q[3];
h q[4];
rz(0.2519999973907262) q[4];
h q[5];
rz(0.26399999007468483) q[5];
h q[6];
rz(0.27600000660095464) q[6];
h q[7];
rz(0.28799999308922164) q[7];
cx q[0],q[1];
cx q[1],q[2];
cx q[2],q[3];
cx q[3],q[4];
cx q[4],q[5];
cx q[5],q[6];
cx q[6],q[7];
rz(-0.2920000046480139) q[0];
rz(-0.2999999923933569) q[1];
rz(-0.3079999998041838) q[2];
rz(-0.31599999305699505) q[3];
rz(-0.3239999972056567) q[4];
rz(-0.33199999516458106) q[5];
rz(-0.3400000081700879) q[6];
rz(-0.3479999991771236) q[7];
cx q[6],q[7];
cx q[5],q[6];
cx q[4],q[5];
cx q[3],q[4];
cx q[2],q[3];
cx q[1],q[2];
cx q[0],q[1];
h q[0];
rz(0.23200000015544472) q[0];
h q[1];
rz(0.24400000742678754) q[1];
h q[2];
rz(0.25599999722528116) q[2];
h q[3];
rz(0.26800000196368134) q[3];
h q[4];
rz(0.2799999911850329) q[4];
h q[5];
rz(0.291999997752636) q[5];
h q[6];
rz(0.3039999964607269) q[6];
h q[7];
rz(0.31599999300399456) q[7];
cx q[0],q[1];
cx q[1],q[2];
cx q[2],q[3];
"""Regenerate relative.npy, the phase-aligned residual U^dagger V, from two QASM files.
Same computation as `repro_dd_blowup.py --pair A B`, but saved to disk so that
`repro_dd_blowup.py --matrix relative.npy` can load it.
Usage: python regenerate_relative.py original.qasm bqskit-l2.qasm -o relative.npy
"""
import argparse
import numpy as np
from qiskit import qasm2
from qiskit.quantum_info import Operator
p = argparse.ArgumentParser()
p.add_argument('first')
p.add_argument('second')
p.add_argument('-o', '--output', default='relative.npy')
a = p.parse_args()
circuits = [qasm2.load(f, custom_instructions=qasm2.LEGACY_CUSTOM_INSTRUCTIONS)
for f in (a.first, a.second)]
u, v = [Operator(c).data for c in circuits]
w = u.conj().T @ v
w *= np.exp(-1j * np.angle(np.trace(w)))
np.save(a.output, w, allow_pickle=False)
dev = np.abs(w - np.eye(w.shape[0])).max()
print(f'saved {a.output}: shape={w.shape}, dtype={w.dtype}, max|W - I|={dev:.3e}')
"""Standalone core from_matrix diagnostic; run in a bounded child.
Default: exact saved relative matrix. --pair A.qasm B.qasm recomputes U†V.
Changing tolerance is a diagnostic, NOT a sound equivalence-checking fix.
"""
import argparse
import json
from pathlib import Path
import time
import numpy as np
from mqt.core import dd
p = argparse.ArgumentParser()
p.add_argument('--matrix', default=str(Path(__file__).resolve().parent / 'repro/relative.npy'))
p.add_argument('--pair', nargs=2, metavar=('A_QASM', 'B_QASM'))
p.add_argument('--tolerance', type=float, default=2.2737367544323206e-13)
a = p.parse_args()
if a.pair:
from qiskit import qasm2
from qiskit.quantum_info import Operator
circuits = [qasm2.load(f, custom_instructions=qasm2.LEGACY_CUSTOM_INSTRUCTIONS)
for f in a.pair]
u, v = [Operator(c).data for c in circuits]
w = u.conj().T @ v
w *= np.exp(-1j * np.angle(np.trace(w)))
else:
w = np.load(a.matrix, allow_pickle=False)
n = w.shape[0].bit_length()-1
assert w.shape == (2**n, 2**n)
# v3.10.1 exposes the process-global core tolerance through QCEC configuration.
# Construct a manager to set it; do NOT run any checker.
from qiskit import QuantumCircuit
from mqt.core import load
from mqt.qcec.pyqcec import Configuration, EquivalenceCheckingManager
cfg = Configuration()
cfg.execution.numerical_tolerance = a.tolerance
cfg.execution.parallel = False
cfg.execution.nthreads = 1
empty = load(QuantumCircuit(1))
manager = EquivalenceCheckingManager(empty, empty, cfg)
pkg = dd.DDPackage(n)
print(json.dumps({'event': 'FROM_MATRIX_START', 'qubits': n,
'tolerance': a.tolerance}), flush=True)
start = time.monotonic()
mat = pkg.from_matrix(w)
print(json.dumps({'event': 'FROM_MATRIX_RETURN',
'from_matrix_s': time.monotonic()-start,
'dd_size': mat.size(), 'is_identity': mat.is_identity()}), flush=True)
"""Standalone QCEC reproduction. Run under timeout -s KILL 60 taskset -c 3.
Defaults to the saved original/BQSKit pair; supply two QASM paths for scaling.
A return above max(20, 3*timeout) seconds is a timeout-regression signal (exit 1).
An external SIGKILL also indicates that verify did not return within 60 seconds.
"""
import argparse
import json
from pathlib import Path
import time
from qiskit import qasm2
from mqt import qcec
root = Path(__file__).resolve().parent
p = argparse.ArgumentParser()
p.add_argument('first', nargs='?', default=str(root / 'repro/original.qasm'))
p.add_argument('second', nargs='?', default=str(root / 'repro/bqskit-l2.qasm'))
p.add_argument('--timeout', type=float, default=2.0)
p.add_argument('--tolerance', type=float)
a = p.parse_args()
# LEGACY_CUSTOM_INSTRUCTIONS recognizes sx in BQSKit's QASM 2 output.
circuits = [qasm2.load(Path(f), custom_instructions=qasm2.LEGACY_CUSTOM_INSTRUCTIONS)
for f in (a.first, a.second)]
kwargs = dict(timeout=a.timeout, parallel=False, nthreads=1,
run_alternating_checker=True, run_construction_checker=False,
run_simulation_checker=False, run_zx_checker=False,
run_hsf_checker=False)
if a.tolerance is not None:
kwargs['numerical_tolerance'] = a.tolerance
print(json.dumps({'event': 'VERIFY_START', 'timeout': a.timeout,
'qubits': [c.num_qubits for c in circuits],
'gates': [len(c.data) for c in circuits]}), flush=True)
start = time.monotonic()
result = qcec.verify(*circuits, **kwargs)
elapsed = time.monotonic() - start
print(json.dumps({'event': 'VERIFY_RETURN', 'verify_wall_s': elapsed,
'results': result.json()}), flush=True)
raise SystemExit(1 if elapsed > max(20.0, 3 * a.timeout) else 0)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment