




'''simple docstring'''


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

from .haversine_distance import haversine_distance

UpperCAmelCase_ 		=      6_37_81_37.0
UpperCAmelCase_ 		=      6_35_67_52.31_42_45
UpperCAmelCase_ 		=      6_37_81_37


def 						SCREAMING_SNAKE_CASE       (      a_	:							float				,					a_	:							float				,					a_	:							float				,					a_	:							float			):
  __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(a_			)			)			)
  __a			=					atan((1 - flattening) * tan(radians(a_			)			)			)

  # Compute central angle between two points
  # using haversine theta. sigma =  haversine_distance / equatorial radius
  __a			=					haversine_distance(a_				,					a_				,					a_				,					a_			) / 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(a_			) ** 2) * (cos(a_			) ** 2)
  __a			=					cos(sigma / 2			) ** 2
  __a			=					(sigma - sin(a_			)) * (x_numerator / x_demonimator)

  # Intermediate Y value
  # Y = (sigma + sin(sigma)) * cos^2Psin^2Q / sin^2(sigma/2)
  __a			=					(cos(a_			) ** 2) * (sin(a_			) ** 2)
  __a			=					sin(sigma / 2			) ** 2
  __a			=					(sigma + sin(a_			)) * (y_numerator / y_denominator)

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


if __name__ == "__main__":
  import doctest

  doctest.testmod()









'''simple docstring'''


def 						SCREAMING_SNAKE_CASE       (      a_	:							int				,					a_	:							int			):
  return int((input_a, input_a).count(0			) != 0			)


def 						SCREAMING_SNAKE_CASE       (      ):
  assert nand_gate(0				,					0			) == 1
  assert nand_gate(0				,					1			) == 1
  assert nand_gate(1				,					0			) == 1
  assert nand_gate(1				,					1			) == 0


if __name__ == "__main__":
  print(nand_gate(0, 0))
  print(nand_gate(0, 1))
  print(nand_gate(1, 0))
  print(nand_gate(1, 1))



