






from __future__ import annotations

from enum import Enum
class 	a_(		lowercase__	):



     """simple docstring"""



     __snake_case		:				Optional[int]  					=24
     __snake_case		:				str  					=21
     __snake_case		:				List[str]  					=18
     __snake_case		:				Tuple  					=15
     __snake_case		:				Tuple  					=12
     __snake_case		:				Dict  					=9
     __snake_case		:				List[str]  					=6
     __snake_case		:				Optional[int]  					=3
     __snake_case		:				Optional[int]  					=2
     __snake_case		:				List[str]  					=1
     __snake_case		:				Optional[int]  					=-1
     __snake_case		:				Dict  					=-2
     __snake_case		:				Tuple  					=-3
     __snake_case		:				Dict  					=-6
     __snake_case		:				Any  					=-9
     __snake_case		:				Optional[int]  					=-12
     __snake_case		:				Any  					=-15
     __snake_case		:				List[str]  					=-18
     __snake_case		:				Any  					=-21
     __snake_case		:				Optional[int]  					=-24

class 	a_(		lowercase__	):



     """simple docstring"""



     __snake_case		:				Optional[Any]  					=8
     __snake_case		:				Union[str, Any]  					=7
     __snake_case		:				Dict  					=6
     __snake_case		:				Tuple  					=5
     __snake_case		:				Optional[Any]  					=4
     __snake_case		:				List[Any]  					=3
     __snake_case		:				Optional[int]  					=2
     __snake_case		:				Dict  					=1





def 						A_					(						lowercase_	,  lowercase_	,  lowercase_	,  )				->float:







 """simple docstring"""

 if isinstance(lowercase_	,  lowercase_			):
  SCREAMING_SNAKE_CASE				    =		SIUnit[known_prefix.lower()]
 if isinstance(lowercase_	,  lowercase_			):
  SCREAMING_SNAKE_CASE				    =		SIUnit[unknown_prefix.lower()]
 SCREAMING_SNAKE_CASE				    =		known_amount * (
     1_0 ** (known_prefix.value - unknown_prefix.value)
 )
 return unknown_amount





def 						A_					(						lowercase_	,  lowercase_	,  lowercase_	,  )				->float:







 """simple docstring"""

 if isinstance(lowercase_	,  lowercase_			):
  SCREAMING_SNAKE_CASE				    =		BinaryUnit[known_prefix.lower()]
 if isinstance(lowercase_	,  lowercase_			):
  SCREAMING_SNAKE_CASE				    =		BinaryUnit[unknown_prefix.lower()]
 SCREAMING_SNAKE_CASE				    =		known_amount * (
     2 ** ((known_prefix.value - unknown_prefix.value) * 1_0)
 )
 return unknown_amount


if __name__ == "__main__":
      import doctest

      doctest.testmod()












from math import radians as angle_to_radians
from math import sin

# Acceleration Constant on Earth (unit m/s^2)
__lowerCamelCase						= 9.8_06_65






def    UpperCamelCase__  (   UpperCAmelCase    ,	UpperCAmelCase     )     ->		None:







							"""simple docstring"""





							if not isinstance(UpperCAmelCase    ,	(int, float)     ):
														raise TypeError('''Invalid velocity. Should be a positive number.'''     )

							if not isinstance(UpperCAmelCase    ,	(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__  (   UpperCAmelCase    ,	UpperCAmelCase     )     ->		float:







							"""simple docstring"""





							check_args(UpperCAmelCase    ,	UpperCAmelCase     )
							_a  :    Dict			=						angle_to_radians(2 * angle     )
							return round(init_velocity**2 * sin(UpperCAmelCase     ) / g    ,	2     )






def    UpperCamelCase__  (   UpperCAmelCase    ,	UpperCAmelCase     )     ->		float:







							"""simple docstring"""





							check_args(UpperCAmelCase    ,	UpperCAmelCase     )
							_a  :    Union[str, Any]			=						angle_to_radians(UpperCAmelCase     )
							return round(init_velocity**2 * sin(UpperCAmelCase     ) ** 2 / (2 * g)    ,	2     )






def    UpperCamelCase__  (   UpperCAmelCase    ,	UpperCAmelCase     )     ->		float:







							"""simple docstring"""





							check_args(UpperCAmelCase    ,	UpperCAmelCase     )
							_a  :    str			=						angle_to_radians(UpperCAmelCase     )
							return round(2 * init_velocity * sin(UpperCAmelCase     ) / g    ,	2     )






def    UpperCamelCase__  (   )     ->		None:







							"""simple docstring"""





							_a		,					_a  :    Any			=						25, 20
							assert horizontal_distance(UpperCAmelCase    ,	UpperCAmelCase     ) == 4_0.9_7
							assert max_height(UpperCAmelCase    ,	UpperCAmelCase     ) == 3.7_3
							assert total_time(UpperCAmelCase    ,	UpperCAmelCase     ) == 1.7_4


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

						testmod()

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

						# Get input from user
						__lowerCamelCase						= 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]''')