


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

_A			=						6_378_137.0
_A			=						6_356_752.314_245
_A			=						637_8137

def 						_UpperCAmelCase    (      SCREAMING_SNAKE_CASE__      : float      ,					SCREAMING_SNAKE_CASE__      : float      ,					SCREAMING_SNAKE_CASE__      : float      ,					SCREAMING_SNAKE_CASE__      : float    ):
     __UpperCamelCase   							=(AXIS_A - AXIS_B) / AXIS_A
     __UpperCamelCase   							=atan((1 - flattening) * tan(radians(SCREAMING_SNAKE_CASE__    )    )    )
     __UpperCamelCase   							=atan((1 - flattening) * tan(radians(SCREAMING_SNAKE_CASE__    )    )    )
     __UpperCamelCase   							=radians(SCREAMING_SNAKE_CASE__    )
     __UpperCamelCase   							=radians(SCREAMING_SNAKE_CASE__    )
     # Equation
     __UpperCamelCase   							=sin((phi_a - phi_a) / 2    )
     __UpperCamelCase   							=sin((lambda_a - lambda_a) / 2    )
     # Square both values
     sin_sq_phi *= sin_sq_phi
     sin_sq_lambda *= sin_sq_lambda
     __UpperCamelCase   							=sqrt(sin_sq_phi + (cos(SCREAMING_SNAKE_CASE__    ) * cos(SCREAMING_SNAKE_CASE__    ) * sin_sq_lambda)    )
     return 2 * RADIUS * asin(SCREAMING_SNAKE_CASE__    )


if __name__ == "__main__":
   import doctest

   doctest.testmod()









import sys

from .dependency_versions_table import deps
from .utils.versions import require_version, require_version_core


# define which module versions we always want to check at run time
# (usually the ones defined in `install_requires` in setup.py)
#
# order specific notes:
# - tqdm must be checked before tokenizers

_A			=						'python tqdm regex requests packaging filelock numpy tokenizers'.split()
if sys.version_info < (3, 7):
   pkgs_to_check_at_runtime.append('dataclasses')
if sys.version_info < (3, 8):
   pkgs_to_check_at_runtime.append('importlib_metadata')

for pkg in pkgs_to_check_at_runtime:
   if pkg in deps:
      if pkg == "tokenizers":
         # must be loaded here, or else tqdm check may fail
         from .utils import is_tokenizers_available

         if not is_tokenizers_available():
            continue  # not required, check version only if installed

      require_version_core(deps[pkg])
   else:
      raise ValueError(f"""can't find {pkg} in {deps.keys()}, check dependency_versions_table.py""")

def 						_UpperCAmelCase    (      SCREAMING_SNAKE_CASE__      : Union[str, Any]      ,					SCREAMING_SNAKE_CASE__      : Optional[int]=None    ):
     require_version(deps[pkg]      ,					SCREAMING_SNAKE_CASE__    )





