@@ -12,7 +12,7 @@ import (
1212// The number of solutions `M` is 2.
1313func controlledG (qsim * q.Q , r , s []q.Qubit , c , a q.Qubit ) {
1414 oracle (qsim , r , s , c , a )
15- diffuser (qsim , r )
15+ diffuser (qsim , r , c , a )
1616}
1717
1818func oracle (qsim * q.Q , r , s []q.Qubit , c , a q.Qubit ) {
@@ -27,7 +27,7 @@ func oracle(qsim *q.Q, r, s []q.Qubit, c, a q.Qubit) {
2727 xor (r [1 ], r [3 ], s [3 ]) // b != d
2828
2929 // apply Z if s and c are all 1
30- qsim .ControlledZ ([]q.Qubit {s [0 ], s [1 ], s [2 ], s [3 ], c }, []q.Qubit {a })
30+ qsim .ControlledZ ([]q.Qubit {c , s [0 ], s [1 ], s [2 ], s [3 ]}, []q.Qubit {a })
3131
3232 // uncompute
3333 xor (r [1 ], r [3 ], s [3 ])
@@ -36,10 +36,10 @@ func oracle(qsim *q.Q, r, s []q.Qubit, c, a q.Qubit) {
3636 xor (r [0 ], r [1 ], s [0 ])
3737}
3838
39- func diffuser (qsim * q.Q , r []q.Qubit ) {
39+ func diffuser (qsim * q.Q , r []q.Qubit , c , a q. Qubit ) {
4040 qsim .H (r ... )
4141 qsim .X (r ... )
42- qsim .ControlledZ (r [: len ( r ) - 1 ] , []q.Qubit {r [ len ( r ) - 1 ] })
42+ qsim .ControlledZ (append ([]q. Qubit { c }, r ... ) , []q.Qubit {a })
4343 qsim .X (r ... )
4444 qsim .H (r ... )
4545}
0 commit comments