code: def _normalize(sign, man, exp, bc, prec, rnd):
      """
      Create a raw mpf tuple with value (-1)**sign * man * 2**exp and
      normalized mantissa. The mantissa is rounded in the specified
      direction if its size exceeds the precision. Trailing zero bits
      are also stripped from the mantissa to ensure that the
      representation is canonical.
  
      Conditions on the input:
      * The input must represent a regular (finite) number
      * The sign bit must be 0 or 1
      * The mantissa must be positive
      * The exponent must be an integer
      * The bitcount must be exact
  
      If these conditions are not met, use from_man_exp, mpf_pos, or any
      of the conversion functions to create normalized raw mpf tuples.
      """
      if not man:
          return fzero
      # Cut mantissa down to size if larger than target precision
      n = bc - prec
      if n > 0:
          if rnd == round_nearest:
              t = man >> (n - 1)
              if t & 1 and ((t & 2) or (man & h_mask[n < 300][n])):
                  man = (t >> 1) + 1
              else:
                  man = t >> 1
          elif shifts_down[rnd][sign]:
              man >>= n
          else:
              man = -((-man) >> n)
          exp += n
          bc = prec
      # Strip trailing bits
      if not man & 1:
          t = trailtable[int(man & 255)]
          if not t:
              while not man & 255:
                  man >>= 8
                  exp += 8
                  bc -= 8
              t = trailtable[int(man & 255)]
          man >>= t
          exp += t
          bc -= t
      # Bit count can be wrong if the input mantissa was 1 less than
      # a power of 2 and got rounded up, thereby adding an extra bit.
      # With trailing bits removed, all powers of two have mantissa 1,
      # so this is easy to check for.
      if man == 1:
          bc = 1
      return sign, man, exp, bc
  
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 6 for calling a global function with example usage: _normalize(sign, man, exp, bc, prec, rnd) and returns: sign,  man,  exp,  bc, fzero