






'''simple docstring'''




from __future__ import annotations







def       __UpperCAmelCase						(  lowerCamelCase_)							->     Optional[Any]:  # This function is recursive
		UpperCamelCase__				:					Tuple					=					len(__a)
		# If the array contains only one element, we return it (it's the stop condition of
		# recursion)
		if array_length <= 1:
				return array
				# Else
		UpperCamelCase__				:					List[Any]					=					array[0]
		UpperCamelCase__				:					Optional[int]					=					False
		UpperCamelCase__				:					int					=					1
		UpperCamelCase__				:					List[str]					=					[]
		while not is_found and i < array_length:
				if array[i] < pivot:
						UpperCamelCase__				:					Tuple					=					True
						UpperCamelCase__				:					Optional[Any]					=					[element for element in array[i:] if element >= array[i]]
						UpperCamelCase__				:					str					=					longest_subsequence(__a)
						if len(__a) > len(__a):
								UpperCamelCase__				:					int					=					temp_array
				else:
						i += 1

		UpperCamelCase__				:					Optional[Any]					=					[element for element in array[1:] if element >= pivot]
		UpperCamelCase__				:					Union[str, Any]					=					[pivot, *longest_subsequence(__a)]
		if len(__a) > len(__a):
				return temp_array
		else:
				return longest_subseq


if __name__ == "__main__":
		import doctest

		doctest.testmod()







'''simple docstring'''




from math import log

from scipy.constants import Boltzmann, physical_constants

lowerCAmelCase__          =						300  # TEMPERATURE (unit = K)







def       __UpperCAmelCase						(  lowerCamelCase_     ,      lowerCamelCase_     ,      lowerCamelCase_     ,      )							->     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()




