"""simple docstring"""






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

      # Yearly rate is divided by 12 to get monthly rate
      lowercase														=	rate_per_annum / 1_2

      # Years to repay is multiplied by 12 to get number of payments as payment is monthly
      lowercase														=	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()




"""simple docstring"""






from ..utils import DummyObject, requires_backends





class  _A						(       metaclass=lowerCAmelCase	):
      snake_case__			:   str							  =	['torch', 'transformers', 'onnx']

      def __init__(						self		,       *__lowerCAmelCase		,       **__lowerCAmelCase						):







            """simple docstring"""



            requires_backends(self		,       ["""torch""", """transformers""", """onnx"""]						)

      @classmethod
      def 				A__       (						cls		,       *__lowerCAmelCase		,       **__lowerCAmelCase						):







            """simple docstring"""



            requires_backends(cls		,       ["""torch""", """transformers""", """onnx"""]						)







      @classmethod
      def 				A__       (						cls		,       *__lowerCAmelCase		,       **__lowerCAmelCase						):







            """simple docstring"""



            requires_backends(cls		,       ["""torch""", """transformers""", """onnx"""]						)






class  _A						(       metaclass=lowerCAmelCase	):
      snake_case__			:   List[Any]							  =	['torch', 'transformers', 'onnx']

      def __init__(						self		,       *__lowerCAmelCase		,       **__lowerCAmelCase						):







            """simple docstring"""



            requires_backends(self		,       ["""torch""", """transformers""", """onnx"""]						)

      @classmethod
      def 				A__       (						cls		,       *__lowerCAmelCase		,       **__lowerCAmelCase						):







            """simple docstring"""



            requires_backends(cls		,       ["""torch""", """transformers""", """onnx"""]						)







      @classmethod
      def 				A__       (						cls		,       *__lowerCAmelCase		,       **__lowerCAmelCase						):







            """simple docstring"""



            requires_backends(cls		,       ["""torch""", """transformers""", """onnx"""]						)






class  _A						(       metaclass=lowerCAmelCase	):
      snake_case__			:   Optional[Any]							  =	['torch', 'transformers', 'onnx']

      def __init__(						self		,       *__lowerCAmelCase		,       **__lowerCAmelCase						):







            """simple docstring"""



            requires_backends(self		,       ["""torch""", """transformers""", """onnx"""]						)

      @classmethod
      def 				A__       (						cls		,       *__lowerCAmelCase		,       **__lowerCAmelCase						):







            """simple docstring"""



            requires_backends(cls		,       ["""torch""", """transformers""", """onnx"""]						)







      @classmethod
      def 				A__       (						cls		,       *__lowerCAmelCase		,       **__lowerCAmelCase						):







            """simple docstring"""



            requires_backends(cls		,       ["""torch""", """transformers""", """onnx"""]						)






class  _A						(       metaclass=lowerCAmelCase	):
      snake_case__			:   int							  =	['torch', 'transformers', 'onnx']

      def __init__(						self		,       *__lowerCAmelCase		,       **__lowerCAmelCase						):







            """simple docstring"""



            requires_backends(self		,       ["""torch""", """transformers""", """onnx"""]						)

      @classmethod
      def 				A__       (						cls		,       *__lowerCAmelCase		,       **__lowerCAmelCase						):







            """simple docstring"""



            requires_backends(cls		,       ["""torch""", """transformers""", """onnx"""]						)







      @classmethod
      def 				A__       (						cls		,       *__lowerCAmelCase		,       **__lowerCAmelCase						):







            """simple docstring"""



            requires_backends(cls		,       ["""torch""", """transformers""", """onnx"""]						)






class  _A						(       metaclass=lowerCAmelCase	):
      snake_case__			:   List[str]							  =	['torch', 'transformers', 'onnx']

      def __init__(						self		,       *__lowerCAmelCase		,       **__lowerCAmelCase						):







            """simple docstring"""



            requires_backends(self		,       ["""torch""", """transformers""", """onnx"""]						)

      @classmethod
      def 				A__       (						cls		,       *__lowerCAmelCase		,       **__lowerCAmelCase						):







            """simple docstring"""



            requires_backends(cls		,       ["""torch""", """transformers""", """onnx"""]						)







      @classmethod
      def 				A__       (						cls		,       *__lowerCAmelCase		,       **__lowerCAmelCase						):







            """simple docstring"""



            requires_backends(cls		,       ["""torch""", """transformers""", """onnx"""]						)






class  _A						(       metaclass=lowerCAmelCase	):
      snake_case__			:   Optional[Any]							  =	['torch', 'transformers', 'onnx']

      def __init__(						self		,       *__lowerCAmelCase		,       **__lowerCAmelCase						):







            """simple docstring"""



            requires_backends(self		,       ["""torch""", """transformers""", """onnx"""]						)

      @classmethod
      def 				A__       (						cls		,       *__lowerCAmelCase		,       **__lowerCAmelCase						):







            """simple docstring"""



            requires_backends(cls		,       ["""torch""", """transformers""", """onnx"""]						)







      @classmethod
      def 				A__       (						cls		,       *__lowerCAmelCase		,       **__lowerCAmelCase						):







            """simple docstring"""



            requires_backends(cls		,       ["""torch""", """transformers""", """onnx"""]						)



