


from math import radians as angle_to_radians
from math import sin

# Acceleration Constant on Earth (unit m/s^2)
UpperCamelCase			:					List[Any]         =							9.8_0_6_6_5
def 				UpperCamelCase_	(					__snake_case      :    float						,      __snake_case      :    float  )->   Optional[int]:




						'''simple docstring'''

						# Ensure valid instance
						if not isinstance(_a						,      (int, float)  ):
												raise TypeError('Invalid velocity. Should be a positive number.'  )

						if not isinstance(_a						,      (int, float)  ):
												raise TypeError('Invalid angle. Range is 1-90 degrees.'  )

						# Ensure valid angle
						if angle > 90 or angle < 1:
												raise ValueError('Invalid angle. Range is 1-90 degrees.'  )

						# Ensure valid velocity
						if init_velocity < 0:
												raise ValueError('Invalid velocity. Should be a positive number.'  )
def 				UpperCamelCase_	(					__snake_case      :    float						,      __snake_case      :    float  )->   Tuple:




						'''simple docstring'''
						check_args(_a						,      _a  )
						__magic_name__					=      angle_to_radians(2 * angle  )
						return round(init_velocity**2 * sin(_a  ) / g						,      2  )
def 				UpperCamelCase_	(					__snake_case      :    float						,      __snake_case      :    float  )->   List[Any]:




						'''simple docstring'''
						check_args(_a						,      _a  )
						__magic_name__					=      angle_to_radians(_a  )
						return round(init_velocity**2 * sin(_a  ) ** 2 / (2 * g)						,      2  )
def 				UpperCamelCase_	(					__snake_case      :    float						,      __snake_case      :    float  )->   str:




						'''simple docstring'''
						check_args(_a						,      _a  )
						__magic_name__					=      angle_to_radians(_a  )
						return round(2 * init_velocity * sin(_a  ) / g						,      2  )
def 				UpperCamelCase_	(					)->   Optional[Any]:




						'''simple docstring'''
						__magic_name__		,      __magic_name__					=      25, 20
						assert horizontal_distance(_a						,      _a  ) == 40.97
						assert max_height(_a						,      _a  ) == 3.73
						assert total_time(_a						,      _a  ) == 1.74


if __name__ == "__main__":
					from doctest import testmod

					testmod()

					# Get input from user
					UpperCamelCase			:					Any         =							float(input('''Initial Velocity: ''').strip())

					# Get input from user
					UpperCamelCase			:					Optional[int]         =							float(input('''angle: ''').strip())

					# Print results
					print()
					print('''Results: ''')
					print(f'''Horizontal Distance: {horizontal_distance(init_vel, angle)!s} [m]''')
					print(f'''Maximum Height: {max_height(init_vel, angle)!s} [m]''')
					print(f'''Total Time: {total_time(init_vel, angle)!s} [s]''')







'''simple docstring'''







from ..utils import DummyObject, requires_backends


class      _a    (      metaclass=__a					):
       __a							:	str  							=   ["""torch""", """librosa"""]
       def __init__(      self		:      int  ,							*lowercase		:      Any  ,							**lowercase		:      Optional[int]							):



           '''simple docstring'''

           requires_backends(self  ,							['''torch''', '''librosa''']							)
       @classmethod
       def        A (      cls		:      Optional[int]  ,							*lowercase		:      List[str]  ,							**lowercase		:      str							):



           '''simple docstring'''

           requires_backends(cls  ,							['''torch''', '''librosa''']							)







       @classmethod
       def        A (      cls		:      Dict  ,							*lowercase		:      Optional[int]  ,							**lowercase		:      List[Any]							):



           '''simple docstring'''

           requires_backends(cls  ,							['''torch''', '''librosa''']							)






class      _a    (      metaclass=__a					):
       __a							:	List[Any]  							=   ["""torch""", """librosa"""]
       def __init__(      self		:      int  ,							*lowercase		:      Optional[int]  ,							**lowercase		:      Optional[int]							):



           '''simple docstring'''

           requires_backends(self  ,							['''torch''', '''librosa''']							)
       @classmethod
       def        A (      cls		:      Dict  ,							*lowercase		:      Tuple  ,							**lowercase		:      List[str]							):



           '''simple docstring'''

           requires_backends(cls  ,							['''torch''', '''librosa''']							)







       @classmethod
       def        A (      cls		:      Any  ,							*lowercase		:      Any  ,							**lowercase		:      Tuple							):



           '''simple docstring'''

           requires_backends(cls  ,							['''torch''', '''librosa''']							)




