



'''simple docstring'''





def        a_     (							_lowerCAmelCase       )      ->      tuple[int, int]:
  try:
    __lowerCamelCase       :       List[Any]           = float(_lowerCAmelCase       )
  except ValueError:
    raise ValueError('Please enter a valid number'       )
  __lowerCamelCase       :       List[Any]           = decimal - int(_lowerCAmelCase       )
  if fractional_part == 0:
    return int(_lowerCAmelCase       ), 1
  else:
    __lowerCamelCase       :       List[Any]           = len(str(_lowerCAmelCase       ).split('.'       )[1]       )
    __lowerCamelCase       :       Any           = int(decimal * (10**number_of_frac_digits)       )
    __lowerCamelCase       :       Union[str, Any]           = 10**number_of_frac_digits
    __lowerCamelCase       ,__lowerCamelCase       :       Union[str, Any]           = denominator, numerator
    while True:
      __lowerCamelCase       :       List[str]           = dividend % divisor
      if remainder == 0:
        break
      __lowerCamelCase       ,__lowerCamelCase       :       Optional[Any]           = divisor, remainder
    __lowerCamelCase       ,__lowerCamelCase       :       Dict           = numerator / divisor, denominator / divisor
    return int(_lowerCAmelCase       ), int(_lowerCAmelCase       )


if __name__ == "__main__":
   print(f'''{decimal_to_fraction(2) = }''')
   print(f'''{decimal_to_fraction(8_9.0) = }''')
   print(f'''{decimal_to_fraction("67") = }''')
   print(f'''{decimal_to_fraction("45.0") = }''')
   print(f'''{decimal_to_fraction(1.5) = }''')
   print(f'''{decimal_to_fraction("6.25") = }''')
   print(f'''{decimal_to_fraction("78td") = }''')











'''simple docstring'''





_UpperCamelCase											=						tuple[float, float, float]
_UpperCamelCase											=						tuple[float, float, float]

def        a_     (							_lowerCAmelCase       ,_lowerCAmelCase       )      ->      Vectorad:
  __lowerCamelCase       :       Any           = end_pointa[0] - end_pointa[0]
  __lowerCamelCase       :       str           = end_pointa[1] - end_pointa[1]
  __lowerCamelCase       :       Tuple           = end_pointa[2] - end_pointa[2]
  return (x, y, z)

def        a_     (							_lowerCAmelCase       ,_lowerCAmelCase       )      ->      Vectorad:
  __lowerCamelCase       :       List[str]           = ab[1] * ac[2] - ab[2] * ac[1]  # *i
  __lowerCamelCase       :       Dict           = (ab[0] * ac[2] - ab[2] * ac[0]) * -1  # *j
  __lowerCamelCase       :       List[Any]           = ab[0] * ac[1] - ab[1] * ac[0]  # *k
  return (x, y, z)

def        a_     (							_lowerCAmelCase       ,_lowerCAmelCase       )      ->      bool:
  return tuple(round(_lowerCAmelCase       ,_lowerCAmelCase       ) for x in vector       ) == (0, 0, 0)


def        a_     (							_lowerCAmelCase       ,_lowerCAmelCase       ,_lowerCAmelCase       ,_lowerCAmelCase = 10       )      ->      bool:
  __lowerCamelCase       :       str           = create_vector(_lowerCAmelCase       ,_lowerCAmelCase       )
  __lowerCamelCase       :       Dict           = create_vector(_lowerCAmelCase       ,_lowerCAmelCase       )
  return is_zero_vector(get_ad_vectors_cross(_lowerCAmelCase       ,_lowerCAmelCase       )       ,_lowerCAmelCase       )






