






def 	_UpperCamelCase   (    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
						lowerCAmelCase__    						=						rate_per_annum / 12

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













from typing import TYPE_CHECKING

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


__snake_case    :    Tuple         =     {"""configuration_glpn""": ["""GLPN_PRETRAINED_CONFIG_ARCHIVE_MAP""", """GLPNConfig"""]}

try:
					if not is_vision_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					__snake_case    :    Dict         =     ["""GLPNFeatureExtractor"""]
					__snake_case    :    Optional[Any]         =     ["""GLPNImageProcessor"""]

try:
					if not is_torch_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					__snake_case    :    Tuple         =     [
					    """GLPN_PRETRAINED_MODEL_ARCHIVE_LIST""",
					    """GLPNForDepthEstimation""",
					    """GLPNLayer""",
					    """GLPNModel""",
					    """GLPNPreTrainedModel""",
					]


if TYPE_CHECKING:
					from .configuration_glpn import GLPN_PRETRAINED_CONFIG_ARCHIVE_MAP, GLPNConfig

					try:
										if not is_vision_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .feature_extraction_glpn import GLPNFeatureExtractor
										from .image_processing_glpn import GLPNImageProcessor

					try:
										if not is_torch_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_glpn import (
										    GLPN_PRETRAINED_MODEL_ARCHIVE_LIST,
										    GLPNForDepthEstimation,
										    GLPNLayer,
										    GLPNModel,
										    GLPNPreTrainedModel,
										)


else:
					import sys

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





