


'''simple docstring'''







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

from .haversine_distance import haversine_distance

SCREAMING_SNAKE_CASE_      =			6_3_7_8_1_3_7.0
SCREAMING_SNAKE_CASE_      =			6_3_5_6_7_5_2.3_1_4_2_4_5
SCREAMING_SNAKE_CASE_      =			6_37_81_37




def        __lowercase						(      __SCREAMING_SNAKE_CASE				,  __SCREAMING_SNAKE_CASE				,  __SCREAMING_SNAKE_CASE				,  __SCREAMING_SNAKE_CASE		)				->					float:
     """simple docstring"""




     __a       =   (AXIS_A - AXIS_B) / AXIS_A
     # Parametric latitudes
     # https://en.wikipedia.org/wiki/Latitude#Parametric_(or_reduced)_latitude
     __a       =   atan((1 - flattening) * tan(radians(__SCREAMING_SNAKE_CASE		)		)		)
     __a       =   atan((1 - flattening) * tan(radians(__SCREAMING_SNAKE_CASE		)		)		)

     # Compute central angle between two points
     # using haversine theta. sigma =  haversine_distance / equatorial radius
     __a       =   haversine_distance(__SCREAMING_SNAKE_CASE				,  __SCREAMING_SNAKE_CASE				,  __SCREAMING_SNAKE_CASE				,  __SCREAMING_SNAKE_CASE		) / EQUATORIAL_RADIUS

     # Intermediate P and Q values
     __a       =   (b_lata + b_lata) / 2
     __a       =   (b_lata - b_lata) / 2

     # Intermediate X value
     # X = (sigma - sin(sigma)) * sin^2Pcos^2Q / cos^2(sigma/2)
     __a       =   (sin(__SCREAMING_SNAKE_CASE		) ** 2) * (cos(__SCREAMING_SNAKE_CASE		) ** 2)
     __a       =   cos(sigma / 2		) ** 2
     __a       =   (sigma - sin(__SCREAMING_SNAKE_CASE		)) * (x_numerator / x_demonimator)

     # Intermediate Y value
     # Y = (sigma + sin(sigma)) * cos^2Psin^2Q / sin^2(sigma/2)
     __a       =   (cos(__SCREAMING_SNAKE_CASE		) ** 2) * (sin(__SCREAMING_SNAKE_CASE		) ** 2)
     __a       =   sin(sigma / 2		) ** 2
     __a       =   (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()










'''simple docstring'''







from __future__ import annotations




def        __lowercase						(      __SCREAMING_SNAKE_CASE				,  __SCREAMING_SNAKE_CASE				,  __SCREAMING_SNAKE_CASE				,  )				->					tuple[str, float]:
     """simple docstring"""




     if (stress, tangential_force, area).count(0		) != 1:
          raise ValueError("""You cannot supply more or less than 2 values"""		)
     elif stress < 0:
          raise ValueError("""Stress cannot be negative"""		)
     elif tangential_force < 0:
          raise ValueError("""Tangential Force cannot be negative"""		)
     elif area < 0:
          raise ValueError("""Area cannot be negative"""		)
     elif stress == 0:
          return (
              "stress",
              tangential_force / area,
          )
     elif tangential_force == 0:
          return (
              "tangential_force",
              stress * area,
          )
     else:
          return (
              "area",
              tangential_force / stress,
          )


if __name__ == "__main__":
 import doctest

 doctest.testmod()






