
'''simple docstring'''



from __future__ import annotations


def A (__lowerCamelCase :list[int | float]					,      __lowerCamelCase :int					,      __lowerCamelCase :int						):
						if len(__lowerCamelCase						) == 0:
												raise ValueError("""find_max() arg is an empty sequence"""						)
						if (
						    left >= len(__lowerCamelCase						)
						    or left < -len(__lowerCamelCase						)
						    or right >= len(__lowerCamelCase						)
						    or right < -len(__lowerCamelCase						)
						):
												raise IndexError("""list index out of range"""						)
						if left == right:
												return nums[left]
						_lowerCAmelCase    		=					(left + right) >> 1  # the middle
						_lowerCAmelCase    		=					find_max(__lowerCamelCase					,      __lowerCamelCase					,      __lowerCamelCase						)  # find max in range[left, mid]
						_lowerCAmelCase    		=					find_max(__lowerCamelCase					,      mid + 1					,      __lowerCamelCase						)  # find max in range[mid + 1, right]

						return left_max if left_max >= right_max else right_max


if __name__ == "__main__":
						import doctest

						doctest.testmod(verbose=True)





import math

import numpy as np
import qiskit
from qiskit import Aer, ClassicalRegister, QuantumCircuit, QuantumRegister, execute

def 	SCREAMING_SNAKE_CASE_							(	_snake_case	:int = 3				)  ->     qiskit.result.counts.Counts:
   if isinstance(_snake_case	,   _snake_case				):
      raise TypeError('''number of qubits must be a integer.'''				)
   if number_of_qubits <= 0:
      raise ValueError('''number of qubits must be > 0.'''				)
   if math.floor(_snake_case				) != number_of_qubits:
      raise ValueError('''number of qubits must be exact integer.'''				)
   if number_of_qubits > 10:
      raise ValueError('''number of qubits too large to simulate(>10).'''				)

   _A      =       QuantumRegister(_snake_case	,   '''qr'''				)
   _A      =       ClassicalRegister(_snake_case	,   '''cr'''				)

   _A      =       QuantumCircuit(_snake_case	,   _snake_case				)

   _A      =       number_of_qubits

   for i in range(_snake_case				):
      quantum_circuit.h(number_of_qubits - i - 1				)
      counter -= 1
      for j in range(_snake_case				):
         quantum_circuit.cp(np.pi / 2 ** (counter - j)	,   _snake_case	,   _snake_case				)

   for k in range(number_of_qubits // 2				):
      quantum_circuit.swap(_snake_case	,   number_of_qubits - k - 1				)

   # measure all the qubits
   quantum_circuit.measure(_snake_case	,   _snake_case				)
   # simulate with 10000 shots
   _A      =       Aer.get_backend('''qasm_simulator'''				)
   _A      =       execute(_snake_case	,   _snake_case	,   shots=10_000				)

   return job.result().get_counts(_snake_case				)


if __name__ == "__main__":
   print(
       f'Total count for quantum fourier transform state is: \
    {quantum_fourier_transform(3)}'
   )



