Example with n=2, m=3, 3 qubits x is the 2-bit input, b is used to evaluate the function initial state x=00, b=1, |xb> = |001> x b amplitudes (magnitude squared is a probability) 0 0 0 q[0] = 0 0 0 1 q[1] = 1 0 1 0 q[2] = 0 0 1 1 q[3] = 0 1 0 0 q[4] = 0 1 0 1 q[5] = 0 1 1 0 q[6] = 0 1 1 1 q[7] = 0 Algorithm: H f H |001> → → → |yc> --- if f is always 0, it does nothing: H H |001> → → → |yc> H is its own inverse, so H * H does nothing overall: |001> → → → |yc> So if f is always 0, |yc> = |001> and will measure y = 00, c = 1 --- if f is always 1, it flips the state: H f H |001> → |++-> → -|++-> → -|001> = |yc> So if f is always 1, |yc> = -|001> and will measure y = 00, c = 1 where: |+> = |0> + |1> |-> = |0> - |1> f(|->) = f(|0> - |1>) = |1> - |0> = - (|0> - |1>) = -|-> (omitting some factors of 1/sqrt(2)) --- Not shown here: if f is balanced, y != 00 --- x f 0 0 1 0 2 0 3 0 f is constant 0 1 0 0 0 0 0 0 0.353553 -0.353553 0.353553 -0.353553 0.353553 -0.353553 0.353553 -0.353553 0.353553 -0.353553 0.353553 -0.353553 0.353553 -0.353553 0.353553 -0.353553 0 1 0 0 0 0 0 0 p0 = 1, 1-p0 = -4.44089e-16, f is constant --- x f 0 1 1 1 2 1 3 1 f is constant 0 1 0 0 0 0 0 0 0.353553 -0.353553 0.353553 -0.353553 0.353553 -0.353553 0.353553 -0.353553 -0.353553 0.353553 -0.353553 0.353553 -0.353553 0.353553 -0.353553 0.353553 0 -1 0 0 0 0 0 0 p0 = 1, 1-p0 = -4.44089e-16, f is constant --- x f 0 1 1 1 2 0 3 0 f is balanced 0 1 0 0 0 0 0 0 0.353553 -0.353553 0.353553 -0.353553 0.353553 -0.353553 0.353553 -0.353553 -0.353553 0.353553 -0.353553 0.353553 0.353553 -0.353553 0.353553 -0.353553 0 0 0 0 0 -1 0 0 p0 = 0, 1-p0 = 1, f is balanced