






from math import log

from scipy.constants import Boltzmann, physical_constants

__UpperCAmelCase							:   Union[str, Any]							=  3_0_0  # TEMPERATURE (unit = K)





def 					lowercase_ (    __snake_case     :							float	,	__snake_case     :							float	,	__snake_case     :							float	,	)     -> 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 					lowercase_ (    __snake_case     :							list      )     -> float:





				'''simple docstring'''


				if not nums:
								raise ValueError("List is empty"      )
				return sum(__snake_case      ) / len(__snake_case      )


if __name__ == "__main__":
	import doctest

	doctest.testmod()