






import importlib.metadata
import sys

from transformers.testing_utils import TestCasePlus
from transformers.utils.versions import require_version, require_version_core


__lowerCamelCase						= importlib.metadata.version('numpy')
__lowerCamelCase						= '.'.join([str(x) for x in sys.version_info[:3]])

class      UpperCamelCase_							(				UpperCamelCase       ):




						def      snake_case__(    self       )			->						Optional[Any]:
													# lt + different version strings
													require_version_core('''numpy<1000.4.5'''       )
													require_version_core('''numpy<1000.4'''       )
													require_version_core('''numpy<1000'''       )

													# le
													require_version_core('''numpy<=1000.4.5'''       )
													require_version_core(F'numpy<={numpy_ver}'       )

													# eq
													require_version_core(F'numpy=={numpy_ver}'       )

													# ne
													require_version_core('''numpy!=1000.4.5'''       )

													# ge
													require_version_core('''numpy>=1.0'''       )
													require_version_core('''numpy>=1.0.0'''       )
													require_version_core(F'numpy>={numpy_ver}'       )

													# gt
													require_version_core('''numpy>1.0.0'''       )

													# mix
													require_version_core('''numpy>1.0.0,<1000'''       )

													# requirement w/o version
													require_version_core('''numpy'''       )

													# unmet requirements due to version conflict
													for req in ["numpy==1.0.0", "numpy>=1000.0.0", F'numpy<{numpy_ver}']:
																				try:
																											require_version_core(lowercase       )
																				except ImportError as e:
																											self.assertIn(F'{req} is required'		,	str(lowercase       )       )
																											self.assertIn('''but found'''		,	str(lowercase       )       )

        # unmet requirements due to missing module
													for req in ["numpipypie>1", "numpipypie2"]:
																				try:
																											require_version_core(lowercase       )
																				except importlib.metadata.PackageNotFoundError as e:
																											self.assertIn(F'The \'{req}\' distribution was not found and is required by this application'		,	str(lowercase       )       )
																											self.assertIn('''Try: pip install transformers -U'''		,	str(lowercase       )       )

        # bogus requirements formats:
        # 1. whole thing
													for req in ["numpy??1.0.0", "numpy1.0.0"]:
																				try:
																											require_version_core(lowercase       )
																				except ValueError as e:
																											self.assertIn('''requirement needs to be in the pip package format'''		,	str(lowercase       )       )
        # 2. only operators
													for req in ["numpy=1.0.0", "numpy == 1.00", "numpy<>1.0.0", "numpy><1.00", "numpy>>1.0.0"]:
																				try:
																											require_version_core(lowercase       )
																				except ValueError as e:
																											self.assertIn('''need one of '''		,	str(lowercase       )       )







						def      snake_case__(    self       )			->						Dict:
													# matching requirement
													require_version('''python>=3.6.0'''       )

													# not matching requirements
													for req in ["python>9.9.9", "python<3.0.0"]:
																				try:
																											require_version_core(lowercase       )
																				except ImportError as e:
																											self.assertIn(F'{req} is required'		,	str(lowercase       )       )
																											self.assertIn(F'but found python=={python_ver}'		,	str(lowercase       )       )







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]''')