code: def mpf_frexp(x):
      """Convert x = y*2**n to (y, n) with abs(y) in [0.5, 1) if nonzero"""
      sign, man, exp, bc = x
      if not man:
          if x == fzero:
              return (fzero, 0)
          else:
              raise ValueError
      return mpf_shift(x, -bc - exp), bc + exp
  
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 47 for calling a global function with example usage: mpf_frexp(x) and returns: mpf_shift,  unknown, fzero,  int