



import math


def    __lowerCamelCase   (  lowerCamelCase__	,					lowerCamelCase__		):

				"""simple docstring"""


				if initial_intensity < 0:
								raise ValueError("The value of intensity cannot be negative"		)
								# handling of negative values of initial intensity
				if angle < 0 or angle > 360:
								raise ValueError("In Malus Law, the angle is in the range 0-360 degrees"		)
								# handling of values out of allowed range
				return initial_intensity * (math.cos(math.radians(UpperCAmelCase_		)		) ** 2)


if __name__ == "__main__":
				import doctest

				doctest.testmod(name='''malus_law''')









"""simple docstring"""







from __future__ import annotations

def       _lowerCamelCase				(							UpperCAmelCase_ :       float,	UpperCAmelCase_ :       float,	UpperCAmelCase_ :       float,	)	-> 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()




