





import math

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





def     _UpperCamelCase     (a__   :int = 3       ):






							"""simple docstring"""





							if isinstance(a__   ,			a__       ):
														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(a__       ) != 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)."""       )

							UpperCamelCase__				     =			QuantumRegister(a__   ,			"""qr"""       )
							UpperCamelCase__				     =			ClassicalRegister(a__   ,			"""cr"""       )

							UpperCamelCase__				     =			QuantumCircuit(a__   ,			a__       )

							UpperCamelCase__				     =			number_of_qubits

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

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

							# measure all the qubits
							quantum_circuit.measure(a__   ,			a__       )
							# simulate with 10000 shots
							UpperCamelCase__				     =			Aer.get_backend("""qasm_simulator"""       )
							UpperCamelCase__				     =			execute(a__   ,			a__   ,			shots=1_0000       )

							return job.result().get_counts(a__       )


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











import inspect
import unittest

class        __SCREAMING_SNAKE_CASE					(     unittest.TestCase       ):






							def 				_lowerCamelCase		(						self  ):
														try:
																					import diffusers  # noqa: F401
														except ImportError:
																					assert False







							def 				_lowerCamelCase		(						self  ):
														import diffusers
														from diffusers.dependency_versions_table import deps

														UpperCamelCase__				     =			inspect.getmembers(__lowerCAmelCase  , inspect.isclass  )

														for cls_name, cls_module in all_classes:
																					if "dummy_" in cls_module.__module__:
																												for backend in cls_module._backends:
																																			if backend == "k_diffusion":
																																										UpperCamelCase__				     =			"""k-diffusion"""
																																			elif backend == "invisible_watermark":
																																										UpperCamelCase__				     =			"""invisible-watermark"""
																																			assert backend in deps, f"""{backend} is not in the deps table!"""




