and.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) kets are combined with tensor=outer product ccnot operator three input, three output the first two kets are the control test and, inputs a, b, |1>, outputs ketc for all 4 cases of a, b, |0> and |1> and a=0, b=0 ccnot ketab1 = 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) keth=|1> ketc=|0> and a=0, b=1 ccnot ketab1 = vec[0] = (0,0) vec[1] = (0,0) vec[2] = (0,0) vec[3] = (1,0) vec[4] = (0,0) vec[5] = (0,0) vec[6] = (0,0) vec[7] = (0,0) keth=|1> ketc=|0> and a=1, b=0 ccnot ketab1 = 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) keth=|1> ketc=|0> and a=1, b=1 ccnot ketab1 = 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] = (1,0) vec[7] = (0,0) keth=|0> ketc=|1> circuit diagram for quantum and a --.------- a | b --.------- b | |1> --X----X-- and = a and b truth table output inputs | output a b | and = a and b ---------|------ |0> |0> | |0> |0> |1> | |0> |1> |0> | |0> |1> |1> | |1> and.cpp finished