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
rkqc_test.qasmh
-------QASM Generation Pass:

module assign_value_of_0_to_a_i16_i32_impl ( qbit target , int size  ) {
 	qbit ancilla_zero_zero[1];
	qbit ancilla_zero_garbage[1];
	CNOT ( target , ancilla_zero_garbage[0] );
 	CNOT ( ancilla_zero_garbage[0] , target );
 	CNOT ( ancilla_zero_zero[0] , target );
 }

module assign_value_of_1_to_a_i16_i32_impl ( qbit target , int size  ) {
 	qbit ancilla_one_one[1];
	qbit ancilla_zero_garbage[1];
	CNOT ( target , ancilla_zero_garbage[0] );
 	CNOT ( ancilla_zero_garbage[0] , target );
 	CNOT ( ancilla_one_one[0] , target );
 }

module assign_value_of_b_to_a_i16_i16_i32_impl ( qbit target , qbit control ) {
 	qbit ancilla_zg[1];
	CNOT ( target , ancilla_zg[0] );
 	CNOT ( ancilla_zg[0] , target );
 	CNOT ( control , target );
 }

module a_swap_b_i16_i16_i32_impl ( qbit target0 , qbit target1 ) {
 	CNOT ( target0 , target1 );
 	CNOT ( target1 , target0 );
 	CNOT ( target0 , target1 );
 }

module ToffoliImpl_Q_A_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 a_eq_a_plus_b_i16_i16_i32_impl ( qbit target , qbit control , int size  ) {
 	qbit ancilla_zg[1];
	qbit ancilla_zz[1];
	CNOT ( target , ancilla_zg[0] );
 	CNOT ( control , ancilla_zz[0] );
 	CNOT ( target , control );
 	ToffoliImpl_Q_A_Q ( control , ancilla_zg[0] , target );
 	CNOT ( ancilla_zz[0] , ancilla_zg[0] );
 	CNOT ( ancilla_zz[0] , control );
 	CNOT ( ancilla_zz[0] , control );
 	CNOT ( control , ancilla_zz[0] );
 	CNOT ( ancilla_zz[0] , control );
 	CNOT ( ancilla_zg[0] , target );
 	CNOT ( target , ancilla_zg[0] );
 	CNOT ( ancilla_zg[0] , target );
 }

module reverseBits32 ( qbit* a ) {
 	assign_value_of_0_to_a_i16_i32_impl ( a[0] , 1 );
 	assign_value_of_1_to_a_i16_i32_impl ( a[0] , 1 );
 	assign_value_of_b_to_a_i16_i16_i32_impl ( a[0] , a[1] );
 	a_swap_b_i16_i16_i32_impl ( a[1] , a[0] );
 	a_eq_a_plus_b_i16_i16_i32_impl ( a[1] , a[0] , 1 );
 	assign_value_of_0_to_a_i16_i32_impl ( a[0] , 1 );
 	assign_value_of_1_to_a_i16_i32_impl ( a[1] , 1 );
 	assign_value_of_b_to_a_i16_i16_i32_impl ( a[1] , a[2] );
 	a_swap_b_i16_i16_i32_impl ( a[2] , a[1] );
 	a_eq_a_plus_b_i16_i16_i32_impl ( a[2] , a[1] , 1 );
 }

module main (  ) {
 	qbit h0[32];
	reverseBits32 ( h0 );
 }

--------End of QASM generation
back to top