qadder.cpp running a ket represents a qubit, stored as a vector of two complex numbers logical zero = |0> = ket0 = vec[0] = (1,0) vec[1] = (0,0) logical one = |1> = ket1 = vec[0] = (0,0) vec[1] = (1,0) overloaded qubits are kets combined with tensor=outer product cnot operator two input, two output the first entry in ket is the control ccnot operator three input, three output the first two ket are the control haramard operator ket out = |H| ket in test full adder, inputs a, b, c, outputs ketcout, ketsum for all 8 cases of a, b, c as |0> and |1> add a=0, b=0, c=0 ccnot ketacz = vec[0] = (1,0) vec[1] = (0,0) vec[2] = (0,0) vec[3] = (0,0) vec[4] = (0,0) vec[5] = (0,0) vec[6] = (0,0) vec[7] = (0,0) ketct1= vec[0] = (1,0) vec[1] = (0,0) cnot ketac = vec[0] = (1,0) vec[1] = (0,0) vec[2] = (0,0) vec[3] = (0,0) ketst1 = vec[0] = (1,0) vec[1] = (0,0) ccnot ketbsc = vec[0] = (1,0) vec[1] = (0,0) vec[2] = (0,0) vec[3] = (0,0) vec[4] = (0,0) vec[5] = (0,0) vec[6] = (0,0) vec[7] = (0,0) ketcout = vec[0] = (1,0) vec[1] = (0,0) cnot ketbs = vec[0] = (1,0) vec[1] = (0,0) vec[2] = (0,0) vec[3] = (0,0) ketsum = vec[0] = (1,0) vec[1] = (0,0) add a=0, b=0, c=1 ccnot ketacz = vec[0] = (0,0) vec[1] = (0,0) vec[2] = (1,0) vec[3] = (0,0) vec[4] = (0,0) vec[5] = (0,0) vec[6] = (0,0) vec[7] = (0,0) ketct1= vec[0] = (1,0) vec[1] = (0,0) cnot ketac = vec[0] = (0,0) vec[1] = (1,0) vec[2] = (0,0) vec[3] = (0,0) ketst1 = vec[0] = (0,0) vec[1] = (1,0) ccnot ketbsc = vec[0] = (0,0) vec[1] = (0,0) vec[2] = (1,0) vec[3] = (0,0) vec[4] = (0,0) vec[5] = (0,0) vec[6] = (0,0) vec[7] = (0,0) ketcout = vec[0] = (1,0) vec[1] = (0,0) cnot ketbs = vec[0] = (0,0) vec[1] = (1,0) vec[2] = (0,0) vec[3] = (0,0) ketsum = vec[0] = (0,0) vec[1] = (1,0) add a=0, b=1, c=0 ccnot ketacz = vec[0] = (1,0) vec[1] = (0,0) vec[2] = (0,0) vec[3] = (0,0) vec[4] = (0,0) vec[5] = (0,0) vec[6] = (0,0) vec[7] = (0,0) ketct1= vec[0] = (1,0) vec[1] = (0,0) cnot ketac = vec[0] = (1,0) vec[1] = (0,0) vec[2] = (0,0) vec[3] = (0,0) ketst1 = vec[0] = (1,0) vec[1] = (0,0) ccnot ketbsc = vec[0] = (0,0) vec[1] = (0,0) vec[2] = (0,0) vec[3] = (0,0) vec[4] = (1,0) vec[5] = (0,0) vec[6] = (0,0) vec[7] = (0,0) ketcout = vec[0] = (1,0) vec[1] = (0,0) cnot ketbs = vec[0] = (0,0) vec[1] = (0,0) vec[2] = (0,0) vec[3] = (1,0) ketsum = vec[0] = (0,0) vec[1] = (1,0) add a=0, b=1, c=1 ccnot ketacz = vec[0] = (0,0) vec[1] = (0,0) vec[2] = (1,0) vec[3] = (0,0) vec[4] = (0,0) vec[5] = (0,0) vec[6] = (0,0) vec[7] = (0,0) ketct1= vec[0] = (1,0) vec[1] = (0,0) cnot ketac = vec[0] = (0,0) vec[1] = (1,0) vec[2] = (0,0) vec[3] = (0,0) ketst1 = vec[0] = (0,0) vec[1] = (1,0) ccnot ketbsc = vec[0] = (0,0) vec[1] = (0,0) vec[2] = (0,0) vec[3] = (0,0) vec[4] = (0,0) vec[5] = (0,0) vec[6] = (0,0) vec[7] = (1,0) ketcout = vec[0] = (0,0) vec[1] = (1,0) cnot ketbs = vec[0] = (0,0) vec[1] = (0,0) vec[2] = (1,0) vec[3] = (0,0) ketsum = vec[0] = (1,0) vec[1] = (0,0) add a=1, b=0, c=0 ccnot ketacz = vec[0] = (0,0) vec[1] = (0,0) vec[2] = (0,0) vec[3] = (0,0) vec[4] = (1,0) vec[5] = (0,0) vec[6] = (0,0) vec[7] = (0,0) ketct1= vec[0] = (1,0) vec[1] = (0,0) cnot ketac = vec[0] = (0,0) vec[1] = (0,0) vec[2] = (0,0) vec[3] = (1,0) ketst1 = vec[0] = (0,0) vec[1] = (1,0) ccnot ketbsc = vec[0] = (0,0) vec[1] = (0,0) vec[2] = (1,0) vec[3] = (0,0) vec[4] = (0,0) vec[5] = (0,0) vec[6] = (0,0) vec[7] = (0,0) ketcout = vec[0] = (1,0) vec[1] = (0,0) cnot ketbs = vec[0] = (0,0) vec[1] = (1,0) vec[2] = (0,0) vec[3] = (0,0) ketsum = vec[0] = (0,0) vec[1] = (1,0) add a=1, b=0, c=1 ccnot ketacz = vec[0] = (0,0) vec[1] = (0,0) vec[2] = (0,0) vec[3] = (0,0) vec[4] = (0,0) vec[5] = (0,0) vec[6] = (0,0) vec[7] = (1,0) ketct1= vec[0] = (0,0) vec[1] = (1,0) cnot ketac = vec[0] = (0,0) vec[1] = (0,0) vec[2] = (1,0) vec[3] = (0,0) ketst1 = vec[0] = (1,0) vec[1] = (0,0) ccnot ketbsc = vec[0] = (0,0) vec[1] = (1,0) vec[2] = (0,0) vec[3] = (0,0) vec[4] = (0,0) vec[5] = (0,0) vec[6] = (0,0) vec[7] = (0,0) ketcout = vec[0] = (0,0) vec[1] = (1,0) cnot ketbs = vec[0] = (1,0) vec[1] = (0,0) vec[2] = (0,0) vec[3] = (0,0) ketsum = vec[0] = (1,0) vec[1] = (0,0) add a=1, b=1, c=0 ccnot ketacz = vec[0] = (0,0) vec[1] = (0,0) vec[2] = (0,0) vec[3] = (0,0) vec[4] = (1,0) vec[5] = (0,0) vec[6] = (0,0) vec[7] = (0,0) ketct1= vec[0] = (1,0) vec[1] = (0,0) cnot ketac = vec[0] = (0,0) vec[1] = (0,0) vec[2] = (0,0) vec[3] = (1,0) ketst1 = vec[0] = (0,0) vec[1] = (1,0) ccnot ketbsc = vec[0] = (0,0) vec[1] = (0,0) vec[2] = (0,0) vec[3] = (0,0) vec[4] = (0,0) vec[5] = (0,0) vec[6] = (0,0) vec[7] = (1,0) ketcout = vec[0] = (0,0) vec[1] = (1,0) cnot ketbs = vec[0] = (0,0) vec[1] = (0,0) vec[2] = (1,0) vec[3] = (0,0) ketsum = vec[0] = (1,0) vec[1] = (0,0) add a=1, b=1, c=1 ccnot ketacz = vec[0] = (0,0) vec[1] = (0,0) vec[2] = (0,0) vec[3] = (0,0) vec[4] = (0,0) vec[5] = (0,0) vec[6] = (0,0) vec[7] = (1,0) ketct1= vec[0] = (0,0) vec[1] = (1,0) cnot ketac = vec[0] = (0,0) vec[1] = (0,0) vec[2] = (1,0) vec[3] = (0,0) ketst1 = vec[0] = (1,0) vec[1] = (0,0) ccnot ketbsc = vec[0] = (0,0) vec[1] = (0,0) vec[2] = (0,0) vec[3] = (0,0) vec[4] = (0,0) vec[5] = (1,0) vec[6] = (0,0) vec[7] = (0,0) ketcout = vec[0] = (0,0) vec[1] = (1,0) cnot ketbs = vec[0] = (0,0) vec[1] = (0,0) vec[2] = (0,0) vec[3] = (1,0) ketsum = vec[0] = (0,0) vec[1] = (1,0) qadder.cpp finished