






"""simple docstring"""





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

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



def   a    (     __UpperCAmelCase      :    float      ,   __UpperCAmelCase      :    float      ,   __UpperCAmelCase      :    float      ,   __UpperCAmelCase      :    float  )    ->							float:
						__magic_name__:	Tuple							=       (AXIS_A - AXIS_B) / AXIS_A
						__magic_name__:	int							=       atan((1 - flattening) * tan(radians(__UpperCAmelCase  )  )  )
						__magic_name__:	Optional[Any]							=       atan((1 - flattening) * tan(radians(__UpperCAmelCase  )  )  )
						__magic_name__:	Tuple							=       radians(__UpperCAmelCase  )
						__magic_name__:	Any							=       radians(__UpperCAmelCase  )
						# Equation
						__magic_name__:	Union[str, Any]							=       sin((phi_a - phi_a) / 2  )
						__magic_name__:	str							=       sin((lambda_a - lambda_a) / 2  )
						# Square both values
						sin_sq_phi *= sin_sq_phi
						sin_sq_lambda *= sin_sq_lambda
						__magic_name__:	Any							=       sqrt(sin_sq_phi + (cos(__UpperCAmelCase  ) * cos(__UpperCAmelCase  ) * sin_sq_lambda)  )
						return 2 * RADIUS * asin(__UpperCAmelCase  )


if __name__ == "__main__":
							import doctest

							doctest.testmod()










_lowercase		:  Any			       ={"""a""": ["""c""", """b"""], """b""": ["""d""", """e"""], """c""": [], """d""": [], """e""": []}
_lowercase		:  Union[str, Any]			       =["""a""", """b""", """c""", """d""", """e"""]


def 		_SCREAMING_SNAKE_CASE     ( lowerCAmelCase__							,lowerCAmelCase__							,lowerCAmelCase__						):
		lowerCamelCase_	:     int 						=      start
		# add current to visited
		visited.append(lowerCAmelCase__						)
		lowerCamelCase_	:     Optional[int] 						=      edges[current]
		for neighbor in neighbors:
				# if neighbor not in visited, visit
				if neighbor not in visited:
						lowerCamelCase_	:     Dict 						=      topological_sort(lowerCAmelCase__							,lowerCAmelCase__							,lowerCAmelCase__						)
    # if all neighbors visited add current to sort
		sort.append(lowerCAmelCase__						)
		# if all vertices haven't been visited select a new one to visit
		if len(lowerCAmelCase__						) != len(lowerCAmelCase__						):
				for vertice in vertices:
						if vertice not in visited:
								lowerCamelCase_	:     Any 						=      topological_sort(lowerCAmelCase__							,lowerCAmelCase__							,lowerCAmelCase__						)
    # return sort
		return sort


if __name__ == "__main__":
		_lowercase		:  str			       =topological_sort("""a""", [], [])
		print(sort)
