don_t.cpp running notation (x,y) is complex number x+iy vectors are printed vec[j] = (x,y) matrices are printed mat[i][j] = (x,y) to be a valid qubit, ket notation a|0> + b|1> a^2 + b^2 must equal 1 a and b are shown as (x,y) x real part, y imaginary part a is first element of vector, b is second element of vector in computer code and printout a ket represents a qubit, stored as a vector of two complex numbers logical zero = |0> = ket0 = a complex column vector vec[0] = (1,0) vec[1] = (0,0) logical one = |1> = ket1 = vec[0] = (0,0) vec[1] = (1,0) just test cnot2 function the cnot matrix is: mat[0][0] = (1,0) mat[0][1] = (0,0) mat[0][2] = (0,0) mat[0][3] = (0,0) mat[1][0] = (0,0) mat[1][1] = (1,0) mat[1][2] = (0,0) mat[1][3] = (0,0) mat[2][0] = (0,0) mat[2][1] = (0,0) mat[2][2] = (0,0) mat[2][3] = (1,0) mat[3][0] = (0,0) mat[3][1] = (0,0) mat[3][2] = (1,0) mat[3][3] = (0,0) cnot |1>|0> = vec[0] = (0,-0) vec[1] = (1,-0) |1> check |1> test ccnot3, toffoli function the ccnot matrix is: mat[0][0] = (1,0) mat[0][1] = (0,0) mat[0][2] = (0,0) mat[0][3] = (0,0) mat[0][4] = (0,0) mat[0][5] = (0,0) mat[0][6] = (0,0) mat[0][7] = (0,0) mat[1][0] = (0,0) mat[1][1] = (1,0) mat[1][2] = (0,0) mat[1][3] = (0,0) mat[1][4] = (0,0) mat[1][5] = (0,0) mat[1][6] = (0,0) mat[1][7] = (0,0) mat[2][0] = (0,0) mat[2][1] = (0,0) mat[2][2] = (1,0) mat[2][3] = (0,0) mat[2][4] = (0,0) mat[2][5] = (0,0) mat[2][6] = (0,0) mat[2][7] = (0,0) mat[3][0] = (0,0) mat[3][1] = (0,0) mat[3][2] = (0,0) mat[3][3] = (1,0) mat[3][4] = (0,0) mat[3][5] = (0,0) mat[3][6] = (0,0) mat[3][7] = (0,0) mat[4][0] = (0,0) mat[4][1] = (0,0) mat[4][2] = (0,0) mat[4][3] = (0,0) mat[4][4] = (1,0) mat[4][5] = (0,0) mat[4][6] = (0,0) mat[4][7] = (0,0) mat[5][0] = (0,0) mat[5][1] = (0,0) mat[5][2] = (0,0) mat[5][3] = (0,0) mat[5][4] = (0,0) mat[5][5] = (1,0) mat[5][6] = (0,0) mat[5][7] = (0,0) mat[6][0] = (0,0) mat[6][1] = (0,0) mat[6][2] = (0,0) mat[6][3] = (0,0) mat[6][4] = (0,0) mat[6][5] = (0,0) mat[6][6] = (0,0) mat[6][7] = (1,0) mat[7][0] = (0,0) mat[7][1] = (0,0) mat[7][2] = (0,0) mat[7][3] = (0,0) mat[7][4] = (0,0) mat[7][5] = (0,0) mat[7][6] = (1,0) mat[7][7] = (0,0) ccnot3 all 8 cases of keta, ketb, ketc as |0> and |1> inputs | outouts |a>|b>|c> | |a>|b>|cout> ----------|------------ |0>|0>|0> | |0>|0>|0> |0>|0>|1> | |0>|0>|1> |0>|1>|0> | |0>|1>|0> |0>|1>|1> | |0>|1>|1> |1>|0>|0> | |1>|0>|0> |1>|0>|1> | |1>|0>|1> |1>|1>|0> | |1>|1>|1> |1>|1>|1> | |1>|1>|0> test rsx2 function rsx |0>|0> = vec[0] = (1,-0) vec[1] = (0,-0) |0> rsx |0>|1> = vec[0] = (0,-0) vec[1] = (1,-0) |1> rsx |1>|0> = vec[0] = (0.5,-0.5) vec[1] = (0.5,0.5) (0.5,-0.5) |0> + (0.5,0.5) |1> rsx |1>|1> = vec[0] = (0.5,0.5) vec[1] = (0.5,-0.5) (0.5,0.5) |0> + (0.5,-0.5) |1> test rsxt2 function rsxt |0>|0> = vec[0] = (1,-0) vec[1] = (0,-0) |0> rsxt |0>|1> = vec[0] = (0,-0) vec[1] = (1,-0) |1> rsxt |1>|0> = vec[0] = (0.5,0.5) vec[1] = (0.5,-0.5) (0.5,0.5) |0> + (0.5,-0.5) |1> rsxt |1>|1> = vec[0] = (0.5,-0.5) vec[1] = (0.5,0.5) (0.5,-0.5) |0> + (0.5,0.5) |1> test Don's version of toffoli function Don's all 8 cases of keta, ketb, ketc as |0> and |1> inputs | outouts |a>|b>|c> | |a>|b>|cout> ----------|------------ |0>|0>|0> | |0>|0>|0> |0>|0>|1> | |0>|0>|1> |0>|1>|0> | |0>|1>|0> |0>|1>|1> | |0>|1>|1> |1>|0>|0> | |1>|0>|0> |1>|0>|1> | |1>|0>|1> |1>|1>|0> | |1>|1>|1> |1>|1>|1> | |1>|1>|0> finished don_t.cpp