



from math import log

from scipy.constants import Boltzmann, physical_constants

__A             =       300  # TEMPERATURE (unit = K)





def   lowerCAmelCase_				( __a			,					__a			,					__a			,					)  ->	float:







  """simple docstring"""





  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()








from __future__ import annotations





def   lowerCAmelCase_				( __a			,					__a			,					__a			,					)  ->	tuple:







  """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()

