



from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_sentencepiece_available,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


__A       					=		{
    '''configuration_camembert''': ['''CAMEMBERT_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''CamembertConfig''', '''CamembertOnnxConfig'''],
}

try:
						if not is_sentencepiece_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						__A       					=		['''CamembertTokenizer''']

try:
						if not is_tokenizers_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						__A       					=		['''CamembertTokenizerFast''']

try:
						if not is_torch_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						__A       					=		[
						    '''CAMEMBERT_PRETRAINED_MODEL_ARCHIVE_LIST''',
						    '''CamembertForCausalLM''',
						    '''CamembertForMaskedLM''',
						    '''CamembertForMultipleChoice''',
						    '''CamembertForQuestionAnswering''',
						    '''CamembertForSequenceClassification''',
						    '''CamembertForTokenClassification''',
						    '''CamembertModel''',
						    '''CamembertPreTrainedModel''',
						]

try:
						if not is_tf_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						__A       					=		[
						    '''TF_CAMEMBERT_PRETRAINED_MODEL_ARCHIVE_LIST''',
						    '''TFCamembertForCausalLM''',
						    '''TFCamembertForMaskedLM''',
						    '''TFCamembertForMultipleChoice''',
						    '''TFCamembertForQuestionAnswering''',
						    '''TFCamembertForSequenceClassification''',
						    '''TFCamembertForTokenClassification''',
						    '''TFCamembertModel''',
						    '''TFCamembertPreTrainedModel''',
						]


if TYPE_CHECKING:
						from .configuration_camembert import CAMEMBERT_PRETRAINED_CONFIG_ARCHIVE_MAP, CamembertConfig, CamembertOnnxConfig

						try:
												if not is_sentencepiece_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .tokenization_camembert import CamembertTokenizer

						try:
												if not is_tokenizers_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .tokenization_camembert_fast import CamembertTokenizerFast

						try:
												if not is_torch_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_camembert import (
												    CAMEMBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
												    CamembertForCausalLM,
												    CamembertForMaskedLM,
												    CamembertForMultipleChoice,
												    CamembertForQuestionAnswering,
												    CamembertForSequenceClassification,
												    CamembertForTokenClassification,
												    CamembertModel,
												    CamembertPreTrainedModel,
												)

						try:
												if not is_tf_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_tf_camembert import (
												    TF_CAMEMBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
												    TFCamembertForCausalLM,
												    TFCamembertForMaskedLM,
												    TFCamembertForMultipleChoice,
												    TFCamembertForQuestionAnswering,
												    TFCamembertForSequenceClassification,
												    TFCamembertForTokenClassification,
												    TFCamembertModel,
												    TFCamembertPreTrainedModel,
												)

else:
						import sys

						__A       					=		_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)









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




