

'''simple docstring'''


from statistics import mean, stdev




def 	_a       (				__lowerCAmelCase		:      list   ,							__lowerCAmelCase		:      int = 3     ):

		"""simple docstring"""

		snake_case__						:       Dict       						=  min(__lowerCAmelCase     )
		snake_case__						:       List[Any]       						=  max(__lowerCAmelCase     )
		# normalize data
		return [round((x - x_min) / (x_max - x_min)   ,							__lowerCAmelCase     ) for x in data]





def 	_a       (				__lowerCAmelCase		:      list   ,							__lowerCAmelCase		:      int = 3     ):

		"""simple docstring"""

		snake_case__						:       int       						=  mean(__lowerCAmelCase     )
		snake_case__						:       int       						=  stdev(__lowerCAmelCase     )
		# standardize data
		return [round((x - mu) / (sigma)   ,							__lowerCAmelCase     ) for x in data]






'''simple docstring'''


def 	_a       (				__lowerCAmelCase		:      float   ,							__lowerCAmelCase		:      float   ,							__lowerCAmelCase		:      int     ):

		"""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
		snake_case__						:       int       						=  rate_per_annum / 12

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



