https://github.com/epiqc/ScaffCC
Revision 9d2cca71cf54ddfebda26e247d82ae7b71d9e03c authored by Pranav Gokhale on 30 June 2018, 18:56:21 UTC, committed by Pranav Gokhale on 30 June 2018, 18:56:21 UTC
1 parent 720b0db
Tip revision: 9d2cca71cf54ddfebda26e247d82ae7b71d9e03c authored by Pranav Gokhale on 30 June 2018, 18:56:21 UTC
Fix OpenQASM output formatting of Rx and Ry
Fix OpenQASM output formatting of Rx and Ry
Tip revision: 9d2cca7
square_root.n10.qasmh
-------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

Computing file changes ...