




def 					snake_case(				__magic_name__ ,		__magic_name__ ,		__magic_name__    ) ->							Union[str, Any]:





     '''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(__magic_name__ ,		__magic_name__    ):
          raise Exception('''Years to repay must be an integer > 0'''    )

     # Yearly rate is divided by 12 to get monthly rate
     lowercase					:   Tuple								= rate_per_annum / 12

     # Years to repay is multiplied by 12 to get number of payments as payment is monthly
     lowercase					:   List[Any]								= 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"""







def 					a__			(				SCREAMING_SNAKE_CASE    :    int				,      SCREAMING_SNAKE_CASE    :    int				):


  '''simple docstring'''







  while b:
    lowerCAmelCase						,  lowerCAmelCase     :     Any								=							b, a % b
  return a
def 					a__			(				SCREAMING_SNAKE_CASE    :    int				,      SCREAMING_SNAKE_CASE    :    int				):


  '''simple docstring'''







  return a if b == 0 else euclidean_gcd_recursive(SCREAMING_SNAKE_CASE				,      a % b				)
def 					a__			(				):


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





