



from __future__ import annotations


def 	UpperCAmelCase__      (      UpperCAmelCase__ :float ,					UpperCAmelCase__ :float ,					UpperCAmelCase__ :float					):






 '''simple docstring'''

 if days_between_payments <= 0:
  raise ValueError("days_between_payments must be > 0"					)
 if daily_interest_rate < 0:
  raise ValueError("daily_interest_rate must be >= 0"					)
 if principal <= 0:
  raise ValueError("principal must be > 0"					)
 return principal * daily_interest_rate * days_between_payments


def 	UpperCAmelCase__      (      UpperCAmelCase__ :float ,					UpperCAmelCase__ :float ,					UpperCAmelCase__ :float ,					):






 '''simple docstring'''

 if number_of_compounding_periods <= 0:
  raise ValueError("number_of_compounding_periods must be > 0"					)
 if nominal_annual_interest_rate_percentage < 0:
  raise ValueError("nominal_annual_interest_rate_percentage must be >= 0"					)
 if principal <= 0:
  raise ValueError("principal must be > 0"					)

 return principal * (
     (1 + nominal_annual_interest_rate_percentage) ** number_of_compounding_periods
     - 1
 )


def 	UpperCAmelCase__      (      UpperCAmelCase__ :float ,					UpperCAmelCase__ :float ,					UpperCAmelCase__ :float ,					):






 '''simple docstring'''

 if number_of_years <= 0:
  raise ValueError("number_of_years must be > 0"					)
 if nominal_annual_percentage_rate < 0:
  raise ValueError("nominal_annual_percentage_rate must be >= 0"					)
 if principal <= 0:
  raise ValueError("principal must be > 0"					)

 return compound_interest(
     UpperCAmelCase__ ,					nominal_annual_percentage_rate / 3_65 ,					number_of_years * 3_65					)


if __name__ == "__main__":
     import doctest

     doctest.testmod()






def 	UpperCAmelCase__      (      UpperCAmelCase__ :int ,					UpperCAmelCase__ :int					):






 '''simple docstring'''

 if a < 0 or b < 0:
  raise ValueError("the value of both inputs must be positive"					)

 a						=		str(bin(UpperCAmelCase__					)					)[2:]  # remove the leading "0b"
 a						=		str(bin(UpperCAmelCase__					)					)[2:]  # remove the leading "0b"

 a						=		max(len(UpperCAmelCase__					) ,					len(UpperCAmelCase__					)					)

 return "0b" + "".join(
     str(int(char_a == "1" and char_b == "1"					)					)
     for char_a, char_b in zip(a_binary.zfill(UpperCAmelCase__					) ,					b_binary.zfill(UpperCAmelCase__					)					)					)


if __name__ == "__main__":
     import doctest

     doctest.testmod()

