






"""simple docstring"""


from math import asin, atan, cos, radians, sin, sqrt, tan

__SCREAMING_SNAKE_CASE   =   6_378_137.0
__SCREAMING_SNAKE_CASE   =   6_356_752.314_245
__SCREAMING_SNAKE_CASE   =   6_37_81_37


def        UpperCAmelCase      (					a__     ,      a__     ,      a__     ,      a__ ):





						'''simple docstring'''






						lowerCAmelCase   :Union[str, Any]						=			(AXIS_A - AXIS_B) / AXIS_A
						lowerCAmelCase   :Any						=			atan((1 - flattening) * tan(radians(a__ ) ) )
						lowerCAmelCase   :Dict						=			atan((1 - flattening) * tan(radians(a__ ) ) )
						lowerCAmelCase   :List[str]						=			radians(a__ )
						lowerCAmelCase   :Union[str, Any]						=			radians(a__ )
						# Equation
						lowerCAmelCase   :Tuple						=			sin((phi_a - phi_a) / 2 )
						lowerCAmelCase   :Dict						=			sin((lambda_a - lambda_a) / 2 )
						# Square both values
						sin_sq_phi *= sin_sq_phi
						sin_sq_lambda *= sin_sq_lambda
						lowerCAmelCase   :str						=			sqrt(sin_sq_phi + (cos(a__ ) * cos(a__ ) * sin_sq_lambda) )
						return 2 * RADIUS * asin(a__ )


if __name__ == "__main__":
		import doctest

		doctest.testmod()







"""simple docstring"""


from abc import ABC, abstractmethod
from argparse import ArgumentParser




class 						__UpperCamelCase     (     UpperCamelCase						):
					@staticmethod
					@abstractmethod
					def        UpperCAmelCase__ (							UpperCAmelCase							:	ArgumentParser   )	->       Optional[Any]:
											raise NotImplementedError()
					@abstractmethod
					def        UpperCAmelCase__ (							self							:	str   )	->       List[str]:
											raise NotImplementedError()