

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

from .haversine_distance import haversine_distance

snake_case_			  = 637_8137.0
snake_case_			  = 635_6752.31_4245
snake_case_			  = 6_378_137

def 	snake_case__			(    SCREAMING_SNAKE_CASE_		:    float	,     SCREAMING_SNAKE_CASE_		:    float	,     SCREAMING_SNAKE_CASE_		:    float	,     SCREAMING_SNAKE_CASE_		:    float			):



     '''simple docstring'''





     lowercase__    :   Dict      =       (AXIS_A - AXIS_B) / AXIS_A
     # Parametric latitudes
     # https://en.wikipedia.org/wiki/Latitude#Parametric_(or_reduced)_latitude
     lowercase__    :   Dict      =       atan((1 - flattening) * tan(radians(SCREAMING_SNAKE_CASE_			)			)			)
     lowercase__    :   Union[str, Any]      =       atan((1 - flattening) * tan(radians(SCREAMING_SNAKE_CASE_			)			)			)

     # Compute central angle between two points
     # using haversine theta. sigma =  haversine_distance / equatorial radius
     lowercase__    :   str      =       haversine_distance(SCREAMING_SNAKE_CASE_	,     SCREAMING_SNAKE_CASE_	,     SCREAMING_SNAKE_CASE_	,     SCREAMING_SNAKE_CASE_			) / EQUATORIAL_RADIUS

     # Intermediate P and Q values
     lowercase__    :   str      =       (b_lata + b_lata) / 2
     lowercase__    :   Optional[int]      =       (b_lata - b_lata) / 2

     # Intermediate X value
     # X = (sigma - sin(sigma)) * sin^2Pcos^2Q / cos^2(sigma/2)
     lowercase__    :   Optional[Any]      =       (sin(SCREAMING_SNAKE_CASE_			) ** 2) * (cos(SCREAMING_SNAKE_CASE_			) ** 2)
     lowercase__    :   Optional[int]      =       cos(sigma / 2			) ** 2
     lowercase__    :   Union[str, Any]      =       (sigma - sin(SCREAMING_SNAKE_CASE_			)) * (x_numerator / x_demonimator)

     # Intermediate Y value
     # Y = (sigma + sin(sigma)) * cos^2Psin^2Q / sin^2(sigma/2)
     lowercase__    :   List[Any]      =       (cos(SCREAMING_SNAKE_CASE_			) ** 2) * (sin(SCREAMING_SNAKE_CASE_			) ** 2)
     lowercase__    :   Tuple      =       sin(sigma / 2			) ** 2
     lowercase__    :   str      =       (sigma + sin(SCREAMING_SNAKE_CASE_			)) * (y_numerator / y_denominator)

     return EQUATORIAL_RADIUS * (sigma - ((flattening / 2) * (x_value + y_value)))


if __name__ == "__main__":
       import doctest

       doctest.testmod()




def 	snake_case__			(    SCREAMING_SNAKE_CASE_		:    str = "The quick brown fox jumps over the lazy dog"	,     ):



     '''simple docstring'''





     lowercase__    :   str      =       set()

     # Replace all the whitespace in our sentence
     lowercase__    :   Tuple      =       input_str.replace(' '	,     ''			)
     for alpha in input_str:
          if "a" <= alpha.lower() <= "z":
               frequency.add(alpha.lower()			)
     return len(SCREAMING_SNAKE_CASE_			) == 26

def 	snake_case__			(    SCREAMING_SNAKE_CASE_		:    str = "The quick brown fox jumps over the lazy dog"	,     ):



     '''simple docstring'''





     lowercase__    :   Dict      =       [False] * 26
     for char in input_str:
          if char.islower():
               lowercase__    :   List[Any]      =       True
          elif char.isupper():
               lowercase__    :   Optional[Any]      =       True
     return all(SCREAMING_SNAKE_CASE_			)

def 	snake_case__			(    SCREAMING_SNAKE_CASE_		:    str = "The quick brown fox jumps over the lazy dog"	,     ):



     '''simple docstring'''





     return len({char for char in input_str.lower() if char.isalpha()}			) == 26

def 	snake_case__			(    ):



     '''simple docstring'''





     from timeit import timeit

     lowercase__    :   Union[str, Any]      =       'from __main__ import is_pangram, is_pangram_faster, is_pangram_fastest'
     print(timeit('is_pangram()'	,     setup=SCREAMING_SNAKE_CASE_			)			)
     print(timeit('is_pangram_faster()'	,     setup=SCREAMING_SNAKE_CASE_			)			)
     print(timeit('is_pangram_fastest()'	,     setup=SCREAMING_SNAKE_CASE_			)			)
     # 5.348480500048026, 2.6477354579837993, 1.8470395830227062
     # 5.036091582966037, 2.644472333951853,  1.8869528750656173


if __name__ == "__main__":
       import doctest

       doctest.testmod()
       benchmark()

