docs: def _decompose_(self, qubits):
          """A quantum circuit (QFT_inv) with the following structure.
  
          ---H--@-------@--------@----------------------------------------------
                |       |        |
          ------@^-0.5--+--------+---------H--@-------@-------------------------
                        |        |            |       |
          --------------@^-0.25--+------------@^-0.5--+---------H--@------------
                                 |                    |            |
          -----------------------@^-0.125-------------@^-0.25------@^-0.5---H---
  
          The number of qubits can be arbitrary.
          """
  
          qubits = list(qubits)
          while len(qubits) > 0:
              q_head = qubits.pop(0)
              yield cirq.H(q_head)
              for i, qubit in enumerate(qubits):
                  yield (cirq.CZ**(-1/2.0**(i+1)))(qubit, q_head)