
"""simple docstring"""





def 	__a     (		__lowerCamelCase,		__lowerCamelCase,		__lowerCamelCase  ):
   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_					:					Optional[int]			     =    rate_per_annum / 12

   # Years to repay is multiplied by 12 to get number of payments as payment is monthly
   UpperCAmelCase_					:					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'''




from typing import TYPE_CHECKING

from ....utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


_lowercase						: Dict						=						{"configuration_mmbt": ["MMBTConfig"]}

try:
						if not is_torch_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						_lowercase						: Dict						=						["MMBTForClassification", "MMBTModel", "ModalEmbeddings"]


if TYPE_CHECKING:
						from .configuration_mmbt import MMBTConfig

						try:
												if not is_torch_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_mmbt import MMBTForClassification, MMBTModel, ModalEmbeddings

else:
						import sys

						_lowercase						: Optional[int]						=						_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)





