code: 
  
  
  
  import os
  import pickle
  import tempfile
  import unittest
  from typing import Callable, Optional
  
  import numpy as np
  
  from transformers import (
      BatchEncoding,
      BertTokenizer,
      BertTokenizerFast,
      PreTrainedTokenizer,
      PreTrainedTokenizerFast,
      TensorType,
      TokenSpan,
      is_tokenizers_available,
  )
  from transformers.models.gpta.tokenization_gpta import GPTaTokenizer
  from transformers.testing_utils import CaptureStderr, require_flax, require_tf, require_tokenizers, require_torch, slow
  
  
  if is_tokenizers_available():
  	from tokenizers import Tokenizer
  	from tokenizers.models import WordPiece
  
  
  
  
  
  
  class 	lowercase		(				unittest.TestCase):
  
  
  
  
  
  
  	"""simple docstring"""
  
  
  	def 						_SCREAMING_SNAKE_CASE	(			self			:		List[Any]		,						__UpperCAmelCase			:		Any  )    ->				Any:
  							UpperCAmelCase_=     list(tokenizer_class.max_model_input_sizes.keys()  )
  							for model_name in sa_models[:1]:
  													UpperCAmelCase_=     tokenizer_class.from_pretrained(__UpperCAmelCase  )
  													self.assertIsNotNone(__UpperCAmelCase  )
  													self.assertIsInstance(__UpperCAmelCase		,						__UpperCAmelCase  )
  													self.assertIsInstance(__UpperCAmelCase		,						__UpperCAmelCase  )
  
  													for special_tok in tokenizer.all_special_tokens:
  																			self.assertIsInstance(__UpperCAmelCase		,						__UpperCAmelCase  )
  																			UpperCAmelCase_=     tokenizer.convert_tokens_to_ids(__UpperCAmelCase  )
  																			self.assertIsInstance(__UpperCAmelCase		,						__UpperCAmelCase  )
  
  
  
  
  	def 						_SCREAMING_SNAKE_CASE	(			self			:		Tuple		,						__UpperCAmelCase			:		BatchEncoding		,						__UpperCAmelCase			:		Optional[Callable] = None  )    ->				Dict:
  							UpperCAmelCase_=     pickle.dumps(__UpperCAmelCase  )
  							self.assertIsNotNone(__UpperCAmelCase  )
  
  							UpperCAmelCase_=     pickle.loads(__UpperCAmelCase  )
  
  							# Ensure is_fast is correctly restored
  							self.assertEqual(be_restored.is_fast		,						be_original.is_fast  )
  
  							# Ensure encodings are potentially correctly restored
  							if be_original.is_fast:
  													self.assertIsNotNone(be_restored.encodings  )
  							else:
  													self.assertIsNone(be_restored.encodings  )
  
  							# Ensure the keys are the same
  							for original_v, restored_v in zip(be_original.values()		,						be_restored.values()  ):
  													if equal_op:
  																			self.assertTrue(equal_op(__UpperCAmelCase		,						__UpperCAmelCase  )  )
  													else:
  																			self.assertEqual(__UpperCAmelCase		,						__UpperCAmelCase  )
  
  
  
  
  	@slow
  	def 						_SCREAMING_SNAKE_CASE	(			self			:		str  )    ->				str:
  							self.check_tokenizer_from_pretrained(__UpperCAmelCase  )
  
  
  
  
  	def 						_SCREAMING_SNAKE_CASE	(			self			:		Optional[Any]  )    ->				List[str]:
  							self.assertEqual(TensorType("""tf"""  )		,						TensorType.TENSORFLOW  )
  							self.assertEqual(TensorType("""pt"""  )		,						TensorType.PYTORCH  )
  							self.assertEqual(TensorType("""np"""  )		,						TensorType.NUMPY  )
  
  
  
  
  	@require_tokenizers
  	def 						_SCREAMING_SNAKE_CASE	(			self			:		Tuple  )    ->				Optional[Any]:
  							import numpy as np
  
  							UpperCAmelCase_=     BertTokenizer.from_pretrained("""bert-base-cased"""  )
  							UpperCAmelCase_=     BertTokenizerFast.from_pretrained("""bert-base-cased"""  )
  
  							# Python no tensor
  							with self.subTest("""BatchEncoding (Python, return_tensors=None)"""  ):
  													self.assert_dump_and_restore(tokenizer_p("""Small example to encode"""  )  )
  
  							with self.subTest("""BatchEncoding (Python, return_tensors=NUMPY)"""  ):
  													self.assert_dump_and_restore(
  													    tokenizer_p("""Small example to encode"""		,						return_tensors=TensorType.NUMPY  )		,						np.array_equal  )
  
  							with self.subTest("""BatchEncoding (Rust, return_tensors=None)"""  ):
  													self.assert_dump_and_restore(tokenizer_r("""Small example to encode"""  )  )
  
  							with self.subTest("""BatchEncoding (Rust, return_tensors=NUMPY)"""  ):
  													self.assert_dump_and_restore(
  													    tokenizer_r("""Small example to encode"""		,						return_tensors=TensorType.NUMPY  )		,						np.array_equal  )
  
  
  
  
  	@require_tf
  	@require_tokenizers
  	def 						_SCREAMING_SNAKE_CASE	(			self			:		Any  )    ->				Optional[int]:
  							import tensorflow as tf
  
  							def tf_array_equals(__UpperCAmelCase			:		List[Any]		,						__UpperCAmelCase			:		List[str]  ):
  													return tf.reduce_all(tf.equal(__UpperCAmelCase		,						__UpperCAmelCase  )  )
  
  							UpperCAmelCase_=     BertTokenizer.from_pretrained("""bert-base-cased"""  )
  							UpperCAmelCase_=     BertTokenizerFast.from_pretrained("""bert-base-cased"""  )
  
  							with self.subTest("""BatchEncoding (Python, return_tensors=TENSORFLOW)"""  ):
  													self.assert_dump_and_restore(
  													    tokenizer_p("""Small example to encode"""		,						return_tensors=TensorType.TENSORFLOW  )		,						__UpperCAmelCase  )
  
  							with self.subTest("""BatchEncoding (Rust, return_tensors=TENSORFLOW)"""  ):
  													self.assert_dump_and_restore(
  													    tokenizer_r("""Small example to encode"""		,						return_tensors=TensorType.TENSORFLOW  )		,						__UpperCAmelCase  )
  
  
  
  
  	@require_torch
  	@require_tokenizers
  	def 						_SCREAMING_SNAKE_CASE	(			self			:		Optional[Any]  )    ->				List[Any]:
  							import torch
  
  							UpperCAmelCase_=     BertTokenizer.from_pretrained("""bert-base-cased"""  )
  							UpperCAmelCase_=     BertTokenizerFast.from_pretrained("""bert-base-cased"""  )
  
  							with self.subTest("""BatchEncoding (Python, return_tensors=PYTORCH)"""  ):
  													self.assert_dump_and_restore(
  													    tokenizer_p("""Small example to encode"""		,						return_tensors=TensorType.PYTORCH  )		,						torch.equal  )
  
  							with self.subTest("""BatchEncoding (Rust, return_tensors=PYTORCH)"""  ):
  													self.assert_dump_and_restore(
  													    tokenizer_r("""Small example to encode"""		,						return_tensors=TensorType.PYTORCH  )		,						torch.equal  )
  
  
  
  
  	@require_tokenizers
  	def 						_SCREAMING_SNAKE_CASE	(			self			:		str  )    ->				Any:
  							UpperCAmelCase_=     BertTokenizer.from_pretrained("""bert-base-cased"""  )
  							UpperCAmelCase_=     BertTokenizerFast.from_pretrained("""bert-base-cased"""  )
  
  							with self.subTest("""Python Tokenizer"""  ):
  													self.assertFalse(tokenizer_p("""Small example to_encode"""  ).is_fast  )
  
  							with self.subTest("""Rust Tokenizer"""  ):
  													self.assertTrue(tokenizer_r("""Small example to_encode"""  ).is_fast  )
  
  
  
  
  	@require_tokenizers
  	def 						_SCREAMING_SNAKE_CASE	(			self			:		Any  )    ->				int:
  							UpperCAmelCase_=     BertTokenizerFast.from_pretrained("""bert-base-cased"""  )
  							UpperCAmelCase_=     tokenizer_r(["""Test""", """\xad""", """test"""]		,						is_split_into_words=__UpperCAmelCase  )
  
  							self.assertEqual(encoded.word_to_tokens(0  )		,						TokenSpan(start=1		,						end=2  )  )
  							self.assertEqual(encoded.word_to_tokens(1  )		,						__UpperCAmelCase  )
  							self.assertEqual(encoded.word_to_tokens(2  )		,						TokenSpan(start=2		,						end=3  )  )
  
  
  
  
  	def 						_SCREAMING_SNAKE_CASE	(			self			:		int  )    ->				Dict:
  							UpperCAmelCase_=     BatchEncoding({"""inputs""": [[1, 2, 3], [4, 5, 6]], """labels""": [0, 1]}  )
  							UpperCAmelCase_=     batch.convert_to_tensors(tensor_type="""np"""  )
  							self.assertEqual(tensor_batch["""inputs"""].shape		,						(2, 3)  )
  							self.assertEqual(tensor_batch["""labels"""].shape		,						(2,)  )
  							# test converting the converted
  							with CaptureStderr() as cs:
  													UpperCAmelCase_=     batch.convert_to_tensors(tensor_type="""np"""  )
  							self.assertFalse(len(cs.err  )		,						msg=F"""should have no warning, but got {cs.err}"""  )
  
  							UpperCAmelCase_=     BatchEncoding({"""inputs""": [1, 2, 3], """labels""": 0}  )
  							UpperCAmelCase_=     batch.convert_to_tensors(tensor_type="""np"""		,						prepend_batch_axis=__UpperCAmelCase  )
  							self.assertEqual(tensor_batch["""inputs"""].shape		,						(1, 3)  )
  							self.assertEqual(tensor_batch["""labels"""].shape		,						(1,)  )
  
  
  
  
  	@require_torch
  	def 						_SCREAMING_SNAKE_CASE	(			self			:		Any  )    ->				str:
  							UpperCAmelCase_=     BatchEncoding({"""inputs""": [[1, 2, 3], [4, 5, 6]], """labels""": [0, 1]}  )
  							UpperCAmelCase_=     batch.convert_to_tensors(tensor_type="""pt"""  )
  							self.assertEqual(tensor_batch["""inputs"""].shape		,						(2, 3)  )
  							self.assertEqual(tensor_batch["""labels"""].shape		,						(2,)  )
  							# test converting the converted
  							with CaptureStderr() as cs:
  													UpperCAmelCase_=     batch.convert_to_tensors(tensor_type="""pt"""  )
  							self.assertFalse(len(cs.err  )		,						msg=F"""should have no warning, but got {cs.err}"""  )
  
  							UpperCAmelCase_=     BatchEncoding({"""inputs""": [1, 2, 3], """labels""": 0}  )
  							UpperCAmelCase_=     batch.convert_to_tensors(tensor_type="""pt"""		,						prepend_batch_axis=__UpperCAmelCase  )
  							self.assertEqual(tensor_batch["""inputs"""].shape		,						(1, 3)  )
  							self.assertEqual(tensor_batch["""labels"""].shape		,						(1,)  )
  
  
  
  
  	@require_tf
  	def 						_SCREAMING_SNAKE_CASE	(			self			:		Any  )    ->				Any:
  							UpperCAmelCase_=     BatchEncoding({"""inputs""": [[1, 2, 3], [4, 5, 6]], """labels""": [0, 1]}  )
  							UpperCAmelCase_=     batch.convert_to_tensors(tensor_type="""tf"""  )
  							self.assertEqual(tensor_batch["""inputs"""].shape		,						(2, 3)  )
  							self.assertEqual(tensor_batch["""labels"""].shape		,						(2,)  )
  							# test converting the converted
  							with CaptureStderr() as cs:
  													UpperCAmelCase_=     batch.convert_to_tensors(tensor_type="""tf"""  )
  							self.assertFalse(len(cs.err  )		,						msg=F"""should have no warning, but got {cs.err}"""  )
  
  							UpperCAmelCase_=     BatchEncoding({"""inputs""": [1, 2, 3], """labels""": 0}  )
  							UpperCAmelCase_=     batch.convert_to_tensors(tensor_type="""tf"""		,						prepend_batch_axis=__UpperCAmelCase  )
  							self.assertEqual(tensor_batch["""inputs"""].shape		,						(1, 3)  )
  							self.assertEqual(tensor_batch["""labels"""].shape		,						(1,)  )
  
  
  
  
  	@require_flax
  	def 						_SCREAMING_SNAKE_CASE	(			self			:		Dict  )    ->				Tuple:
  							UpperCAmelCase_=     BatchEncoding({"""inputs""": [[1, 2, 3], [4, 5, 6]], """labels""": [0, 1]}  )
  							UpperCAmelCase_=     batch.convert_to_tensors(tensor_type="""jax"""  )
  							self.assertEqual(tensor_batch["""inputs"""].shape		,						(2, 3)  )
  							self.assertEqual(tensor_batch["""labels"""].shape		,						(2,)  )
  							# test converting the converted
  							with CaptureStderr() as cs:
  													UpperCAmelCase_=     batch.convert_to_tensors(tensor_type="""jax"""  )
  							self.assertFalse(len(cs.err  )		,						msg=F"""should have no warning, but got {cs.err}"""  )
  
  							UpperCAmelCase_=     BatchEncoding({"""inputs""": [1, 2, 3], """labels""": 0}  )
  							UpperCAmelCase_=     batch.convert_to_tensors(tensor_type="""jax"""		,						prepend_batch_axis=__UpperCAmelCase  )
  							self.assertEqual(tensor_batch["""inputs"""].shape		,						(1, 3)  )
  							self.assertEqual(tensor_batch["""labels"""].shape		,						(1,)  )
  
  
  
  
  	def 						_SCREAMING_SNAKE_CASE	(			self			:		Optional[int]  )    ->				Union[str, Any]:
  							UpperCAmelCase_=     [{"""input_ids""": np.array([0, 1, 2]  )}, {"""input_ids""": np.array([0, 1, 2, 3]  )}]
  							UpperCAmelCase_=     BertTokenizer.from_pretrained("""bert-base-cased"""  )
  
  							UpperCAmelCase_=     tokenizer.pad(__UpperCAmelCase		,						padding=__UpperCAmelCase  )
  							self.assertTrue(isinstance(batch["""input_ids"""]		,						np.ndarray  )  )
  							self.assertEqual(batch["""input_ids"""].tolist()		,						[[0, 1, 2, tokenizer.pad_token_id], [0, 1, 2, 3]]  )
  							UpperCAmelCase_=     tokenizer.pad(__UpperCAmelCase		,						padding=__UpperCAmelCase		,						return_tensors="""np"""  )
  							self.assertTrue(isinstance(batch["""input_ids"""]		,						np.ndarray  )  )
  							self.assertEqual(batch["""input_ids"""].tolist()		,						[[0, 1, 2, tokenizer.pad_token_id], [0, 1, 2, 3]]  )
  
  
  
  
  	@require_torch
  	def 						_SCREAMING_SNAKE_CASE	(			self			:		Dict  )    ->				int:
  							import torch
  
  							UpperCAmelCase_=     [{"""input_ids""": torch.tensor([0, 1, 2]  )}, {"""input_ids""": torch.tensor([0, 1, 2, 3]  )}]
  							UpperCAmelCase_=     BertTokenizer.from_pretrained("""bert-base-cased"""  )
  
  							UpperCAmelCase_=     tokenizer.pad(__UpperCAmelCase		,						padding=__UpperCAmelCase  )
  							self.assertTrue(isinstance(batch["""input_ids"""]		,						torch.Tensor  )  )
  							self.assertEqual(batch["""input_ids"""].tolist()		,						[[0, 1, 2, tokenizer.pad_token_id], [0, 1, 2, 3]]  )
  							UpperCAmelCase_=     tokenizer.pad(__UpperCAmelCase		,						padding=__UpperCAmelCase		,						return_tensors="""pt"""  )
  							self.assertTrue(isinstance(batch["""input_ids"""]		,						torch.Tensor  )  )
  							self.assertEqual(batch["""input_ids"""].tolist()		,						[[0, 1, 2, tokenizer.pad_token_id], [0, 1, 2, 3]]  )
  
  
  
  
  	@require_tf
  	def 						_SCREAMING_SNAKE_CASE	(			self			:		Optional[int]  )    ->				List[str]:
  							import tensorflow as tf
  
  							UpperCAmelCase_=     [{"""input_ids""": tf.constant([0, 1, 2]  )}, {"""input_ids""": tf.constant([0, 1, 2, 3]  )}]
  							UpperCAmelCase_=     BertTokenizer.from_pretrained("""bert-base-cased"""  )
  
  							UpperCAmelCase_=     tokenizer.pad(__UpperCAmelCase		,						padding=__UpperCAmelCase  )
  							self.assertTrue(isinstance(batch["""input_ids"""]		,						tf.Tensor  )  )
  							self.assertEqual(batch["""input_ids"""].numpy().tolist()		,						[[0, 1, 2, tokenizer.pad_token_id], [0, 1, 2, 3]]  )
  							UpperCAmelCase_=     tokenizer.pad(__UpperCAmelCase		,						padding=__UpperCAmelCase		,						return_tensors="""tf"""  )
  							self.assertTrue(isinstance(batch["""input_ids"""]		,						tf.Tensor  )  )
  							self.assertEqual(batch["""input_ids"""].numpy().tolist()		,						[[0, 1, 2, tokenizer.pad_token_id], [0, 1, 2, 3]]  )
  
  
  
  
  	@require_tokenizers
  	def 						_SCREAMING_SNAKE_CASE	(			self			:		List[str]  )    ->				Any:
  							UpperCAmelCase_=     Tokenizer(WordPiece(unk_token="""[UNK]"""  )  )
  							PreTrainedTokenizerFast(tokenizer_object=__UpperCAmelCase  )
  
  
  
  
  	@require_tokenizers
  	def 						_SCREAMING_SNAKE_CASE	(			self			:		int  )    ->				List[str]:
  							UpperCAmelCase_=     Tokenizer(WordPiece(unk_token="""[UNK]"""  )  )
  							with tempfile.TemporaryDirectory() as tmpdirname:
  													bert_tokenizer.save(os.path.join(__UpperCAmelCase		,						"""tokenizer.json"""  )  )
  													PreTrainedTokenizerFast(tokenizer_file=os.path.join(__UpperCAmelCase		,						"""tokenizer.json"""  )  )
  
  
  
  
  
style_context: 
  
  
  
  from math import radians as angle_to_radians
  from math import sin
  
  # Acceleration Constant on Earth (unit m/s^2)
  __A       					=		9.8_0_6_6_5
  
  
  
  def  __a  (					lowerCAmelCase_     :      float    ,lowerCAmelCase_     :      float       )   ->				None:
  
  
  
  
  
  
  						'''simple docstring'''
  
  
  
  						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  __a  (					lowerCAmelCase_     :      float    ,lowerCAmelCase_     :      float       )   ->				float:
  
  
  
  
  
  
  						'''simple docstring'''
  
  
  
  						check_args(lowerCAmelCase_    ,lowerCAmelCase_       )
  						UpperCAmelCase_=     angle_to_radians(2 * angle       )
  						return round(init_velocity**2 * sin(lowerCAmelCase_       ) / g    ,2       )
  
  
  
  def  __a  (					lowerCAmelCase_     :      float    ,lowerCAmelCase_     :      float       )   ->				float:
  
  
  
  
  
  
  						'''simple docstring'''
  
  
  
  						check_args(lowerCAmelCase_    ,lowerCAmelCase_       )
  						UpperCAmelCase_=     angle_to_radians(lowerCAmelCase_       )
  						return round(init_velocity**2 * sin(lowerCAmelCase_       ) ** 2 / (2 * g)    ,2       )
  
  
  
  def  __a  (					lowerCAmelCase_     :      float    ,lowerCAmelCase_     :      float       )   ->				float:
  
  
  
  
  
  
  						'''simple docstring'''
  
  
  
  						check_args(lowerCAmelCase_    ,lowerCAmelCase_       )
  						UpperCAmelCase_=     angle_to_radians(lowerCAmelCase_       )
  						return round(2 * init_velocity * sin(lowerCAmelCase_       ) / g    ,2       )
  
  
  
  def  __a  (					)   ->				None:
  
  
  
  
  
  
  						'''simple docstring'''
  
  
  
  						UpperCAmelCase_,     UpperCAmelCase_=     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
  	__A       					=		float(input('''Initial Velocity: ''').strip())
  
  	# Get input from user
  	__A       					=		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]')
  
  
  
  
  