
from __future__ import annotations

# Define the Gravitational Constant G and the function
_UpperCAmelCase    			=					6.67_43e-11  # unit of G : m^3 * kg^-1 * s^-2


def 		_lowerCamelCase       (   _a			,   _a			,   _a			,   _a  ):
  """simple docstring"""




  _lowerCamelCase      =						mass_a * mass_a

  if (force, mass_a, mass_a, distance).count(0  ) != 1:
    raise ValueError('''One and only one argument must be 0'''  )
  if force < 0:
    raise ValueError('''Gravitational force can not be negative'''  )
  if distance < 0:
    raise ValueError('''Distance can not be negative'''  )
  if mass_a < 0 or mass_a < 0:
    raise ValueError('''Mass can not be negative'''  )
  if force == 0:
    _lowerCamelCase      =						GRAVITATIONAL_CONSTANT * product_of_mass / (distance**2)
    return {"force": force}
  elif mass_a == 0:
    _lowerCamelCase      =						(force) * (distance**2) / (GRAVITATIONAL_CONSTANT * mass_a)
    return {"mass_1": mass_a}
  elif mass_a == 0:
    _lowerCamelCase      =						(force) * (distance**2) / (GRAVITATIONAL_CONSTANT * mass_a)
    return {"mass_2": mass_a}
  elif distance == 0:
    _lowerCamelCase      =						(GRAVITATIONAL_CONSTANT * product_of_mass / (force)) ** 0.5
    return {"distance": distance}
  raise ValueError('''One and only one argument must be 0'''  )


# Run doctest
if __name__ == "__main__":
  import doctest

  doctest.testmod()









'''simple docstring'''





from ..utils import DummyObject, requires_backends


class 							_lowerCAmelCase	(  metaclass=__A							):


 """simple docstring"""

 lowerCamelCase									=     ['''torch''', '''librosa''']







 def __init__(      self					,    *_lowerCamelCase					,    **_lowerCamelCase  )    ->    str:
    requires_backends(self					,    ["""torch""", """librosa"""]  )







 @classmethod
 def       UpperCAmelCase_       (      cls					,    *_lowerCamelCase					,    **_lowerCamelCase  )    ->    Dict:
    requires_backends(cls					,    ["""torch""", """librosa"""]  )







 @classmethod
 def       UpperCAmelCase_       (      cls					,    *_lowerCamelCase					,    **_lowerCamelCase  )    ->    Optional[int]:
    requires_backends(cls					,    ["""torch""", """librosa"""]  )


class 							_lowerCAmelCase	(  metaclass=__A							):


 """simple docstring"""

 lowerCamelCase									=     ['''torch''', '''librosa''']







 def __init__(      self					,    *_lowerCamelCase					,    **_lowerCamelCase  )    ->    Dict:
    requires_backends(self					,    ["""torch""", """librosa"""]  )







 @classmethod
 def       UpperCAmelCase_       (      cls					,    *_lowerCamelCase					,    **_lowerCamelCase  )    ->    str:
    requires_backends(cls					,    ["""torch""", """librosa"""]  )







 @classmethod
 def       UpperCAmelCase_       (      cls					,    *_lowerCamelCase					,    **_lowerCamelCase  )    ->    Dict:
    requires_backends(cls					,    ["""torch""", """librosa"""]  )
