


"""simple docstring"""






def __lowercase     (      lowerCamelCase_  :      float						,					lowerCamelCase_  :      float						,					lowerCamelCase_  :      int  ):
				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(lowerCamelCase_						,					lowerCamelCase_  ):
								raise Exception("Years to repay must be an integer > 0"  )

				# Yearly rate is divided by 12 to get monthly rate
				SCREAMING_SNAKE_CASE__     							=				rate_per_annum / 12

				# Years to repay is multiplied by 12 to get number of payments as payment is monthly
				SCREAMING_SNAKE_CASE__     							=				years_to_repay * 12

				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()




"""simple docstring"""






from maths.is_square_free import is_square_free
from maths.prime_factors import prime_factors


def __lowercase     (      lowerCamelCase_  :      int  ):
				SCREAMING_SNAKE_CASE__     							=				prime_factors(lowerCamelCase_  )
				if is_square_free(lowerCamelCase_  ):
								return -1 if len(lowerCamelCase_  ) % 2 else 1
				return 0


if __name__ == "__main__":
	import doctest

	doctest.testmod()
