https://github.com/epiqc/ScaffCC
Raw File
Tip revision: 067cc59bd7a234226b81962ea78260b95061620b authored by ah744 on 01 February 2017, 21:14:46 UTC
Afree() Implemetation Complete
Tip revision: 067cc59
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
back to top