





'''simple docstring'''






from math import radians as angle_to_radians
from math import sin

# Acceleration Constant on Earth (unit m/s^2)
A :			Union[str, Any]							   =      9.8_06_65





def    lowercase_   (		lowercase__					,	lowercase__    ) ->Dict:




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

						if not isinstance(_a					,	(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    lowercase_   (		lowercase__					,	lowercase__    ) ->Optional[int]:
						check_args(_a					,	_a    )
						_snake_case: Union[str, Any]	       =		angle_to_radians(2 * angle    )
						return round(init_velocity**2 * sin(_a    ) / g					,	2    )





def    lowercase_   (		lowercase__					,	lowercase__    ) ->Any:
						check_args(_a					,	_a    )
						_snake_case: int	       =		angle_to_radians(_a    )
						return round(init_velocity**2 * sin(_a    ) ** 2 / (2 * g)					,	2    )





def    lowercase_   (		lowercase__					,	lowercase__    ) ->Dict:
						check_args(_a					,	_a    )
						_snake_case: List[str]	       =		angle_to_radians(_a    )
						return round(2 * init_velocity * sin(_a    ) / g					,	2    )





def    lowercase_   (		) ->int:
						_snake_case: Tuple	       =		25, 20
						assert horizontal_distance(_a					,	_a    ) == 40.97
						assert max_height(_a					,	_a    ) == 3.7_3
						assert total_time(_a					,	_a    ) == 1.7_4


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

		testmod()

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

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










from math import cos, sin







def       lowerCamelCase_  (    _a       :						float    ):



    '''simple docstring'''




    UpperCAmelCase_     :       str  		=					float(_a    )
    return [[scaling_factor * int(x == y    ) for x in range(2    )] for y in range(2    )]







def       lowerCamelCase_  (    _a       :						float    ):



    '''simple docstring'''




    UpperCAmelCase_		, UpperCAmelCase_     :       List[str]  		=					cos(_a    ), sin(_a    )
    return [[c, -s], [s, c]]







def       lowerCamelCase_  (    _a       :						float    ):



    '''simple docstring'''




    UpperCAmelCase_		, UpperCAmelCase_     :       Optional[Any]  		=					cos(_a    ), sin(_a    )
    UpperCAmelCase_     :       Dict  		=					c * s
    return [[c * c, cs], [cs, s * s]]







def       lowerCamelCase_  (    _a       :						float    ):



    '''simple docstring'''




    UpperCAmelCase_		, UpperCAmelCase_     :       List[Any]  		=					cos(_a    ), sin(_a    )
    UpperCAmelCase_     :       Optional[Any]  		=					c * s
    return [[2 * c - 1, 2 * cs], [2 * cs, 2 * s - 1]]


print(F"    {scaling(5) = }")
print(F"  {rotation(45) = }")
print(F"{projection(45) = }")






print(F"{reflection(45) = }")
