-------QASM Generation Pass: module Sqr ( qbit* a , qbit* b , ) { CNOT ( b[0] , a[0] ); CNOT ( b[2] , a[1] ); CNOT ( b[4] , a[2] ); CNOT ( b[6] , a[3] ); CNOT ( b[8] , a[4] ); CNOT ( b[0] , a[5] ); CNOT ( b[1] , a[5] ); CNOT ( b[2] , a[6] ); CNOT ( b[3] , a[6] ); CNOT ( b[4] , a[7] ); CNOT ( b[5] , a[7] ); CNOT ( b[6] , a[8] ); CNOT ( b[7] , a[8] ); CNOT ( b[8] , a[9] ); CNOT ( b[9] , a[9] ); } module ToffoliImpl_Q_Q_Q ( qbit target , qbit control1 , qbit control2 , ) { H ( target ); Tdag ( control1 ); T ( control2 ); T ( target ); CNOT ( control2 , control1 ); CNOT ( control1 , target ); Tdag ( control1 ); CNOT ( target , control2 ); CNOT ( control1 , control2 ); Tdag ( control1 ); Tdag ( control2 ); T ( target ); CNOT ( control1 , target ); S ( control1 ); CNOT ( target , control2 ); CNOT ( control2 , control1 ); H ( target ); } module EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( qbit* b , ) { qbit x_[9]; X ( b[0] ); X ( b[2] ); X ( b[3] ); X ( b[4] ); X ( b[5] ); X ( b[6] ); X ( b[7] ); X ( b[8] ); X ( b[9] ); PrepZ ( x_[0] , 0 ); PrepZ ( x_[1] , 0 ); PrepZ ( x_[2] , 0 ); PrepZ ( x_[3] , 0 ); PrepZ ( x_[4] , 0 ); PrepZ ( x_[5] , 0 ); PrepZ ( x_[6] , 0 ); PrepZ ( x_[7] , 0 ); PrepZ ( x_[8] , 0 ); ToffoliImpl_Q_Q_Q ( x_[0] , b[1] , b[0] ); ToffoliImpl_Q_Q_Q ( x_[1] , x_[0] , b[2] ); ToffoliImpl_Q_Q_Q ( x_[2] , x_[1] , b[3] ); ToffoliImpl_Q_Q_Q ( x_[3] , x_[2] , b[4] ); ToffoliImpl_Q_Q_Q ( x_[4] , x_[3] , b[5] ); ToffoliImpl_Q_Q_Q ( x_[5] , x_[4] , b[6] ); ToffoliImpl_Q_Q_Q ( x_[6] , x_[5] , b[7] ); ToffoliImpl_Q_Q_Q ( x_[7] , x_[6] , b[8] ); ToffoliImpl_Q_Q_Q ( x_[8] , x_[7] , b[9] ); Z ( x_[8] ); ToffoliImpl_Q_Q_Q ( x_[8] , x_[7] , b[9] ); ToffoliImpl_Q_Q_Q ( x_[7] , x_[6] , b[8] ); ToffoliImpl_Q_Q_Q ( x_[6] , x_[5] , b[7] ); ToffoliImpl_Q_Q_Q ( x_[5] , x_[4] , b[6] ); ToffoliImpl_Q_Q_Q ( x_[4] , x_[3] , b[5] ); ToffoliImpl_Q_Q_Q ( x_[3] , x_[2] , b[4] ); ToffoliImpl_Q_Q_Q ( x_[2] , x_[1] , b[3] ); ToffoliImpl_Q_Q_Q ( x_[1] , x_[0] , b[2] ); ToffoliImpl_Q_Q_Q ( x_[0] , b[1] , b[0] ); X ( b[0] ); X ( b[2] ); X ( b[3] ); X ( b[4] ); X ( b[5] ); X ( b[6] ); X ( b[7] ); X ( b[8] ); X ( b[9] ); } module diffuse ( qbit* q , ) { qbit x[9]; 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] ); X ( q[0] ); X ( q[1] ); X ( q[2] ); X ( q[3] ); X ( q[4] ); X ( q[5] ); X ( q[6] ); X ( q[7] ); X ( q[8] ); X ( q[9] ); PrepZ ( x[0] , 0 ); PrepZ ( x[1] , 0 ); PrepZ ( x[2] , 0 ); PrepZ ( x[3] , 0 ); PrepZ ( x[4] , 0 ); PrepZ ( x[5] , 0 ); PrepZ ( x[6] , 0 ); PrepZ ( x[7] , 0 ); PrepZ ( x[8] , 0 ); ToffoliImpl_Q_Q_Q ( x[0] , q[1] , q[0] ); ToffoliImpl_Q_Q_Q ( x[1] , x[0] , q[2] ); ToffoliImpl_Q_Q_Q ( x[2] , x[1] , q[3] ); ToffoliImpl_Q_Q_Q ( x[3] , x[2] , q[4] ); ToffoliImpl_Q_Q_Q ( x[4] , x[3] , q[5] ); ToffoliImpl_Q_Q_Q ( x[5] , x[4] , q[6] ); ToffoliImpl_Q_Q_Q ( x[6] , x[5] , q[7] ); ToffoliImpl_Q_Q_Q ( x[7] , x[6] , q[8] ); ToffoliImpl_Q_Q_Q ( x[8] , x[7] , q[9] ); Z ( x[8] ); ToffoliImpl_Q_Q_Q ( x[8] , x[7] , q[9] ); ToffoliImpl_Q_Q_Q ( x[7] , x[6] , q[8] ); ToffoliImpl_Q_Q_Q ( x[6] , x[5] , q[7] ); ToffoliImpl_Q_Q_Q ( x[5] , x[4] , q[6] ); ToffoliImpl_Q_Q_Q ( x[4] , x[3] , q[5] ); ToffoliImpl_Q_Q_Q ( x[3] , x[2] , q[4] ); ToffoliImpl_Q_Q_Q ( x[2] , x[1] , q[3] ); ToffoliImpl_Q_Q_Q ( x[1] , x[0] , q[2] ); ToffoliImpl_Q_Q_Q ( x[0] , q[1] , q[0] ); X ( q[0] ); X ( q[1] ); X ( q[2] ); X ( q[3] ); X ( q[4] ); X ( q[5] ); X ( q[6] ); X ( q[7] ); X ( q[8] ); X ( q[9] ); 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] ); } module EQxMark_IP1_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( qbit* b , qbit* t , ) { qbit x_[9]; X ( b[0] ); X ( b[2] ); X ( b[3] ); X ( b[4] ); X ( b[5] ); X ( b[6] ); X ( b[7] ); X ( b[8] ); X ( b[9] ); PrepZ ( x_[0] , 0 ); PrepZ ( x_[1] , 0 ); PrepZ ( x_[2] , 0 ); PrepZ ( x_[3] , 0 ); PrepZ ( x_[4] , 0 ); PrepZ ( x_[5] , 0 ); PrepZ ( x_[6] , 0 ); PrepZ ( x_[7] , 0 ); PrepZ ( x_[8] , 0 ); ToffoliImpl_Q_Q_Q ( x_[0] , b[1] , b[0] ); ToffoliImpl_Q_Q_Q ( x_[1] , x_[0] , b[2] ); ToffoliImpl_Q_Q_Q ( x_[2] , x_[1] , b[3] ); ToffoliImpl_Q_Q_Q ( x_[3] , x_[2] , b[4] ); ToffoliImpl_Q_Q_Q ( x_[4] , x_[3] , b[5] ); ToffoliImpl_Q_Q_Q ( x_[5] , x_[4] , b[6] ); ToffoliImpl_Q_Q_Q ( x_[6] , x_[5] , b[7] ); ToffoliImpl_Q_Q_Q ( x_[7] , x_[6] , b[8] ); ToffoliImpl_Q_Q_Q ( x_[8] , x_[7] , b[9] ); CNOT ( t[0] , x_[8] ); ToffoliImpl_Q_Q_Q ( x_[8] , x_[7] , b[9] ); ToffoliImpl_Q_Q_Q ( x_[7] , x_[6] , b[8] ); ToffoliImpl_Q_Q_Q ( x_[6] , x_[5] , b[7] ); ToffoliImpl_Q_Q_Q ( x_[5] , x_[4] , b[6] ); ToffoliImpl_Q_Q_Q ( x_[4] , x_[3] , b[5] ); ToffoliImpl_Q_Q_Q ( x_[3] , x_[2] , b[4] ); ToffoliImpl_Q_Q_Q ( x_[2] , x_[1] , b[3] ); ToffoliImpl_Q_Q_Q ( x_[1] , x_[0] , b[2] ); ToffoliImpl_Q_Q_Q ( x_[0] , b[1] , b[0] ); X ( b[0] ); X ( b[2] ); X ( b[3] ); X ( b[4] ); X ( b[5] ); X ( b[6] ); X ( b[7] ); X ( b[8] ); X ( b[9] ); } module main ( ) { qbit a[10]; qbit b[10]; qbit t[1]; cbit mt[1]; cbit ma[10]; H ( a[0] ); H ( a[1] ); H ( a[2] ); H ( a[3] ); H ( a[4] ); H ( a[5] ); H ( a[6] ); H ( a[7] ); H ( a[8] ); H ( a[9] ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP0_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b ); Sqr ( a , b ); diffuse ( a ); Sqr ( a , b ); EQxMark_IP1_IPx_IPx_IPx_DPx_DPx_DPx_DPx ( b , t ); mt[0] = MeasZ ( t[0] ); ma[0] = MeasZ ( a[0] ); ma[1] = MeasZ ( a[1] ); ma[2] = MeasZ ( a[2] ); ma[3] = MeasZ ( a[3] ); ma[4] = MeasZ ( a[4] ); ma[5] = MeasZ ( a[5] ); ma[6] = MeasZ ( a[6] ); ma[7] = MeasZ ( a[7] ); ma[8] = MeasZ ( a[8] ); ma[9] = MeasZ ( a[9] ); } --------End of QASM generation