diff --git a/src/transpile_benchy/interfaces/hardcoded/ae_n16.qasm b/src/transpile_benchy/interfaces/hardcoded/ae_n16.qasm new file mode 100644 index 0000000..450d98f --- /dev/null +++ b/src/transpile_benchy/interfaces/hardcoded/ae_n16.qasm @@ -0,0 +1,41 @@ +OPENQASM 2.0; +include "qelib1.inc"; +gate ccircuit_798 q0,q1 { p(0) q0; p(0) q1; cx q0,q1; u(-0.9272952180016122,0,0) q1; cx q0,q1; u(0.9272952180016122,0,0) q1; } +gate ccircuit_807 q0,q1 { p(0) q0; p(0) q1; cx q0,q1; u(-1.8545904360032244,0,0) q1; cx q0,q1; u(1.8545904360032244,0,0) q1; } +gate ccircuit_816 q0,q1 { p(0) q0; p(0) q1; cx q0,q1; u(-3.7091808720064487,0,0) q1; cx q0,q1; u(3.7091808720064487,0,0) q1; } +gate ccircuit_825 q0,q1 { p(0) q0; p(0) q1; cx q0,q1; u(-7.4183617440128975,0,0) q1; cx q0,q1; u(7.4183617440128975,0,0) q1; } +gate ccircuit_834 q0,q1 { p(0) q0; p(0) q1; cx q0,q1; u(-14.836723488025795,0,0) q1; cx q0,q1; u(14.836723488025795,0,0) q1; } +gate ccircuit_843 q0,q1 { p(0) q0; p(0) q1; cx q0,q1; u(-29.67344697605159,0,0) q1; cx q0,q1; u(29.67344697605159,0,0) q1; } +gate ccircuit_852 q0,q1 { p(0) q0; p(0) q1; cx q0,q1; u(-59.34689395210318,0,0) q1; cx q0,q1; u(59.34689395210318,0,0) q1; } +gate ccircuit_861 q0,q1 { p(0) q0; p(0) q1; cx q0,q1; u(-118.69378790420636,0,0) q1; cx q0,q1; u(118.69378790420636,0,0) q1; } +gate ccircuit_870 q0,q1 { p(0) q0; p(0) q1; cx q0,q1; u(-237.38757580841272,0,0) q1; cx q0,q1; u(237.38757580841272,0,0) q1; } +gate ccircuit_879 q0,q1 { p(0) q0; p(0) q1; cx q0,q1; u(-474.77515161682544,0,0) q1; cx q0,q1; u(474.77515161682544,0,0) q1; } +gate ccircuit_888 q0,q1 { p(0) q0; p(0) q1; cx q0,q1; u(-949.5503032336509,0,0) q1; cx q0,q1; u(949.5503032336509,0,0) q1; } +gate ccircuit_897 q0,q1 { p(0) q0; p(0) q1; cx q0,q1; u(-1899.1006064673018,0,0) q1; cx q0,q1; u(1899.1006064673018,0,0) q1; } +gate ccircuit_906 q0,q1 { p(0) q0; p(0) q1; cx q0,q1; u(-3798.2012129346035,0,0) q1; cx q0,q1; u(3798.2012129346035,0,0) q1; } +gate ccircuit_915 q0,q1 { p(0) q0; p(0) q1; cx q0,q1; u(-7596.402425869207,0,0) q1; cx q0,q1; u(7596.402425869207,0,0) q1; } +gate ccircuit_924 q0,q1 { p(0) q0; p(0) q1; cx q0,q1; u(-15192.804851738414,0,0) q1; cx q0,q1; u(15192.804851738414,0,0) q1; } +gate gate_IQFT_dg q0,q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q11,q12,q13,q14 { h q0; cp(-pi/2) q1,q0; h q1; cp(-pi/4) q2,q0; cp(-pi/2) q2,q1; h q2; cp(-pi/8) q3,q0; cp(-pi/4) q3,q1; cp(-pi/2) q3,q2; h q3; cp(-pi/16) q4,q0; cp(-pi/8) q4,q1; cp(-pi/4) q4,q2; cp(-pi/2) q4,q3; h q4; cp(-pi/32) q5,q0; cp(-pi/16) q5,q1; cp(-pi/8) q5,q2; cp(-pi/4) q5,q3; cp(-pi/2) q5,q4; h q5; cp(-pi/64) q6,q0; cp(-pi/32) q6,q1; cp(-pi/16) q6,q2; cp(-pi/8) q6,q3; cp(-pi/4) q6,q4; cp(-pi/2) q6,q5; h q6; cp(-pi/128) q7,q0; cp(-pi/64) q7,q1; cp(-pi/32) q7,q2; cp(-pi/16) q7,q3; cp(-pi/8) q7,q4; cp(-pi/4) q7,q5; cp(-pi/2) q7,q6; h q7; cp(-pi/256) q8,q0; cp(-pi/128) q8,q1; cp(-pi/64) q8,q2; cp(-pi/32) q8,q3; cp(-pi/16) q8,q4; cp(-pi/8) q8,q5; cp(-pi/4) q8,q6; cp(-pi/2) q8,q7; h q8; cp(-pi/512) q9,q0; cp(-pi/256) q9,q1; cp(-pi/128) q9,q2; cp(-pi/64) q9,q3; cp(-pi/32) q9,q4; cp(-pi/16) q9,q5; cp(-pi/8) q9,q6; cp(-pi/4) q9,q7; cp(-pi/2) q9,q8; h q9; cp(-pi/1024) q10,q0; cp(-pi/512) q10,q1; cp(-pi/256) q10,q2; cp(-pi/128) q10,q3; cp(-pi/64) q10,q4; cp(-pi/32) q10,q5; cp(-pi/16) q10,q6; cp(-pi/8) q10,q7; cp(-pi/4) q10,q8; cp(-pi/2) q10,q9; h q10; cp(-pi/2048) q11,q0; cp(-pi/1024) q11,q1; cp(-pi/512) q11,q2; cp(-pi/256) q11,q3; cp(-pi/128) q11,q4; cp(-pi/64) q11,q5; cp(-pi/32) q11,q6; cp(-pi/16) q11,q7; cp(-pi/8) q11,q8; cp(-pi/4) q11,q9; cp(-pi/2) q11,q10; h q11; cp(-pi/4096) q12,q0; cp(-pi/2048) q12,q1; cp(-pi/1024) q12,q2; cp(-pi/512) q12,q3; cp(-pi/256) q12,q4; cp(-pi/128) q12,q5; cp(-pi/64) q12,q6; cp(-pi/32) q12,q7; cp(-pi/16) q12,q8; cp(-pi/8) q12,q9; cp(-pi/4) q12,q10; cp(-pi/2) q12,q11; h q12; cp(-pi/8192) q13,q0; cp(-pi/4096) q13,q1; cp(-pi/2048) q13,q2; cp(-pi/1024) q13,q3; cp(-pi/512) q13,q4; cp(-pi/256) q13,q5; cp(-pi/128) q13,q6; cp(-pi/64) q13,q7; cp(-pi/32) q13,q8; cp(-pi/16) q13,q9; cp(-pi/8) q13,q10; cp(-pi/4) q13,q11; cp(-pi/2) q13,q12; h q13; cp(-pi/16384) q14,q0; cp(-pi/8192) q14,q1; cp(-pi/4096) q14,q2; cp(-pi/2048) q14,q3; cp(-pi/1024) q14,q4; cp(-pi/512) q14,q5; cp(-pi/256) q14,q6; cp(-pi/128) q14,q7; cp(-pi/64) q14,q8; cp(-pi/32) q14,q9; cp(-pi/16) q14,q10; cp(-pi/8) q14,q11; cp(-pi/4) q14,q12; cp(-pi/2) q14,q13; h q14; } +gate gate_QPE q0,q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q11,q12,q13,q14,q15 { h q0; h q1; h q2; h q3; h q4; h q5; h q6; h q7; h q8; h q9; h q10; h q11; h q12; h q13; h q14; ccircuit_798 q0,q15; ccircuit_807 q1,q15; ccircuit_816 q2,q15; ccircuit_825 q3,q15; ccircuit_834 q4,q15; ccircuit_843 q5,q15; ccircuit_852 q6,q15; ccircuit_861 q7,q15; ccircuit_870 q8,q15; ccircuit_879 q9,q15; ccircuit_888 q10,q15; ccircuit_897 q11,q15; ccircuit_906 q12,q15; ccircuit_915 q13,q15; ccircuit_924 q14,q15; gate_IQFT_dg q14,q13,q12,q11,q10,q9,q8,q7,q6,q5,q4,q3,q2,q1,q0; } +qreg eval[15]; +qreg q[1]; +creg meas[16]; +ry(0.9272952180016122) q[0]; +gate_QPE eval[0],eval[1],eval[2],eval[3],eval[4],eval[5],eval[6],eval[7],eval[8],eval[9],eval[10],eval[11],eval[12],eval[13],eval[14],q[0]; +barrier eval[0],eval[1],eval[2],eval[3],eval[4],eval[5],eval[6],eval[7],eval[8],eval[9],eval[10],eval[11],eval[12],eval[13],eval[14],q[0]; +measure eval[0] -> meas[0]; +measure eval[1] -> meas[1]; +measure eval[2] -> meas[2]; +measure eval[3] -> meas[3]; +measure eval[4] -> meas[4]; +measure eval[5] -> meas[5]; +measure eval[6] -> meas[6]; +measure eval[7] -> meas[7]; +measure eval[8] -> meas[8]; +measure eval[9] -> meas[9]; +measure eval[10] -> meas[10]; +measure eval[11] -> meas[11]; +measure eval[12] -> meas[12]; +measure eval[13] -> meas[13]; +measure eval[14] -> meas[14]; +measure q[0] -> meas[15]; diff --git a/src/transpile_benchy/interfaces/hardcoded/bigadder_n18.qasm b/src/transpile_benchy/interfaces/hardcoded/bigadder_n18.qasm new file mode 100644 index 0000000..b25023d --- /dev/null +++ b/src/transpile_benchy/interfaces/hardcoded/bigadder_n18.qasm @@ -0,0 +1,31 @@ +OPENQASM 2.0; +include "qelib1.inc"; +gate majority q0,q1,q2 { cx q2,q1; cx q2,q0; ccx q0,q1,q2; } +gate unmaj q0,q1,q2 { ccx q0,q1,q2; cx q2,q0; cx q0,q1; } +gate add4 q0,q1,q2,q3,q4,q5,q6,q7,q8,q9 { majority q8,q4,q0; majority q0,q5,q1; majority q1,q6,q2; majority q2,q7,q3; cx q3,q9; unmaj q2,q7,q3; unmaj q1,q6,q2; unmaj q0,q5,q1; unmaj q8,q4,q0; } +qreg carry[2]; +qreg a[8]; +qreg b[8]; +creg ans[8]; +creg carryout[1]; +x a[0]; +x b[0]; +x b[1]; +x b[2]; +x b[3]; +x b[4]; +x b[5]; +x b[6]; +x b[7]; +x b[6]; +add4 a[0],a[1],a[2],a[3],b[0],b[1],b[2],b[3],carry[0],carry[1]; +add4 a[4],a[5],a[6],a[7],b[4],b[5],b[6],b[7],carry[1],carry[0]; +measure b[0] -> ans[0]; +measure b[1] -> ans[1]; +measure b[2] -> ans[2]; +measure b[3] -> ans[3]; +measure b[4] -> ans[4]; +measure b[5] -> ans[5]; +measure b[6] -> ans[6]; +measure b[7] -> ans[7]; +measure carry[0] -> carryout[0]; diff --git a/src/transpile_benchy/interfaces/hardcoded/knn_n25.qasm b/src/transpile_benchy/interfaces/hardcoded/knn_n25.qasm new file mode 100644 index 0000000..55ddcdf --- /dev/null +++ b/src/transpile_benchy/interfaces/hardcoded/knn_n25.qasm @@ -0,0 +1,43 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q0[25]; +creg c0[1]; +ry(0.93346815) q0[1]; +ry(0.82988213) q0[2]; +ry(1.181111) q0[3]; +ry(1.802503) q0[4]; +ry(2.969805) q0[5]; +ry(1.5765553) q0[6]; +ry(1.8340893) q0[7]; +ry(2.741925) q0[8]; +ry(1.5106361) q0[9]; +ry(0.76354036) q0[10]; +ry(0.15484631) q0[11]; +ry(1.9311432) q0[12]; +ry(0.69057517) q0[13]; +ry(0.74294505) q0[14]; +ry(0.79338648) q0[15]; +ry(1.9075145) q0[16]; +ry(2.5852457) q0[17]; +ry(1.5388629) q0[18]; +ry(0.8484669) q0[19]; +ry(1.9789905) q0[20]; +ry(1.177473) q0[21]; +ry(0.46112786) q0[22]; +ry(0.17065064) q0[23]; +ry(1.8262873) q0[24]; +h q0[0]; +cswap q0[0],q0[1],q0[13]; +cswap q0[0],q0[2],q0[14]; +cswap q0[0],q0[3],q0[15]; +cswap q0[0],q0[4],q0[16]; +cswap q0[0],q0[5],q0[17]; +cswap q0[0],q0[6],q0[18]; +cswap q0[0],q0[7],q0[19]; +cswap q0[0],q0[8],q0[20]; +cswap q0[0],q0[9],q0[21]; +cswap q0[0],q0[10],q0[22]; +cswap q0[0],q0[11],q0[23]; +cswap q0[0],q0[12],q0[24]; +h q0[0]; +measure q0[0] -> c0[0]; diff --git a/src/transpile_benchy/interfaces/hardcoded/multiplier_n15.qasm b/src/transpile_benchy/interfaces/hardcoded/multiplier_n15.qasm new file mode 100644 index 0000000..65428ca --- /dev/null +++ b/src/transpile_benchy/interfaces/hardcoded/multiplier_n15.qasm @@ -0,0 +1,77 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[15]; +creg m_result[3]; +x q[13]; +x q[12]; +x q[10]; +x q[9]; +ccx q[12],q[9],q[1]; +ccx q[12],q[10],q[4]; +ccx q[12],q[11],q[7]; +ccx q[1],q[2],q[3]; +cx q[1],q[2]; +ccx q[0],q[2],q[3]; +ccx q[4],q[5],q[6]; +cx q[4],q[5]; +ccx q[3],q[5],q[6]; +cx q[7],q[8]; +cx q[6],q[8]; +ccx q[3],q[5],q[6]; +cx q[4],q[5]; +ccx q[4],q[5],q[6]; +cx q[4],q[5]; +cx q[3],q[5]; +ccx q[0],q[2],q[3]; +cx q[1],q[2]; +ccx q[1],q[2],q[3]; +cx q[1],q[2]; +cx q[0],q[2]; +ccx q[12],q[9],q[1]; +ccx q[12],q[10],q[4]; +ccx q[12],q[11],q[7]; +ccx q[13],q[9],q[4]; +ccx q[13],q[10],q[7]; +ccx q[1],q[2],q[3]; +cx q[1],q[2]; +ccx q[0],q[2],q[3]; +ccx q[4],q[5],q[6]; +cx q[4],q[5]; +ccx q[3],q[5],q[6]; +cx q[7],q[8]; +cx q[6],q[8]; +ccx q[3],q[5],q[6]; +cx q[4],q[5]; +ccx q[4],q[5],q[6]; +cx q[4],q[5]; +cx q[3],q[5]; +ccx q[0],q[2],q[3]; +cx q[1],q[2]; +ccx q[1],q[2],q[3]; +cx q[1],q[2]; +cx q[0],q[2]; +ccx q[13],q[9],q[4]; +ccx q[13],q[10],q[7]; +ccx q[14],q[9],q[7]; +ccx q[1],q[2],q[3]; +cx q[1],q[2]; +ccx q[0],q[2],q[3]; +ccx q[4],q[5],q[6]; +cx q[4],q[5]; +ccx q[3],q[5],q[6]; +cx q[7],q[8]; +cx q[6],q[8]; +ccx q[3],q[5],q[6]; +cx q[4],q[5]; +ccx q[4],q[5],q[6]; +cx q[4],q[5]; +cx q[3],q[5]; +ccx q[0],q[2],q[3]; +cx q[1],q[2]; +ccx q[1],q[2],q[3]; +cx q[1],q[2]; +cx q[0],q[2]; +ccx q[14],q[9],q[7]; +measure q[2] -> m_result[0]; +measure q[5] -> m_result[1]; +measure q[8] -> m_result[2]; diff --git a/src/transpile_benchy/interfaces/hardcoded/qec9xz_n17.qasm b/src/transpile_benchy/interfaces/hardcoded/qec9xz_n17.qasm new file mode 100644 index 0000000..11fbde3 --- /dev/null +++ b/src/transpile_benchy/interfaces/hardcoded/qec9xz_n17.qasm @@ -0,0 +1,66 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q0[9]; +qreg q1[8]; +creg c0[8]; +h q0[0]; +cx q0[0],q0[3]; +cx q0[0],q0[6]; +h q0[0]; +h q0[3]; +h q0[6]; +cx q0[0],q0[1]; +cx q0[0],q0[2]; +cx q0[3],q0[4]; +cx q0[3],q0[5]; +cx q0[6],q0[7]; +cx q0[6],q0[8]; +cx q0[0],q1[0]; +cx q0[1],q1[0]; +cx q0[1],q1[1]; +cx q0[2],q1[1]; +cx q0[3],q1[2]; +cx q0[4],q1[2]; +cx q0[4],q1[3]; +cx q0[5],q1[3]; +cx q0[6],q1[4]; +cx q0[7],q1[4]; +cx q0[7],q1[5]; +cx q0[8],q1[5]; +measure q1[0] -> c0[0]; +measure q1[1] -> c0[1]; +measure q1[2] -> c0[2]; +measure q1[3] -> c0[3]; +measure q1[4] -> c0[4]; +measure q1[5] -> c0[5]; +h q0[0]; +h q0[1]; +h q0[2]; +h q0[3]; +h q0[4]; +h q0[5]; +h q0[6]; +h q0[7]; +h q0[8]; +cx q0[0],q1[6]; +cx q0[3],q1[7]; +cx q0[1],q1[6]; +cx q0[4],q1[7]; +cx q0[2],q1[6]; +cx q0[5],q1[7]; +cx q0[3],q1[6]; +cx q0[6],q1[7]; +cx q0[4],q1[6]; +cx q0[7],q1[7]; +cx q0[5],q1[6]; +cx q0[8],q1[7]; +measure q1[6] -> c0[6]; +measure q1[7] -> c0[7]; +h q0[0]; +h q0[1]; +h q0[2]; +h q0[3]; +h q0[4]; +h q0[5]; +h q0[6]; +h q0[7]; diff --git a/src/transpile_benchy/interfaces/hardcoded/qft_n18.qasm b/src/transpile_benchy/interfaces/hardcoded/qft_n18.qasm new file mode 100644 index 0000000..b6a8602 --- /dev/null +++ b/src/transpile_benchy/interfaces/hardcoded/qft_n18.qasm @@ -0,0 +1,807 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[18]; +creg c[18]; +creg meas[18]; +h q[0]; +u1(pi/4) q[1]; +cx q[1],q[0]; +u1(-pi/4) q[0]; +cx q[1],q[0]; +u1(pi/4) q[0]; +h q[1]; +u1(pi/8) q[2]; +cx q[2],q[0]; +u1(-pi/8) q[0]; +cx q[2],q[0]; +u1(pi/8) q[0]; +u1(pi/4) q[2]; +cx q[2],q[1]; +u1(-pi/4) q[1]; +cx q[2],q[1]; +u1(pi/4) q[1]; +h q[2]; +u1(pi/16) q[3]; +cx q[3],q[0]; +u1(-pi/16) q[0]; +cx q[3],q[0]; +u1(pi/16) q[0]; +u1(pi/8) q[3]; +cx q[3],q[1]; +u1(-pi/8) q[1]; +cx q[3],q[1]; +u1(pi/8) q[1]; +u1(pi/4) q[3]; +cx q[3],q[2]; +u1(-pi/4) q[2]; +cx q[3],q[2]; +u1(pi/4) q[2]; +h q[3]; +u1(pi/32) q[4]; +cx q[4],q[0]; +u1(-pi/32) q[0]; +cx q[4],q[0]; +u1(pi/32) q[0]; +u1(pi/16) q[4]; +cx q[4],q[1]; +u1(-pi/16) q[1]; +cx q[4],q[1]; +u1(pi/16) q[1]; +u1(pi/8) q[4]; +cx q[4],q[2]; +u1(-pi/8) q[2]; +cx q[4],q[2]; +u1(pi/8) q[2]; +u1(pi/4) q[4]; +cx q[4],q[3]; +u1(-pi/4) q[3]; +cx q[4],q[3]; +u1(pi/4) q[3]; +h q[4]; +u1(pi/64) q[5]; +cx q[5],q[0]; +u1(-pi/64) q[0]; +cx q[5],q[0]; +u1(pi/64) q[0]; +u1(pi/32) q[5]; +cx q[5],q[1]; +u1(-pi/32) q[1]; +cx q[5],q[1]; +u1(pi/32) q[1]; +u1(pi/16) q[5]; +cx q[5],q[2]; +u1(-pi/16) q[2]; +cx q[5],q[2]; +u1(pi/16) q[2]; +u1(pi/8) q[5]; +cx q[5],q[3]; +u1(-pi/8) q[3]; +cx q[5],q[3]; +u1(pi/8) q[3]; +u1(pi/4) q[5]; +cx q[5],q[4]; +u1(-pi/4) q[4]; +cx q[5],q[4]; +u1(pi/4) q[4]; +h q[5]; +u1(pi/128) q[6]; +cx q[6],q[0]; +u1(-pi/128) q[0]; +cx q[6],q[0]; +u1(pi/128) q[0]; +u1(pi/64) q[6]; +cx q[6],q[1]; +u1(-pi/64) q[1]; +cx q[6],q[1]; +u1(pi/64) q[1]; +u1(pi/32) q[6]; +cx q[6],q[2]; +u1(-pi/32) q[2]; +cx q[6],q[2]; +u1(pi/32) q[2]; +u1(pi/16) q[6]; +cx q[6],q[3]; +u1(-pi/16) q[3]; +cx q[6],q[3]; +u1(pi/16) q[3]; +u1(pi/8) q[6]; +cx q[6],q[4]; +u1(-pi/8) q[4]; +cx q[6],q[4]; +u1(pi/8) q[4]; +u1(pi/4) q[6]; +cx q[6],q[5]; +u1(-pi/4) q[5]; +cx q[6],q[5]; +u1(pi/4) q[5]; +h q[6]; +u1(pi/256) q[7]; +cx q[7],q[0]; +u1(-pi/256) q[0]; +cx q[7],q[0]; +u1(pi/256) q[0]; +u1(pi/128) q[7]; +cx q[7],q[1]; +u1(-pi/128) q[1]; +cx q[7],q[1]; +u1(pi/128) q[1]; +u1(pi/64) q[7]; +cx q[7],q[2]; +u1(-pi/64) q[2]; +cx q[7],q[2]; +u1(pi/64) q[2]; +u1(pi/32) q[7]; +cx q[7],q[3]; +u1(-pi/32) q[3]; +cx q[7],q[3]; +u1(pi/32) q[3]; +u1(pi/16) q[7]; +cx q[7],q[4]; +u1(-pi/16) q[4]; +cx q[7],q[4]; +u1(pi/16) q[4]; +u1(pi/8) q[7]; +cx q[7],q[5]; +u1(-pi/8) q[5]; +cx q[7],q[5]; +u1(pi/8) q[5]; +u1(pi/4) q[7]; +cx q[7],q[6]; +u1(-pi/4) q[6]; +cx q[7],q[6]; +u1(pi/4) q[6]; +h q[7]; +u1(pi/512) q[8]; +cx q[8],q[0]; +u1(-pi/512) q[0]; +cx q[8],q[0]; +u1(pi/512) q[0]; +u1(pi/256) q[8]; +cx q[8],q[1]; +u1(-pi/256) q[1]; +cx q[8],q[1]; +u1(pi/256) q[1]; +u1(pi/128) q[8]; +cx q[8],q[2]; +u1(-pi/128) q[2]; +cx q[8],q[2]; +u1(pi/128) q[2]; +u1(pi/64) q[8]; +cx q[8],q[3]; +u1(-pi/64) q[3]; +cx q[8],q[3]; +u1(pi/64) q[3]; +u1(pi/32) q[8]; +cx q[8],q[4]; +u1(-pi/32) q[4]; +cx q[8],q[4]; +u1(pi/32) q[4]; +u1(pi/16) q[8]; +cx q[8],q[5]; +u1(-pi/16) q[5]; +cx q[8],q[5]; +u1(pi/16) q[5]; +u1(pi/8) q[8]; +cx q[8],q[6]; +u1(-pi/8) q[6]; +cx q[8],q[6]; +u1(pi/8) q[6]; +u1(pi/4) q[8]; +cx q[8],q[7]; +u1(-pi/4) q[7]; +cx q[8],q[7]; +u1(pi/4) q[7]; +h q[8]; +u1(pi/1024) q[9]; +cx q[9],q[0]; +u1(-pi/1024) q[0]; +cx q[9],q[0]; +u1(pi/1024) q[0]; +u1(pi/512) q[9]; +cx q[9],q[1]; +u1(-pi/512) q[1]; +cx q[9],q[1]; +u1(pi/512) q[1]; +u1(pi/256) q[9]; +cx q[9],q[2]; +u1(-pi/256) q[2]; +cx q[9],q[2]; +u1(pi/256) q[2]; +u1(pi/128) q[9]; +cx q[9],q[3]; +u1(-pi/128) q[3]; +cx q[9],q[3]; +u1(pi/128) q[3]; +u1(pi/64) q[9]; +cx q[9],q[4]; +u1(-pi/64) q[4]; +cx q[9],q[4]; +u1(pi/64) q[4]; +u1(pi/32) q[9]; +cx q[9],q[5]; +u1(-pi/32) q[5]; +cx q[9],q[5]; +u1(pi/32) q[5]; +u1(pi/16) q[9]; +cx q[9],q[6]; +u1(-pi/16) q[6]; +cx q[9],q[6]; +u1(pi/16) q[6]; +u1(pi/8) q[9]; +cx q[9],q[7]; +u1(-pi/8) q[7]; +cx q[9],q[7]; +u1(pi/8) q[7]; +u1(pi/4) q[9]; +cx q[9],q[8]; +u1(-pi/4) q[8]; +cx q[9],q[8]; +u1(pi/4) q[8]; +h q[9]; +u1(pi/2048) q[10]; +cx q[10],q[0]; +u1(-pi/2048) q[0]; +cx q[10],q[0]; +u1(pi/2048) q[0]; +u1(pi/1024) q[10]; +cx q[10],q[1]; +u1(-pi/1024) q[1]; +cx q[10],q[1]; +u1(pi/1024) q[1]; +u1(pi/512) q[10]; +cx q[10],q[2]; +u1(-pi/512) q[2]; +cx q[10],q[2]; +u1(pi/512) q[2]; +u1(pi/256) q[10]; +cx q[10],q[3]; +u1(-pi/256) q[3]; +cx q[10],q[3]; +u1(pi/256) q[3]; +u1(pi/128) q[10]; +cx q[10],q[4]; +u1(-pi/128) q[4]; +cx q[10],q[4]; +u1(pi/128) q[4]; +u1(pi/64) q[10]; +cx q[10],q[5]; +u1(-pi/64) q[5]; +cx q[10],q[5]; +u1(pi/64) q[5]; +u1(pi/32) q[10]; +cx q[10],q[6]; +u1(-pi/32) q[6]; +cx q[10],q[6]; +u1(pi/32) q[6]; +u1(pi/16) q[10]; +cx q[10],q[7]; +u1(-pi/16) q[7]; +cx q[10],q[7]; +u1(pi/16) q[7]; +u1(pi/8) q[10]; +cx q[10],q[8]; +u1(-pi/8) q[8]; +cx q[10],q[8]; +u1(pi/8) q[8]; +u1(pi/4) q[10]; +cx q[10],q[9]; +u1(-pi/4) q[9]; +cx q[10],q[9]; +u1(pi/4) q[9]; +h q[10]; +u1(pi/4096) q[11]; +cx q[11],q[0]; +u1(-pi/4096) q[0]; +cx q[11],q[0]; +u1(pi/4096) q[0]; +u1(pi/2048) q[11]; +cx q[11],q[1]; +u1(-pi/2048) q[1]; +cx q[11],q[1]; +u1(pi/2048) q[1]; +u1(pi/1024) q[11]; +cx q[11],q[2]; +u1(-pi/1024) q[2]; +cx q[11],q[2]; +u1(pi/1024) q[2]; +u1(pi/512) q[11]; +cx q[11],q[3]; +u1(-pi/512) q[3]; +cx q[11],q[3]; +u1(pi/512) q[3]; +u1(pi/256) q[11]; +cx q[11],q[4]; +u1(-pi/256) q[4]; +cx q[11],q[4]; +u1(pi/256) q[4]; +u1(pi/128) q[11]; +cx q[11],q[5]; +u1(-pi/128) q[5]; +cx q[11],q[5]; +u1(pi/128) q[5]; +u1(pi/64) q[11]; +cx q[11],q[6]; +u1(-pi/64) q[6]; +cx q[11],q[6]; +u1(pi/64) q[6]; +u1(pi/32) q[11]; +cx q[11],q[7]; +u1(-pi/32) q[7]; +cx q[11],q[7]; +u1(pi/32) q[7]; +u1(pi/16) q[11]; +cx q[11],q[8]; +u1(-pi/16) q[8]; +cx q[11],q[8]; +u1(pi/16) q[8]; +u1(pi/8) q[11]; +cx q[11],q[9]; +u1(-pi/8) q[9]; +cx q[11],q[9]; +u1(pi/8) q[9]; +u1(pi/4) q[11]; +cx q[11],q[10]; +u1(-pi/4) q[10]; +cx q[11],q[10]; +u1(pi/4) q[10]; +h q[11]; +u1(pi/8192) q[12]; +cx q[12],q[0]; +u1(-pi/8192) q[0]; +cx q[12],q[0]; +u1(pi/8192) q[0]; +u1(pi/4096) q[12]; +cx q[12],q[1]; +u1(-pi/4096) q[1]; +cx q[12],q[1]; +u1(pi/4096) q[1]; +u1(pi/2048) q[12]; +cx q[12],q[2]; +u1(-pi/2048) q[2]; +cx q[12],q[2]; +u1(pi/2048) q[2]; +u1(pi/1024) q[12]; +cx q[12],q[3]; +u1(-pi/1024) q[3]; +cx q[12],q[3]; +u1(pi/1024) q[3]; +u1(pi/512) q[12]; +cx q[12],q[4]; +u1(-pi/512) q[4]; +cx q[12],q[4]; +u1(pi/512) q[4]; +u1(pi/256) q[12]; +cx q[12],q[5]; +u1(-pi/256) q[5]; +cx q[12],q[5]; +u1(pi/256) q[5]; +u1(pi/128) q[12]; +cx q[12],q[6]; +u1(-pi/128) q[6]; +cx q[12],q[6]; +u1(pi/128) q[6]; +u1(pi/64) q[12]; +cx q[12],q[7]; +u1(-pi/64) q[7]; +cx q[12],q[7]; +u1(pi/64) q[7]; +u1(pi/32) q[12]; +cx q[12],q[8]; +u1(-pi/32) q[8]; +cx q[12],q[8]; +u1(pi/32) q[8]; +u1(pi/16) q[12]; +cx q[12],q[9]; +u1(-pi/16) q[9]; +cx q[12],q[9]; +u1(pi/16) q[9]; +u1(pi/8) q[12]; +cx q[12],q[10]; +u1(-pi/8) q[10]; +cx q[12],q[10]; +u1(pi/8) q[10]; +u1(pi/4) q[12]; +cx q[12],q[11]; +u1(-pi/4) q[11]; +cx q[12],q[11]; +u1(pi/4) q[11]; +h q[12]; +u1(pi/16384) q[13]; +cx q[13],q[0]; +u1(-pi/16384) q[0]; +cx q[13],q[0]; +u1(pi/16384) q[0]; +u1(pi/8192) q[13]; +cx q[13],q[1]; +u1(-pi/8192) q[1]; +cx q[13],q[1]; +u1(pi/8192) q[1]; +u1(pi/4096) q[13]; +cx q[13],q[2]; +u1(-pi/4096) q[2]; +cx q[13],q[2]; +u1(pi/4096) q[2]; +u1(pi/2048) q[13]; +cx q[13],q[3]; +u1(-pi/2048) q[3]; +cx q[13],q[3]; +u1(pi/2048) q[3]; +u1(pi/1024) q[13]; +cx q[13],q[4]; +u1(-pi/1024) q[4]; +cx q[13],q[4]; +u1(pi/1024) q[4]; +u1(pi/512) q[13]; +cx q[13],q[5]; +u1(-pi/512) q[5]; +cx q[13],q[5]; +u1(pi/512) q[5]; +u1(pi/256) q[13]; +cx q[13],q[6]; +u1(-pi/256) q[6]; +cx q[13],q[6]; +u1(pi/256) q[6]; +u1(pi/128) q[13]; +cx q[13],q[7]; +u1(-pi/128) q[7]; +cx q[13],q[7]; +u1(pi/128) q[7]; +u1(pi/64) q[13]; +cx q[13],q[8]; +u1(-pi/64) q[8]; +cx q[13],q[8]; +u1(pi/64) q[8]; +u1(pi/32) q[13]; +cx q[13],q[9]; +u1(-pi/32) q[9]; +cx q[13],q[9]; +u1(pi/32) q[9]; +u1(pi/16) q[13]; +cx q[13],q[10]; +u1(-pi/16) q[10]; +cx q[13],q[10]; +u1(pi/16) q[10]; +u1(pi/8) q[13]; +cx q[13],q[11]; +u1(-pi/8) q[11]; +cx q[13],q[11]; +u1(pi/8) q[11]; +u1(pi/4) q[13]; +cx q[13],q[12]; +u1(-pi/4) q[12]; +cx q[13],q[12]; +u1(pi/4) q[12]; +h q[13]; +u1(pi/32768) q[14]; +cx q[14],q[0]; +u1(-pi/32768) q[0]; +cx q[14],q[0]; +u1(pi/32768) q[0]; +u1(pi/16384) q[14]; +cx q[14],q[1]; +u1(-pi/16384) q[1]; +cx q[14],q[1]; +u1(pi/16384) q[1]; +u1(pi/8192) q[14]; +cx q[14],q[2]; +u1(-pi/8192) q[2]; +cx q[14],q[2]; +u1(pi/8192) q[2]; +u1(pi/4096) q[14]; +cx q[14],q[3]; +u1(-pi/4096) q[3]; +cx q[14],q[3]; +u1(pi/4096) q[3]; +u1(pi/2048) q[14]; +cx q[14],q[4]; +u1(-pi/2048) q[4]; +cx q[14],q[4]; +u1(pi/2048) q[4]; +u1(pi/1024) q[14]; +cx q[14],q[5]; +u1(-pi/1024) q[5]; +cx q[14],q[5]; +u1(pi/1024) q[5]; +u1(pi/512) q[14]; +cx q[14],q[6]; +u1(-pi/512) q[6]; +cx q[14],q[6]; +u1(pi/512) q[6]; +u1(pi/256) q[14]; +cx q[14],q[7]; +u1(-pi/256) q[7]; +cx q[14],q[7]; +u1(pi/256) q[7]; +u1(pi/128) q[14]; +cx q[14],q[8]; +u1(-pi/128) q[8]; +cx q[14],q[8]; +u1(pi/128) q[8]; +u1(pi/64) q[14]; +cx q[14],q[9]; +u1(-pi/64) q[9]; +cx q[14],q[9]; +u1(pi/64) q[9]; +u1(pi/32) q[14]; +cx q[14],q[10]; +u1(-pi/32) q[10]; +cx q[14],q[10]; +u1(pi/32) q[10]; +u1(pi/16) q[14]; +cx q[14],q[11]; +u1(-pi/16) q[11]; +cx q[14],q[11]; +u1(pi/16) q[11]; +u1(pi/8) q[14]; +cx q[14],q[12]; +u1(-pi/8) q[12]; +cx q[14],q[12]; +u1(pi/8) q[12]; +u1(pi/4) q[14]; +cx q[14],q[13]; +u1(-pi/4) q[13]; +cx q[14],q[13]; +u1(pi/4) q[13]; +h q[14]; +u1(pi/65536) q[15]; +cx q[15],q[0]; +u1(-pi/65536) q[0]; +cx q[15],q[0]; +u1(pi/65536) q[0]; +u1(pi/32768) q[15]; +cx q[15],q[1]; +u1(-pi/32768) q[1]; +cx q[15],q[1]; +u1(pi/32768) q[1]; +u1(pi/16384) q[15]; +cx q[15],q[2]; +u1(-pi/16384) q[2]; +cx q[15],q[2]; +u1(pi/16384) q[2]; +u1(pi/8192) q[15]; +cx q[15],q[3]; +u1(-pi/8192) q[3]; +cx q[15],q[3]; +u1(pi/8192) q[3]; +u1(pi/4096) q[15]; +cx q[15],q[4]; +u1(-pi/4096) q[4]; +cx q[15],q[4]; +u1(pi/4096) q[4]; +u1(pi/2048) q[15]; +cx q[15],q[5]; +u1(-pi/2048) q[5]; +cx q[15],q[5]; +u1(pi/2048) q[5]; +u1(pi/1024) q[15]; +cx q[15],q[6]; +u1(-pi/1024) q[6]; +cx q[15],q[6]; +u1(pi/1024) q[6]; +u1(pi/512) q[15]; +cx q[15],q[7]; +u1(-pi/512) q[7]; +cx q[15],q[7]; +u1(pi/512) q[7]; +u1(pi/256) q[15]; +cx q[15],q[8]; +u1(-pi/256) q[8]; +cx q[15],q[8]; +u1(pi/256) q[8]; +u1(pi/128) q[15]; +cx q[15],q[9]; +u1(-pi/128) q[9]; +cx q[15],q[9]; +u1(pi/128) q[9]; +u1(pi/64) q[15]; +cx q[15],q[10]; +u1(-pi/64) q[10]; +cx q[15],q[10]; +u1(pi/64) q[10]; +u1(pi/32) q[15]; +cx q[15],q[11]; +u1(-pi/32) q[11]; +cx q[15],q[11]; +u1(pi/32) q[11]; +u1(pi/16) q[15]; +cx q[15],q[12]; +u1(-pi/16) q[12]; +cx q[15],q[12]; +u1(pi/16) q[12]; +u1(pi/8) q[15]; +cx q[15],q[13]; +u1(-pi/8) q[13]; +cx q[15],q[13]; +u1(pi/8) q[13]; +u1(pi/4) q[15]; +cx q[15],q[14]; +u1(-pi/4) q[14]; +cx q[15],q[14]; +u1(pi/4) q[14]; +h q[15]; +u1(pi/131072) q[16]; +cx q[16],q[0]; +u1(-pi/131072) q[0]; +cx q[16],q[0]; +u1(pi/131072) q[0]; +u1(pi/65536) q[16]; +cx q[16],q[1]; +u1(-pi/65536) q[1]; +cx q[16],q[1]; +u1(pi/65536) q[1]; +u1(pi/32768) q[16]; +cx q[16],q[2]; +u1(-pi/32768) q[2]; +cx q[16],q[2]; +u1(pi/32768) q[2]; +u1(pi/16384) q[16]; +cx q[16],q[3]; +u1(-pi/16384) q[3]; +cx q[16],q[3]; +u1(pi/16384) q[3]; +u1(pi/8192) q[16]; +cx q[16],q[4]; +u1(-pi/8192) q[4]; +cx q[16],q[4]; +u1(pi/8192) q[4]; +u1(pi/4096) q[16]; +cx q[16],q[5]; +u1(-pi/4096) q[5]; +cx q[16],q[5]; +u1(pi/4096) q[5]; +u1(pi/2048) q[16]; +cx q[16],q[6]; +u1(-pi/2048) q[6]; +cx q[16],q[6]; +u1(pi/2048) q[6]; +u1(pi/1024) q[16]; +cx q[16],q[7]; +u1(-pi/1024) q[7]; +cx q[16],q[7]; +u1(pi/1024) q[7]; +u1(pi/512) q[16]; +cx q[16],q[8]; +u1(-pi/512) q[8]; +cx q[16],q[8]; +u1(pi/512) q[8]; +u1(pi/256) q[16]; +cx q[16],q[9]; +u1(-pi/256) q[9]; +cx q[16],q[9]; +u1(pi/256) q[9]; +u1(pi/128) q[16]; +cx q[16],q[10]; +u1(-pi/128) q[10]; +cx q[16],q[10]; +u1(pi/128) q[10]; +u1(pi/64) q[16]; +cx q[16],q[11]; +u1(-pi/64) q[11]; +cx q[16],q[11]; +u1(pi/64) q[11]; +u1(pi/32) q[16]; +cx q[16],q[12]; +u1(-pi/32) q[12]; +cx q[16],q[12]; +u1(pi/32) q[12]; +u1(pi/16) q[16]; +cx q[16],q[13]; +u1(-pi/16) q[13]; +cx q[16],q[13]; +u1(pi/16) q[13]; +u1(pi/8) q[16]; +cx q[16],q[14]; +u1(-pi/8) q[14]; +cx q[16],q[14]; +u1(pi/8) q[14]; +u1(pi/4) q[16]; +cx q[16],q[15]; +u1(-pi/4) q[15]; +cx q[16],q[15]; +u1(pi/4) q[15]; +h q[16]; +u1(pi/262144) q[17]; +cx q[17],q[0]; +u1(-pi/262144) q[0]; +cx q[17],q[0]; +u1(pi/262144) q[0]; +u1(pi/131072) q[17]; +cx q[17],q[1]; +u1(-pi/131072) q[1]; +cx q[17],q[1]; +u1(pi/131072) q[1]; +u1(pi/65536) q[17]; +cx q[17],q[2]; +u1(-pi/65536) q[2]; +cx q[17],q[2]; +u1(pi/65536) q[2]; +u1(pi/32768) q[17]; +cx q[17],q[3]; +u1(-pi/32768) q[3]; +cx q[17],q[3]; +u1(pi/32768) q[3]; +u1(pi/16384) q[17]; +cx q[17],q[4]; +u1(-pi/16384) q[4]; +cx q[17],q[4]; +u1(pi/16384) q[4]; +u1(pi/8192) q[17]; +cx q[17],q[5]; +u1(-pi/8192) q[5]; +cx q[17],q[5]; +u1(pi/8192) q[5]; +u1(pi/4096) q[17]; +cx q[17],q[6]; +u1(-pi/4096) q[6]; +cx q[17],q[6]; +u1(pi/4096) q[6]; +u1(pi/2048) q[17]; +cx q[17],q[7]; +u1(-pi/2048) q[7]; +cx q[17],q[7]; +u1(pi/2048) q[7]; +u1(pi/1024) q[17]; +cx q[17],q[8]; +u1(-pi/1024) q[8]; +cx q[17],q[8]; +u1(pi/1024) q[8]; +u1(pi/512) q[17]; +cx q[17],q[9]; +u1(-pi/512) q[9]; +cx q[17],q[9]; +u1(pi/512) q[9]; +u1(pi/256) q[17]; +cx q[17],q[10]; +u1(-pi/256) q[10]; +cx q[17],q[10]; +u1(pi/256) q[10]; +u1(pi/128) q[17]; +cx q[17],q[11]; +u1(-pi/128) q[11]; +cx q[17],q[11]; +u1(pi/128) q[11]; +u1(pi/64) q[17]; +cx q[17],q[12]; +u1(-pi/64) q[12]; +cx q[17],q[12]; +u1(pi/64) q[12]; +u1(pi/32) q[17]; +cx q[17],q[13]; +u1(-pi/32) q[13]; +cx q[17],q[13]; +u1(pi/32) q[13]; +u1(pi/16) q[17]; +cx q[17],q[14]; +u1(-pi/16) q[14]; +cx q[17],q[14]; +u1(pi/16) q[14]; +u1(pi/8) q[17]; +cx q[17],q[15]; +u1(-pi/8) q[15]; +cx q[17],q[15]; +u1(pi/8) q[15]; +u1(pi/4) q[17]; +cx q[17],q[16]; +u1(-pi/4) q[16]; +cx q[17],q[16]; +u1(pi/4) q[16]; +h q[17]; +barrier q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8],q[9],q[10],q[11],q[12],q[13],q[14],q[15],q[16],q[17]; +measure q[0] -> meas[0]; +measure q[1] -> meas[1]; +measure q[2] -> meas[2]; +measure q[3] -> meas[3]; +measure q[4] -> meas[4]; +measure q[5] -> meas[5]; +measure q[6] -> meas[6]; +measure q[7] -> meas[7]; +measure q[8] -> meas[8]; +measure q[9] -> meas[9]; +measure q[10] -> meas[10]; +measure q[11] -> meas[11]; +measure q[12] -> meas[12]; +measure q[13] -> meas[13]; +measure q[14] -> meas[14]; +measure q[15] -> meas[15]; +measure q[16] -> meas[16]; +measure q[17] -> meas[17]; diff --git a/src/transpile_benchy/interfaces/hardcoded/qftentangled_n16.qasm b/src/transpile_benchy/interfaces/hardcoded/qftentangled_n16.qasm new file mode 100644 index 0000000..2f7451b --- /dev/null +++ b/src/transpile_benchy/interfaces/hardcoded/qftentangled_n16.qasm @@ -0,0 +1,39 @@ +OPENQASM 2.0; +include "qelib1.inc"; +gate gate_QFT q0,q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q11,q12,q13,q14,q15 { h q15; cp(pi/2) q15,q14; cp(pi/4) q15,q13; cp(pi/8) q15,q12; cp(pi/16) q15,q11; cp(pi/32) q15,q10; cp(pi/64) q15,q9; cp(pi/128) q15,q8; cp(pi/256) q15,q7; cp(pi/512) q15,q6; cp(pi/1024) q15,q5; cp(pi/2048) q15,q4; cp(pi/4096) q15,q3; cp(pi/8192) q15,q2; cp(pi/16384) q15,q1; cp(pi/32768) q15,q0; h q14; cp(pi/2) q14,q13; cp(pi/4) q14,q12; cp(pi/8) q14,q11; cp(pi/16) q14,q10; cp(pi/32) q14,q9; cp(pi/64) q14,q8; cp(pi/128) q14,q7; cp(pi/256) q14,q6; cp(pi/512) q14,q5; cp(pi/1024) q14,q4; cp(pi/2048) q14,q3; cp(pi/4096) q14,q2; cp(pi/8192) q14,q1; cp(pi/16384) q14,q0; h q13; cp(pi/2) q13,q12; cp(pi/4) q13,q11; cp(pi/8) q13,q10; cp(pi/16) q13,q9; cp(pi/32) q13,q8; cp(pi/64) q13,q7; cp(pi/128) q13,q6; cp(pi/256) q13,q5; cp(pi/512) q13,q4; cp(pi/1024) q13,q3; cp(pi/2048) q13,q2; cp(pi/4096) q13,q1; cp(pi/8192) q13,q0; h q12; cp(pi/2) q12,q11; cp(pi/4) q12,q10; cp(pi/8) q12,q9; cp(pi/16) q12,q8; cp(pi/32) q12,q7; cp(pi/64) q12,q6; cp(pi/128) q12,q5; cp(pi/256) q12,q4; cp(pi/512) q12,q3; cp(pi/1024) q12,q2; cp(pi/2048) q12,q1; cp(pi/4096) q12,q0; h q11; cp(pi/2) q11,q10; cp(pi/4) q11,q9; cp(pi/8) q11,q8; cp(pi/16) q11,q7; cp(pi/32) q11,q6; cp(pi/64) q11,q5; cp(pi/128) q11,q4; cp(pi/256) q11,q3; cp(pi/512) q11,q2; cp(pi/1024) q11,q1; cp(pi/2048) q11,q0; h q10; cp(pi/2) q10,q9; cp(pi/4) q10,q8; cp(pi/8) q10,q7; cp(pi/16) q10,q6; cp(pi/32) q10,q5; cp(pi/64) q10,q4; cp(pi/128) q10,q3; cp(pi/256) q10,q2; cp(pi/512) q10,q1; cp(pi/1024) q10,q0; h q9; cp(pi/2) q9,q8; cp(pi/4) q9,q7; cp(pi/8) q9,q6; cp(pi/16) q9,q5; cp(pi/32) q9,q4; cp(pi/64) q9,q3; cp(pi/128) q9,q2; cp(pi/256) q9,q1; cp(pi/512) q9,q0; h q8; cp(pi/2) q8,q7; cp(pi/4) q8,q6; cp(pi/8) q8,q5; cp(pi/16) q8,q4; cp(pi/32) q8,q3; cp(pi/64) q8,q2; cp(pi/128) q8,q1; cp(pi/256) q8,q0; h q7; cp(pi/2) q7,q6; cp(pi/4) q7,q5; cp(pi/8) q7,q4; cp(pi/16) q7,q3; cp(pi/32) q7,q2; cp(pi/64) q7,q1; cp(pi/128) q7,q0; h q6; cp(pi/2) q6,q5; cp(pi/4) q6,q4; cp(pi/8) q6,q3; cp(pi/16) q6,q2; cp(pi/32) q6,q1; cp(pi/64) q6,q0; h q5; cp(pi/2) q5,q4; cp(pi/4) q5,q3; cp(pi/8) q5,q2; cp(pi/16) q5,q1; cp(pi/32) q5,q0; h q4; cp(pi/2) q4,q3; cp(pi/4) q4,q2; cp(pi/8) q4,q1; cp(pi/16) q4,q0; h q3; cp(pi/2) q3,q2; cp(pi/4) q3,q1; cp(pi/8) q3,q0; h q2; cp(pi/2) q2,q1; cp(pi/4) q2,q0; h q1; cp(pi/2) q1,q0; h q0; swap q0,q15; swap q1,q14; swap q2,q13; swap q3,q12; swap q4,q11; swap q5,q10; swap q6,q9; swap q7,q8; } +qreg q[16]; +creg meas[16]; +h q[15]; +cx q[15],q[14]; +cx q[14],q[13]; +cx q[13],q[12]; +cx q[12],q[11]; +cx q[11],q[10]; +cx q[10],q[9]; +cx q[9],q[8]; +cx q[8],q[7]; +cx q[7],q[6]; +cx q[6],q[5]; +cx q[5],q[4]; +cx q[4],q[3]; +cx q[3],q[2]; +cx q[2],q[1]; +cx q[1],q[0]; +gate_QFT q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8],q[9],q[10],q[11],q[12],q[13],q[14],q[15]; +barrier q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8],q[9],q[10],q[11],q[12],q[13],q[14],q[15]; +measure q[0] -> meas[0]; +measure q[1] -> meas[1]; +measure q[2] -> meas[2]; +measure q[3] -> meas[3]; +measure q[4] -> meas[4]; +measure q[5] -> meas[5]; +measure q[6] -> meas[6]; +measure q[7] -> meas[7]; +measure q[8] -> meas[8]; +measure q[9] -> meas[9]; +measure q[10] -> meas[10]; +measure q[11] -> meas[11]; +measure q[12] -> meas[12]; +measure q[13] -> meas[13]; +measure q[14] -> meas[14]; +measure q[15] -> meas[15]; diff --git a/src/transpile_benchy/interfaces/hardcoded/qpeexact_n16.qasm b/src/transpile_benchy/interfaces/hardcoded/qpeexact_n16.qasm new file mode 100644 index 0000000..74105fd --- /dev/null +++ b/src/transpile_benchy/interfaces/hardcoded/qpeexact_n16.qasm @@ -0,0 +1,54 @@ +OPENQASM 2.0; +include "qelib1.inc"; +gate gate_IQFT_dg q0,q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q11,q12,q13,q14 { swap q6,q8; swap q5,q9; swap q4,q10; swap q3,q11; swap q2,q12; swap q1,q13; swap q0,q14; h q0; cp(-pi/2) q1,q0; h q1; cp(-pi/4) q2,q0; cp(-pi/2) q2,q1; h q2; cp(-pi/8) q3,q0; cp(-pi/4) q3,q1; cp(-pi/2) q3,q2; h q3; cp(-pi/16) q4,q0; cp(-pi/8) q4,q1; cp(-pi/4) q4,q2; cp(-pi/2) q4,q3; h q4; cp(-pi/32) q5,q0; cp(-pi/16) q5,q1; cp(-pi/8) q5,q2; cp(-pi/4) q5,q3; cp(-pi/2) q5,q4; h q5; cp(-pi/64) q6,q0; cp(-pi/32) q6,q1; cp(-pi/16) q6,q2; cp(-pi/8) q6,q3; cp(-pi/4) q6,q4; cp(-pi/2) q6,q5; h q6; cp(-pi/128) q7,q0; cp(-pi/64) q7,q1; cp(-pi/32) q7,q2; cp(-pi/16) q7,q3; cp(-pi/8) q7,q4; cp(-pi/4) q7,q5; cp(-pi/2) q7,q6; h q7; cp(-pi/256) q8,q0; cp(-pi/128) q8,q1; cp(-pi/64) q8,q2; cp(-pi/32) q8,q3; cp(-pi/16) q8,q4; cp(-pi/8) q8,q5; cp(-pi/4) q8,q6; cp(-pi/2) q8,q7; h q8; cp(-pi/512) q9,q0; cp(-pi/256) q9,q1; cp(-pi/128) q9,q2; cp(-pi/64) q9,q3; cp(-pi/32) q9,q4; cp(-pi/16) q9,q5; cp(-pi/8) q9,q6; cp(-pi/4) q9,q7; cp(-pi/2) q9,q8; h q9; cp(-pi/1024) q10,q0; cp(-pi/512) q10,q1; cp(-pi/256) q10,q2; cp(-pi/128) q10,q3; cp(-pi/64) q10,q4; cp(-pi/32) q10,q5; cp(-pi/16) q10,q6; cp(-pi/8) q10,q7; cp(-pi/4) q10,q8; cp(-pi/2) q10,q9; h q10; cp(-pi/2048) q11,q0; cp(-pi/1024) q11,q1; cp(-pi/512) q11,q2; cp(-pi/256) q11,q3; cp(-pi/128) q11,q4; cp(-pi/64) q11,q5; cp(-pi/32) q11,q6; cp(-pi/16) q11,q7; cp(-pi/8) q11,q8; cp(-pi/4) q11,q9; cp(-pi/2) q11,q10; h q11; cp(-pi/4096) q12,q0; cp(-pi/2048) q12,q1; cp(-pi/1024) q12,q2; cp(-pi/512) q12,q3; cp(-pi/256) q12,q4; cp(-pi/128) q12,q5; cp(-pi/64) q12,q6; cp(-pi/32) q12,q7; cp(-pi/16) q12,q8; cp(-pi/8) q12,q9; cp(-pi/4) q12,q10; cp(-pi/2) q12,q11; h q12; cp(-pi/8192) q13,q0; cp(-pi/4096) q13,q1; cp(-pi/2048) q13,q2; cp(-pi/1024) q13,q3; cp(-pi/512) q13,q4; cp(-pi/256) q13,q5; cp(-pi/128) q13,q6; cp(-pi/64) q13,q7; cp(-pi/32) q13,q8; cp(-pi/16) q13,q9; cp(-pi/8) q13,q10; cp(-pi/4) q13,q11; cp(-pi/2) q13,q12; h q13; cp(-pi/16384) q14,q0; cp(-pi/8192) q14,q1; cp(-pi/4096) q14,q2; cp(-pi/2048) q14,q3; cp(-pi/1024) q14,q4; cp(-pi/512) q14,q5; cp(-pi/256) q14,q6; cp(-pi/128) q14,q7; cp(-pi/64) q14,q8; cp(-pi/32) q14,q9; cp(-pi/16) q14,q10; cp(-pi/8) q14,q11; cp(-pi/4) q14,q12; cp(-pi/2) q14,q13; h q14; } +qreg q[15]; +qreg psi[1]; +creg c[15]; +x psi[0]; +h q[0]; +h q[1]; +h q[2]; +h q[3]; +h q[4]; +h q[5]; +h q[6]; +h q[7]; +h q[8]; +h q[9]; +h q[10]; +h q[11]; +h q[12]; +h q[13]; +h q[14]; +cp(-2.693095020731729) psi[0],q[0]; +cp(0.8969952657161286) psi[0],q[1]; +cp(1.7939905314322573) psi[0],q[2]; +cp(-2.6952042443150717) psi[0],q[3]; +cp(0.8927768185494431) psi[0],q[4]; +cp(1.7855536370988863) psi[0],q[5]; +cp(-2.7120780329818137) psi[0],q[6]; +cp(0.859029241215959) psi[0],q[7]; +cp(1.718058482431918) psi[0],q[8]; +cp(-2.84706834231575) psi[0],q[9]; +cp(3*pi/16) psi[0],q[10]; +cp(3*pi/8) psi[0],q[11]; +cp(3*pi/4) psi[0],q[12]; +cp(-pi/2) psi[0],q[13]; +cp(pi) psi[0],q[14]; +gate_IQFT_dg q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8],q[9],q[10],q[11],q[12],q[13],q[14]; +barrier q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8],q[9],q[10],q[11],q[12],q[13],q[14],psi[0]; +measure q[0] -> c[0]; +measure q[1] -> c[1]; +measure q[2] -> c[2]; +measure q[3] -> c[3]; +measure q[4] -> c[4]; +measure q[5] -> c[5]; +measure q[6] -> c[6]; +measure q[7] -> c[7]; +measure q[8] -> c[8]; +measure q[9] -> c[9]; +measure q[10] -> c[10]; +measure q[11] -> c[11]; +measure q[12] -> c[12]; +measure q[13] -> c[13]; +measure q[14] -> c[14]; diff --git a/src/transpile_benchy/interfaces/hardcoded/qram_n20.qasm b/src/transpile_benchy/interfaces/hardcoded/qram_n20.qasm new file mode 100644 index 0000000..720a5e7 --- /dev/null +++ b/src/transpile_benchy/interfaces/hardcoded/qram_n20.qasm @@ -0,0 +1,35 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg addr[3]; +qreg rout[8]; +qreg ram[8]; +qreg qout[1]; +creg cout[1]; +x addr[1]; +x ram[0]; +x ram[2]; +x ram[7]; +x rout[7]; +cx addr[0],rout[3]; +cx rout[3],rout[7]; +ccx addr[1],rout[3],rout[1]; +cx rout[1],rout[3]; +ccx addr[1],rout[7],rout[5]; +cx rout[5],rout[7]; +ccx addr[2],rout[1],rout[0]; +ccx addr[2],rout[3],rout[2]; +ccx addr[2],rout[5],rout[4]; +ccx addr[2],rout[7],rout[6]; +cx rout[0],rout[1]; +cx rout[2],rout[3]; +cx rout[4],rout[5]; +cx rout[6],rout[7]; +ccx rout[7],ram[7],qout[0]; +ccx rout[6],ram[6],qout[0]; +ccx rout[5],ram[5],qout[0]; +ccx rout[4],ram[4],qout[0]; +ccx rout[3],ram[3],qout[0]; +ccx rout[2],ram[2],qout[0]; +ccx rout[1],ram[1],qout[0]; +ccx rout[0],ram[0],qout[0]; +measure qout[0] -> cout[0]; diff --git a/src/transpile_benchy/interfaces/hardcoded/sat_n11.qasm b/src/transpile_benchy/interfaces/hardcoded/sat_n11.qasm new file mode 100644 index 0000000..f7618f6 --- /dev/null +++ b/src/transpile_benchy/interfaces/hardcoded/sat_n11.qasm @@ -0,0 +1,101 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg v[5]; +qreg c[4]; +qreg a[2]; +creg m[4]; +h v[1]; +h v[2]; +h v[3]; +h v[4]; +x c[0]; +x c[1]; +x c[2]; +x c[3]; +x v[4]; +ccx v[1],v[2],a[0]; +ccx v[3],a[0],a[1]; +ccx v[4],a[1],c[0]; +ccx v[3],a[0],a[1]; +ccx v[1],v[2],a[0]; +x v[2]; +x v[3]; +x v[4]; +ccx v[1],v[2],a[0]; +ccx v[3],a[0],a[1]; +ccx v[4],a[1],c[1]; +ccx v[3],a[0],a[1]; +ccx v[1],v[2],a[0]; +x v[1]; +x v[2]; +ccx v[1],v[2],a[0]; +ccx v[3],a[0],a[1]; +ccx v[4],a[1],c[2]; +ccx v[3],a[0],a[1]; +ccx v[1],v[2],a[0]; +x v[1]; +x v[2]; +ccx v[2],v[3],c[3]; +x v[2]; +x v[3]; +ccx c[0],c[1],a[0]; +ccx c[2],a[0],a[1]; +ccx c[3],a[1],v[0]; +ccx c[2],a[0],a[1]; +ccx c[0],c[1],a[0]; +x v[2]; +x v[3]; +ccx v[2],v[3],c[3]; +x v[1]; +x v[2]; +ccx v[1],v[2],a[0]; +ccx v[3],a[0],a[1]; +ccx v[4],a[1],c[2]; +ccx v[3],a[0],a[1]; +ccx v[1],v[2],a[0]; +x v[1]; +x v[2]; +ccx v[1],v[2],a[0]; +ccx v[3],a[0],a[1]; +ccx v[4],a[1],c[1]; +ccx v[3],a[0],a[1]; +ccx v[1],v[2],a[0]; +x v[2]; +x v[3]; +x v[4]; +ccx v[1],v[2],a[0]; +ccx v[3],a[0],a[1]; +ccx v[4],a[1],c[0]; +ccx v[3],a[0],a[1]; +ccx v[1],v[2],a[0]; +x v[4]; +h v[1]; +h v[2]; +h v[3]; +h v[4]; +x v[0]; +x v[1]; +x v[2]; +x v[3]; +x v[4]; +h v[0]; +ccx v[1],v[2],a[0]; +ccx v[3],a[0],a[1]; +ccx v[4],a[1],v[0]; +ccx v[3],a[0],a[1]; +ccx v[1],v[2],a[0]; +h v[0]; +x v[0]; +x v[1]; +x v[2]; +x v[3]; +x v[4]; +h v[0]; +h v[1]; +h v[2]; +h v[3]; +h v[4]; +measure v[1] -> m[0]; +measure v[2] -> m[1]; +measure v[3] -> m[2]; +measure v[4] -> m[3]; diff --git a/src/transpile_benchy/interfaces/hardcoded/seca_n11.qasm b/src/transpile_benchy/interfaces/hardcoded/seca_n11.qasm new file mode 100644 index 0000000..628be20 --- /dev/null +++ b/src/transpile_benchy/interfaces/hardcoded/seca_n11.qasm @@ -0,0 +1,84 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[11]; +creg c[11]; +z q[0]; +h q[0]; +barrier q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8],q[9],q[10]; +cx q[0],q[3]; +cx q[0],q[6]; +cz q[0],q[3]; +cz q[0],q[6]; +h q[0]; +h q[3]; +h q[6]; +z q[0]; +z q[3]; +z q[6]; +cx q[0],q[1]; +cx q[0],q[2]; +cx q[3],q[4]; +cx q[3],q[5]; +cx q[6],q[7]; +cx q[6],q[8]; +cz q[0],q[1]; +cz q[0],q[2]; +cz q[3],q[4]; +cz q[3],q[5]; +cz q[6],q[7]; +cz q[6],q[8]; +barrier q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8],q[9],q[10]; +h q[9]; +cx q[9],q[10]; +barrier q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8],q[9],q[10]; +cx q[0],q[9]; +measure q[9] -> c[9]; +h q[0]; +cx q[9],q[10]; +measure q[0] -> c[0]; +cz q[0],q[10]; +barrier q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8],q[9],q[10]; +cx q[10],q[1]; +cx q[10],q[2]; +cx q[3],q[4]; +cx q[3],q[5]; +cx q[6],q[7]; +cx q[6],q[8]; +cz q[10],q[1]; +cz q[10],q[2]; +cz q[3],q[4]; +cz q[3],q[5]; +cz q[6],q[7]; +cz q[6],q[8]; +ccx q[1],q[2],q[10]; +ccx q[5],q[4],q[3]; +ccx q[8],q[7],q[6]; +barrier q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8],q[9],q[10]; +h q[10]; +ccx q[1],q[2],q[10]; +h q[10]; +h q[3]; +ccx q[5],q[4],q[3]; +h q[3]; +h q[6]; +ccx q[8],q[7],q[6]; +h q[6]; +barrier q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8],q[9],q[10]; +h q[10]; +h q[3]; +h q[6]; +z q[10]; +z q[3]; +z q[6]; +cx q[10],q[3]; +cx q[10],q[6]; +cz q[10],q[3]; +cz q[10],q[6]; +ccx q[3],q[6],q[10]; +h q[10]; +ccx q[3],q[6],q[10]; +h q[10]; +barrier q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8],q[9],q[10]; +h q[10]; +z q[10]; +measure q[10] -> c[10]; diff --git a/src/transpile_benchy/interfaces/hardcoded/swap_test_n25.qasm b/src/transpile_benchy/interfaces/hardcoded/swap_test_n25.qasm new file mode 100644 index 0000000..624cae2 --- /dev/null +++ b/src/transpile_benchy/interfaces/hardcoded/swap_test_n25.qasm @@ -0,0 +1,43 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q0[25]; +creg c0[1]; +rx(-3.6924814) q0[1]; +rx(-3.2923147) q0[13]; +rx(5.4291652) q0[2]; +rx(5.6875289) q0[14]; +rx(1.3594796) q0[3]; +rx(1.2065807) q0[15]; +rx(-5.9123043) q0[4]; +rx(-6.0041031) q0[16]; +rx(-0.13186279) q0[5]; +rx(0.50271205) q0[17]; +rx(-4.3869008) q0[6]; +rx(-4.1172873) q0[18]; +rx(4.9830092) q0[7]; +rx(4.8261369) q0[19]; +rx(-1.4181518) q0[8]; +rx(-1.5885531) q0[20]; +rx(3.9058792) q0[9]; +rx(3.2780951) q0[21]; +rx(2.1483107) q0[10]; +rx(2.2125048) q0[22]; +rx(-1.552265) q0[11]; +rx(-2.1338861) q0[23]; +rx(3.5437778) q0[12]; +rx(2.9294436) q0[24]; +h q0[0]; +cswap q0[0],q0[1],q0[13]; +cswap q0[0],q0[2],q0[14]; +cswap q0[0],q0[3],q0[15]; +cswap q0[0],q0[4],q0[16]; +cswap q0[0],q0[5],q0[17]; +cswap q0[0],q0[6],q0[18]; +cswap q0[0],q0[7],q0[19]; +cswap q0[0],q0[8],q0[20]; +cswap q0[0],q0[9],q0[21]; +cswap q0[0],q0[10],q0[22]; +cswap q0[0],q0[11],q0[23]; +cswap q0[0],q0[12],q0[24]; +h q0[0]; +measure q0[0] -> c0[0]; diff --git a/src/transpile_benchy/interfaces/mqt_interface.py b/src/transpile_benchy/interfaces/mqt_interface.py index ca2e0ec..29455e5 100644 --- a/src/transpile_benchy/interfaces/mqt_interface.py +++ b/src/transpile_benchy/interfaces/mqt_interface.py @@ -1,12 +1,10 @@ """MQTBench submodule interface.""" from typing import Dict, List, Optional -from pathlib import Path -from mqt.bench.benchmark_generator import get_benchmark -from mqt.bench.utils import get_supported_benchmarks +# from mqt.bench.benchmark_generator import get_benchmark +# from mqt.bench.utils import get_supported_benchmarks from qiskit import QuantumCircuit from transpile_benchy.interfaces.abc_interface import SubmoduleInterface -from transpile_benchy.interfaces.errors import CircuitNotFoundError class MQTBench(SubmoduleInterface): @@ -30,20 +28,22 @@ def _get_all_circuits(self) -> List[str]: NOTE: these names don't have num_qubits suffix. """ - return get_supported_benchmarks() + return NotImplementedError() + # return get_supported_benchmarks() def _load_circuit( self, circuit_str: str, num_qubits=None ) -> QuantumCircuit: """Load a QuantumCircuit from a string.""" - try: - n = num_qubits or self.num_qubits - qc = get_benchmark( - benchmark_name=circuit_str, - level="alg", - circuit_size=n, - ) - qc.name = f"{circuit_str}_n{n}" - return qc - except Exception as e: - raise CircuitNotFoundError(f"Failed to load {circuit_str}: {e}") + return NotImplementedError() + # try: + # n = num_qubits or self.num_qubits + # qc = get_benchmark( + # benchmark_name=circuit_str, + # level="alg", + # circuit_size=n, + # ) + # qc.name = f"{circuit_str}_n{n}" + # return qc + # except Exception as e: + # raise CircuitNotFoundError(f"Failed to load {circuit_str}: {e}") diff --git a/src/transpile_benchy/interfaces/qiskit_circuits.py b/src/transpile_benchy/interfaces/qiskit_circuits.py index f159974..3f5fc72 100644 --- a/src/transpile_benchy/interfaces/qiskit_circuits.py +++ b/src/transpile_benchy/interfaces/qiskit_circuits.py @@ -189,7 +189,6 @@ def twolocal(q): ) twolocalecp = two_local_function_generator(ecp, "twolocalecp") - # List of all available circuits available_circuits = [ vqe_full, @@ -205,5 +204,3 @@ def twolocal(q): twolocalcnot, twolocaliswap, twolocalsqrtiswap, - twolocalecp, -] diff --git a/src/transpile_benchy/library.py b/src/transpile_benchy/library.py index 2576032..2237764 100644 --- a/src/transpile_benchy/library.py +++ b/src/transpile_benchy/library.py @@ -7,6 +7,7 @@ # from transpile_benchy.interfaces.mqt_interface import MQTBench from transpile_benchy.interfaces.qasm_interface import ( BQSKitInterface, + Hardcoded, QASMBench, RedQueen, Hardcoded, diff --git a/src/transpile_benchy/render.py b/src/transpile_benchy/render.py index 87a28f1..463310f 100644 --- a/src/transpile_benchy/render.py +++ b/src/transpile_benchy/render.py @@ -36,12 +36,18 @@ def _initialize_plot(legend_show: bool) -> Tuple[Figure, Axes]: ) ax = axs[1] else: - fig, ax = plt.subplots(figsize=(3.5, ref_size)) # Just 2 inch for the plot + fig, ax = plt.subplots( + figsize=(3.5, ref_size) + ) # Just 2 inch for the plot return fig, ax def _plot_bars( - ax: Axes, cmap, sorted_results: list, transpiler_count: int, bar_width: float + ax: Axes, + cmap, + sorted_results: list, + transpiler_count: int, + bar_width: float, ) -> None: """Plot a bar for each circuit and each transpiler.""" for i, (circuit_name, circuit_results) in enumerate(sorted_results): @@ -159,12 +165,18 @@ def plot_benchmark( override_legend: List[str] = None, color_override: List[int] = None, auto_sort=True, + fixed_bar_width=1.8, ) -> None: """Plot benchmark results.""" with plt.style.context(["ieee"]): plt.rcParams["text.usetex"] = True - for metric in benchmark.metrics: + for m, metric in enumerate(benchmark.metrics): + if legend_show and m == 0: + legend_show = True + else: + legend_show = False + if metric.name == "accepted_subs": continue # We are not plotting this @@ -173,7 +185,7 @@ def plot_benchmark( # XXX manually adjust as needed # Adjust bar width according to number of transpilers transpiler_count = len(metric.saved_results.keys()) - bar_width = 3 / transpiler_count # 1.8 + bar_width = fixed_bar_width / transpiler_count # 3 cmap = plt.cm.get_cmap("tab10", 10) # transpiler_count) if color_override is not None: @@ -186,7 +198,9 @@ def plot_benchmark( sorted_results = metric.prepare_plot_data(auto_sort) if plot_type == "bar": - _plot_bars(ax, cmap, sorted_results, transpiler_count, bar_width) + _plot_bars( + ax, cmap, sorted_results, transpiler_count, bar_width + ) _configure_plot( ax, metric.pretty_name, @@ -211,7 +225,11 @@ def plot_benchmark( plt.show() - if save and metric == benchmark.metrics[0]: + if ( + save + and metric == benchmark.metrics[0] + or metric == benchmark.metrics[1] + ): # # fig.savefig(f"{metric.name}_benchmark.svg", dpi=300) # fig.savefig(f"{filename}_{metric.name}_benchmark.svg", dpi=300) # save fig with no cropping diff --git a/src/transpile_benchy/utilities/numerical_decomp.py b/src/transpile_benchy/utilities/numerical_decomp.py index ee5be9d..34c28cb 100644 --- a/src/transpile_benchy/utilities/numerical_decomp.py +++ b/src/transpile_benchy/utilities/numerical_decomp.py @@ -23,7 +23,12 @@ import numpy as np from qiskit import QuantumCircuit -from qiskit.algorithms.optimizers import NELDER_MEAD, P_BFGS, Optimizer, OptimizerResult +from qiskit.algorithms.optimizers import ( + NELDER_MEAD, + P_BFGS, + Optimizer, + OptimizerResult, +) from qiskit.circuit import Parameter from qiskit.circuit.library import UGate from qiskit.extensions import UnitaryGate @@ -119,13 +124,15 @@ def decompose_from_ansatz( self.ansatz = ansatz self.parameter_values = [] self.parameter_count = len(ansatz.parameters) - self.convergence_threshold = convergence_threshold or self.default_threshold + self.convergence_threshold = ( + convergence_threshold or self.default_threshold + ) for _ in range(self.reinitialize_attempts): - self._optimize_parameters(target) + ret = self._optimize_parameters(target) if self.converged: break - # print("Final cost: ", ret.fun) + print("Final cost: ", ret.fun) # bind the parameters to the circuit return ansatz.assign_parameters(self.parameter_values) @@ -214,7 +221,8 @@ def _linear_placement(self) -> None: basis_gate_params = [ Parameter(f"p{i:03}") for i in range( - self.parameter_count, self.parameter_count + basis_param_len + self.parameter_count, + self.parameter_count + basis_param_len, ) ] basis_gate = basis_gate(*basis_gate_params) @@ -242,7 +250,9 @@ def _linear_placement(self) -> None: for i in edge_indices: u_params = [ Parameter(f"p{i:03}") - for i in range(self.parameter_count, self.parameter_count + 3) + for i in range( + self.parameter_count, self.parameter_count + 3 + ) ] self.parameter_count += 3 self.ansatz.append(UGate(*u_params), [i]) @@ -277,7 +287,11 @@ def _hilbert_schmidt_cost( """ dim = target_unitary.shape[0] return ( - 1 - np.abs(np.trace(current_unitary @ np.matrix.getH(target_unitary))) / dim + 1 + - np.abs( + np.trace(current_unitary @ np.matrix.getH(target_unitary)) + ) + / dim ) @@ -297,7 +311,9 @@ class MakhlinFunctional(CircuitAnsatzDecomposer): def _cost_function(self, target: UnitaryGate, x: np.ndarray) -> float: """Evaluate the cost function of the decomposition.""" - assert target.num_qubits == 2, "Makhlin functional only defined for 2 qubits." + assert ( + target.num_qubits == 2 + ), "Makhlin functional only defined for 2 qubits." bind_circuit = self.ansatz.assign_parameters(x) current_u = Operator(bind_circuit).data target_u = Operator(target).data