




'''simple docstring'''





from __future__ import annotations

_SCREAMING_SNAKE_CASE							:       Union[str, Any]						=			1.6021e-19  # units = C


def 					UpperCamelCase_(     snake_case							:	float							,    snake_case							:	float							,    snake_case							:	float							,    ):

							'''simple docstring'''






							if (conductivity, electron_conc, mobility).count(0					) != 1:
														raise ValueError("You cannot supply more or less than 2 values"					)
							elif conductivity < 0:
														raise ValueError("Conductivity cannot be negative"					)
							elif electron_conc < 0:
														raise ValueError("Electron concentration cannot be negative"					)
							elif mobility < 0:
														raise ValueError("mobility cannot be negative"					)
							elif conductivity == 0:
														return (
														    "conductivity",
														    mobility * electron_conc * ELECTRON_CHARGE,
														)
							elif electron_conc == 0:
														return (
														    "electron_conc",
														    conductivity / (mobility * ELECTRON_CHARGE),
														)
							else:
														return (
														    "mobility",
														    conductivity / (electron_conc * ELECTRON_CHARGE),
														)


if __name__ == "__main__":
		import doctest

		doctest.testmod()










'''simple docstring'''





def 					UpperCamelCase_(     snake_case							:	int							,    snake_case							:	int					):

							'''simple docstring'''






							while b:
														snake_case_ ,				snake_case_      =				b, a % b
							return a


def 					UpperCamelCase_(     snake_case							:	int							,    snake_case							:	int					):

							'''simple docstring'''






							return a if b == 0 else euclidean_gcd_recursive(snake_case							,    a % b					)


def 					UpperCamelCase_(     ):

							'''simple docstring'''






							print(f'euclidean_gcd(3, 5) = {euclidean_gcd(3							,    5					)}'					)
							print(f'euclidean_gcd(5, 3) = {euclidean_gcd(5							,    3					)}'					)
							print(f'euclidean_gcd(1, 3) = {euclidean_gcd(1							,    3					)}'					)
							print(f'euclidean_gcd(3, 6) = {euclidean_gcd(3							,    6					)}'					)
							print(f'euclidean_gcd(6, 3) = {euclidean_gcd(6							,    3					)}'					)

							print(f'euclidean_gcd_recursive(3, 5) = {euclidean_gcd_recursive(3							,    5					)}'					)
							print(f'euclidean_gcd_recursive(5, 3) = {euclidean_gcd_recursive(5							,    3					)}'					)
							print(f'euclidean_gcd_recursive(1, 3) = {euclidean_gcd_recursive(1							,    3					)}'					)
							print(f'euclidean_gcd_recursive(3, 6) = {euclidean_gcd_recursive(3							,    6					)}'					)
							print(f'euclidean_gcd_recursive(6, 3) = {euclidean_gcd_recursive(6							,    3					)}'					)


if __name__ == "__main__":
		main()




