code: def _sexagesimalize_to_float(value):
      
      sign = np.sign(value)
      n = abs(value)
      minutes, seconds = divmod(n * 3600.0, 60.0)
      units, minutes = divmod(minutes, 60.0)
      return sign, units, minutes, seconds
docs: Decompose `value` into units, minutes, and seconds.
  
      Note that this routine is not appropriate for displaying a value,
      because rounding to the smallest digit of display is necessary
      before showing a value to the user.  Use `_sexagesimalize_to_int()`
      for data being displayed to the user.
  
      This routine simply decomposes the floating point `value` into a
      sign (+1.0 or -1.0), units, minutes, and seconds, returning the
      result in a four-element tuple.
  
      >>> _sexagesimalize_to_float(12.05125)
      (1.0, 12.0, 3.0, 4.5)
      >>> _sexagesimalize_to_float(-12.05125)
      (-1.0, 12.0, 3.0, 4.5)