code: def mpf_div(s, t, prec, rnd=round_fast):
      """Floating-point division"""
      ssign, sman, sexp, sbc = s
      tsign, tman, texp, tbc = t
      if not sman or not tman:
          if s == fzero:
              if t == fzero:
                  raise ZeroDivisionError
              if t == fnan:
                  return fnan
              return fzero
          if t == fzero:
              raise ZeroDivisionError
          s_special = (not sman) and sexp
          t_special = (not tman) and texp
          if s_special and t_special:
              return fnan
          if s == fnan or t == fnan:
              return fnan
          if not t_special:
              if t == fzero:
                  return fnan
              return {1: finf, -1: fninf}[mpf_sign(s) * mpf_sign(t)]
          return fzero
      sign = ssign ^ tsign
      if tman == 1:
          return normalize1(sign, sman, sexp - texp, sbc, prec, rnd)
      # Same strategy as for addition: if there is a remainder, perturb
      # the result a few bits outside the precision range before rounding
      extra = prec - sbc + tbc + 5
      if extra < 5:
          extra = 5
      quot, rem = divmod(sman << extra, tman)
      if rem:
          quot = (quot << 1) + 1
          extra += 1
          return normalize1(
              sign, quot, sexp - texp - extra, bitcount(quot), prec, rnd
          )
      return normalize(
          sign, quot, sexp - texp - extra, bitcount(quot), prec, rnd
      )
  
imports: import math
  from bisect import bisect
  import sys
  from .backend import MPZ, MPZ_TYPE, MPZ_ZERO, MPZ_ONE, MPZ_TWO, MPZ_FIVE, BACKEND, STRICT, HASH_MODULUS, HASH_BITS, gmpy, sage, sage_utils
  from .libintmath import giant_steps, trailtable, bctable, lshift, rshift, bitcount, trailing, sqrt_fixed, numeral, isqrt, isqrt_fast, sqrtrem, bin_to_radix
label_desc: Use image node_id 48 for calling a global function with example usage: mpf_div(s, t, prec, rnd) and returns: normalize, fzero, normalize1, normalize1, fzero, fnan, fnan, dict, fnan, fnan