from __future__ import annotations





def 				UpperCAmelCase						(    lowercase							,			lowercase							,			lowercase							,			):







				"""simple docstring"""



				if (stress, tangential_force, area).count(0							) != 1:
								raise ValueError('''You cannot supply more or less than 2 values'''							)
				elif stress < 0:
								raise ValueError('''Stress cannot be negative'''							)
				elif tangential_force < 0:
								raise ValueError('''Tangential Force cannot be negative'''							)
				elif area < 0:
								raise ValueError('''Area cannot be negative'''							)
				elif stress == 0:
								return (
								    "stress",
								    tangential_force / area,
								)
				elif tangential_force == 0:
								return (
								    "tangential_force",
								    stress * area,
								)
				else:
								return (
								    "area",
								    tangential_force / stress,
								)


if __name__ == "__main__":
		import doctest

		doctest.testmod()





from math import pi, sqrt





def 		__A		(	__lowerCamelCase    )      ->       float:
	if num <= 0:
		raise ValueError("""math domain error"""    )
	if num > 171.5:
		raise OverflowError("""math range error"""    )
	elif num - int(__lowerCamelCase    ) not in (0, 0.5):
		raise NotImplementedError("""num must be an integer or a half-integer"""    )
	elif num == 0.5:
		return sqrt(__lowerCamelCase    )
	else:
		return 1.0 if num == 1 else (num - 1) * gamma(num - 1    )





def 		__A		(	)      ->       None:
	assert gamma(0.5    ) == sqrt(__lowerCamelCase    )
	assert gamma(1    ) == 1.0
	assert gamma(2    ) == 1.0


if __name__ == "__main__":
		from doctest import testmod

		testmod()
		__UpperCamelCase					:       str    					=      1.0
		while num:
				__UpperCamelCase					:       Dict    					=      float(input("Gamma of: "))
				print(F'gamma({num}) = {gamma(num)}')
				print("\nEnter 0 to exit...")

