


"""simple docstring"""






def      lowerCamelCase       (     _UpperCamelCase		:      int							)		->       int:

							'''simple docstring'''



							assert (
							    isinstance(_UpperCamelCase       ,			_UpperCamelCase							) and number_of_steps > 0
							), f'''number_of_steps needs to be positive integer, your input {number_of_steps}'''
							if number_of_steps == 1:
														return 1
							__UpperCAmelCase							,__UpperCAmelCase   :						Optional[Any]      							=					1, 1
							for _ in range(number_of_steps - 1							):
														__UpperCAmelCase							,__UpperCAmelCase   :						List[str]      							=					current + previous, current
							return current


if __name__ == "__main__":
							import doctest

							doctest.testmod()




"""simple docstring"""






def      lowerCamelCase       (     _UpperCamelCase		:      float       ,			_UpperCamelCase		:      float       ,			_UpperCamelCase		:      int							)		->       float:

							'''simple docstring'''



							if principal <= 0:
														raise Exception("""Principal borrowed must be > 0"""							)
							if rate_per_annum < 0:
														raise Exception("""Rate of interest must be >= 0"""							)
							if years_to_repay <= 0 or not isinstance(_UpperCamelCase       ,			_UpperCamelCase							):
														raise Exception("""Years to repay must be an integer > 0"""							)

							# Yearly rate is divided by 12 to get monthly rate
							__UpperCAmelCase   :						List[Any]      							=					rate_per_annum / 1_2

							# Years to repay is multiplied by 12 to get number of payments as payment is monthly
							__UpperCAmelCase   :						Optional[int]      							=					years_to_repay * 1_2

							return (
							    principal
							    * rate_per_month
							    * (1 + rate_per_month) ** number_of_payments
							    / ((1 + rate_per_month) ** number_of_payments - 1)
							)


if __name__ == "__main__":
							import doctest

							doctest.testmod()
