
from math import radians as angle_to_radians
from math import sin

# Acceleration Constant on Earth (unit m/s^2)
lowerCamelCase__        =						9.8_0665
def 					lowerCAmelCase__     (    SCREAMING_SNAKE_CASE_			,				SCREAMING_SNAKE_CASE_	)							->						None:

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

			if not isinstance(lowerCamelCase_			,				(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 					lowerCAmelCase__     (    SCREAMING_SNAKE_CASE_			,				SCREAMING_SNAKE_CASE_	)							->						float:
			check_args(lowerCamelCase_			,				lowerCamelCase_	)
			lowerCAmelCase__ : Any   =						angle_to_radians(2 * angle	)
			return round(init_velocity**2 * sin(lowerCamelCase_	) / g			,				2	)
def 					lowerCAmelCase__     (    SCREAMING_SNAKE_CASE_			,				SCREAMING_SNAKE_CASE_	)							->						float:
			check_args(lowerCamelCase_			,				lowerCamelCase_	)
			lowerCAmelCase__ : Any   =						angle_to_radians(lowerCamelCase_	)
			return round(init_velocity**2 * sin(lowerCamelCase_	) ** 2 / (2 * g)			,				2	)
def 					lowerCAmelCase__     (    SCREAMING_SNAKE_CASE_			,				SCREAMING_SNAKE_CASE_	)							->						float:
			check_args(lowerCamelCase_			,				lowerCamelCase_	)
			lowerCAmelCase__ : Union[str, Any]   =						angle_to_radians(lowerCamelCase_	)
			return round(2 * init_velocity * sin(lowerCamelCase_	) / g			,				2	)
def 					lowerCAmelCase__     (    )							->						None:
			lowerCAmelCase__ : Optional[Any]   =						25, 20
			assert horizontal_distance(lowerCamelCase_			,				lowerCamelCase_	) == 40.97
			assert max_height(lowerCamelCase_			,				lowerCamelCase_	) == 3.73
			assert total_time(lowerCamelCase_			,				lowerCamelCase_	) == 1.74


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

"""simple docstring"""
import os
import shutil
import unittest
from unittest.mock import patch

from transformers.testing_utils import CaptureStd, is_pt_tf_cross_test, require_torch




class  _snake_case	(    unittest.TestCase							):






							@patch("""sys.argv"""    ,			["""fakeprogrampath""", """env"""]     )
							def 				__lowercase	(       self    :      Tuple     ):






												"""simple docstring"""



												import transformers.commands.transformers_cli

												with CaptureStd() as cs:
																	transformers.commands.transformers_cli.main()
												self.assertIn("""Python version"""    ,			cs.out     )
												self.assertIn("""Platform"""    ,			cs.out     )
												self.assertIn("""Using distributed or parallel set-up in script?"""    ,			cs.out     )






							@is_pt_tf_cross_test
							@patch(
							    """sys.argv"""    ,			["""fakeprogrampath""", """pt-to-tf""", """--model-name""", """hf-internal-testing/tiny-random-gptj""", """--no-pr"""]     )
							def 				__lowercase	(       self    :      List[str]     ):






												"""simple docstring"""



												import transformers.commands.transformers_cli

												shutil.rmtree("""/tmp/hf-internal-testing/tiny-random-gptj"""    ,			ignore_errors=snake_case__     )  # cleans potential past runs
												transformers.commands.transformers_cli.main()

												# The original repo has no TF weights -- if they exist, they were created by the CLI
												self.assertTrue(os.path.exists("""/tmp/hf-internal-testing/tiny-random-gptj/tf_model.h5"""     )     )






							@require_torch
							@patch("""sys.argv"""    ,			["""fakeprogrampath""", """download""", """hf-internal-testing/tiny-random-gptj""", """--cache-dir""", """/tmp"""]     )
							def 				__lowercase	(       self    :      Optional[Any]     ):






												"""simple docstring"""



												import transformers.commands.transformers_cli

												# # remove any previously downloaded model to start clean
												shutil.rmtree("""/tmp/models--hf-internal-testing--tiny-random-gptj"""    ,			ignore_errors=snake_case__     )

												# run the command
												transformers.commands.transformers_cli.main()

												# check if the model files are downloaded correctly on /tmp/models--hf-internal-testing--tiny-random-gptj
												self.assertTrue(os.path.exists("""/tmp/models--hf-internal-testing--tiny-random-gptj/blobs"""     )     )
												self.assertTrue(os.path.exists("""/tmp/models--hf-internal-testing--tiny-random-gptj/refs"""     )     )
												self.assertTrue(os.path.exists("""/tmp/models--hf-internal-testing--tiny-random-gptj/snapshots"""     )     )






							@require_torch
							@patch(
							    """sys.argv"""    ,			[
							        """fakeprogrampath""",
							        """download""",
							        """hf-internal-testing/test_dynamic_model_with_tokenizer""",
							        """--trust-remote-code""",
							        """--cache-dir""",
							        """/tmp""",
							    ]    ,			)
							def 				__lowercase	(       self    :      Union[str, Any]     ):






												"""simple docstring"""



												import transformers.commands.transformers_cli

												# # remove any previously downloaded model to start clean
												shutil.rmtree("""/tmp/models--hf-internal-testing--test_dynamic_model_with_tokenizer"""    ,			ignore_errors=snake_case__     )

												# run the command
												transformers.commands.transformers_cli.main()

												# check if the model files are downloaded correctly on /tmp/models--hf-internal-testing--test_dynamic_model_with_tokenizer
												self.assertTrue(os.path.exists("""/tmp/models--hf-internal-testing--test_dynamic_model_with_tokenizer/blobs"""     )     )
												self.assertTrue(os.path.exists("""/tmp/models--hf-internal-testing--test_dynamic_model_with_tokenizer/refs"""     )     )
												self.assertTrue(
												    os.path.exists("""/tmp/models--hf-internal-testing--test_dynamic_model_with_tokenizer/snapshots"""     )     )
