5

I am looking for guidance in more generally how to developed n-bit gates in Cirq.

I am working on a QNN paper and I need to develop a n-controlled gate to be able to measure the cost function of the circuit.

Enrique Segura
  • 1,011
  • 6
  • 9

2 Answers2

7

This is actually very easy in Cirq. The controlled_by method can be used to automatically make any given gate controlled by an arbitrary number of control qubits. Here is a simple example for creating an X gate with 5 controls:

import cirq

qb = [cirq.LineQubit(i) for i in range(6)]

cnX = cirq.X.controlled_by(qb[0], qb[1], qb[2], qb[3], qb[4])

circuit = cirq.Circuit()
circuit.append(cnX(qb[5]))
Joseph Geipel
  • 1,241
  • 1
  • 6
  • 6
0

For doing CnX (N-CNOT or N-Tofolli) gate,

The following is the correct way to do using cirq.

from cirq import X, Circuit

NUM_QBITS = 3 qbits = cirq.LineQubit.range(NUM_QBITS) qa = cirq.NamedQubit("ansilla")

cnX = X.controlled(NUM_QBITS).on(*qbits[:NUM_QBITS], qa)

print(Circuit(cnX))

Demo: https://to.absk.im/32QqLku

abhisekp
  • 101
  • 2