
import math

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




def 							__SCREAMING_SNAKE_CASE   (		SCREAMING_SNAKE_CASE       :      int = 3			)     ->						Optional[int]:







				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).'			)

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

				__lowercase								=					QuantumCircuit(_A    ,							_A			)

				__lowercase								=					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
				__lowercase								=					Aer.get_backend('qasm_simulator'			)
				__lowercase								=					execute(_A    ,							_A    ,							shots=10000			)

				return job.result().get_counts(_A			)


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








from __future__ import annotations




def 			UpperCAmelCase__				(			_A      : float	,      _A      : float	,      _A      : float	,      ):





  '''simple docstring'''







  if (electron_conc, hole_conc, intrinsic_conc).count(0							) != 1:
    raise ValueError('''You cannot supply more or less than 2 values'''							)
  elif electron_conc < 0:
    raise ValueError('''Electron concentration cannot be negative in a semiconductor'''							)
  elif hole_conc < 0:
    raise ValueError('''Hole concentration cannot be negative in a semiconductor'''							)
  elif intrinsic_conc < 0:
    raise ValueError(
        '''Intrinsic concentration cannot be negative in a semiconductor'''							)
  elif electron_conc == 0:
    return (
        "electron_conc",
        intrinsic_conc**2 / hole_conc,
    )
  elif hole_conc == 0:
    return (
        "hole_conc",
        intrinsic_conc**2 / electron_conc,
    )
  elif intrinsic_conc == 0:
    return (
        "intrinsic_conc",
        (electron_conc * hole_conc) ** 0.5,
    )
  else:
    return (-1, -1)


if __name__ == "__main__":
       import doctest

       doctest.testmod()
