@@ -46,63 +46,64 @@ float TDagger_coef[] = {
4646 1 , 0 , 0 , 0 ,
4747 0 , 0 , 0.7071067811865475244008443621048490393 , -0.7071067811865475244008443621048490393
4848};
49+ namespace QC {
50+ namespace Gates {
51+ // Pauli-X / Not Gate
52+ af::array X = af::array(2 , 2 , (af::cfloat*) X_coef);
4953
50- namespace Gates {
51- // Pauli-X / Not Gate
52- af::array X = af::array(2 , 2 , (af::cfloat*) X_coef);
54+ // Pauli-Y Gate
55+ af::array Y = af::array(2 , 2 , (af::cfloat*) Y_coef);
5356
54- // Pauli-Y Gate
55- af::array Y = af::array(2 , 2 , (af::cfloat*) Y_coef );
57+ // Pauli-Z Gate
58+ af::array Z = af::array(2 , 2 , (af::cfloat*) Z_coef );
5659
57- // Pauli-Z Gate
58- af::array Z = af::array(2 , 2 , (af::cfloat*) Z_coef );
60+ // Hadamard Gate
61+ af::array H = ( 1 /sqrt( 2 )) * af::array (2 , 2 , (af::cfloat*) H_coef );
5962
60- // Hadamard Gate
61- af::array H = ( 1 /sqrt( 2 )) * af::array (2 , 2 , (af::cfloat*) H_coef );
63+ // Identity Gate
64+ af::array Id = af::array(2 , 2 , (af::cfloat*) Id_coef );
6265
63- // Identity Gate
64- af::array Id = af::array(2 , 2 , (af::cfloat*) Id_coef );
66+ // S Gate
67+ af::array S = af::array(2 , 2 , (af::cfloat*) S_coef );
6568
66- // S Gate
67- af::array S = af::array(2 , 2 , (af::cfloat*) S_coef );
69+ // S-Dagger Gate
70+ af::array SDagger = af::array(2 , 2 , (af::cfloat*) SDagger_coef );
6871
69- // S-Dagger Gate
70- af::array SDagger = af::array(2 , 2 , (af::cfloat*) SDagger_coef );
72+ // T / Pi over 8 Gate
73+ af::array T = af::array(2 , 2 , (af::cfloat*) T_coef );
7174
72- // T / Pi over 8 Gate
73- af::array T = af::array(2 , 2 , (af::cfloat*) T_coef);
74-
75- // T-Dagger Gate
76- af::array TDagger = af::array(2 , 2 , (af::cfloat*) TDagger_coef);
77- }
75+ // T-Dagger Gate
76+ af::array TDagger = af::array(2 , 2 , (af::cfloat*) TDagger_coef);
77+ }
7878
79- af::array generateGate (af::array gate, int numQubits, int a) {
80- // identity = 1
81- af::array id = af::identity (2 , 2 , c32);
82- af::array K;
79+ af::array generateGate (af::array gate, int numQubits, int a) {
80+ // identity = 1
81+ af::array id = af::identity (2 , 2 , c32);
82+ af::array K;
83+
84+ for (int i = 0 ; i < numQubits; i++) {
85+ if (i == 0 ) {
86+ if (a == 0 ) {
87+ K = gate;
88+ } else {
89+ K = id;
90+ }
91+ } else if (i == a) {
92+ try {
93+ K = kron (K, gate);
94+ } catch (const std::exception& e) {
95+ std::cout << e.what ();
96+ }
8397
84- for (int i = 0 ; i < numQubits; i++) {
85- if (i == 0 ) {
86- if (a == 0 ) {
87- K = gate;
8898 } else {
89- K = id;
90- }
91- } else if (i == a) {
92- try {
93- K = kron (K, gate);
94- } catch (const std::exception& e) {
95- std::cout << e.what ();
96- }
97-
98- } else {
99- try {
100- K = kron (K, id);
101- } catch (const std::exception& e) {
102- std::cout << e.what ();
99+ try {
100+ K = kron (K, id);
101+ } catch (const std::exception& e) {
102+ std::cout << e.what ();
103+ }
103104 }
104105 }
105- }
106106
107- return K;
108- }
107+ return K;
108+ }
109+ }
0 commit comments