





'''simple docstring'''

from math import log

from scipy.constants import Boltzmann, physical_constants

lowercase_					= 300  # TEMPERATURE (unit = K)





def lowerCamelCase						(     __lowerCamelCase :    float					,       __lowerCamelCase :    float					,       __lowerCamelCase :    float					,       )						->float:

    if donor_conc <= 0:
        raise ValueError("""Donor concentration should be positive"""    )
    elif acceptor_conc <= 0:
        raise ValueError("""Acceptor concentration should be positive"""    )
    elif intrinsic_conc <= 0:
        raise ValueError("""Intrinsic concentration should be positive"""    )
    elif donor_conc <= intrinsic_conc:
        raise ValueError(
            """Donor concentration should be greater than intrinsic concentration"""    )
    elif acceptor_conc <= intrinsic_conc:
        raise ValueError(
            """Acceptor concentration should be greater than intrinsic concentration"""    )
    else:
        return (
            Boltzmann
            * T
            * log((donor_conc * acceptor_conc) / intrinsic_conc**2    )
            / physical_constants["electron volt"][0]
        )


if __name__ == "__main__":
      import doctest

      doctest.testmod()




import math




def    lowerCAmelCase_ (     __A							)     ->				bool:







      '''simple docstring'''


      return math.sqrt(__A							) * math.sqrt(__A							) == num




def    lowerCAmelCase_ (     __A							)     ->				bool:







      '''simple docstring'''


      UpperCAmelCase__								=  0
      UpperCAmelCase__								=  n
      while left <= right:
            UpperCAmelCase__								=  (left + right) // 2
            if mid**2 == n:
                  return True
            elif mid**2 > n:
                  UpperCAmelCase__								=  mid - 1
            else:
                  UpperCAmelCase__								=  mid + 1
      return False


if __name__ == "__main__":
      import doctest

      doctest.testmod()



