code: def unpack_float16(src):
      
      bc = BitConsumer(src)
      sign = bc.u_get(1)
      exponent = bc.u_get(5)
      mantissa = bc.u_get(10)
      exponent -= 16
      mantissa /= 2 ** 10
      num = (-1 ** sign) * mantissa * (10 ** exponent)
      return num
docs: Read and unpack a 16b float.
  
      The structure is:
      - 1 bit for the sign
      . 5 bits for the exponent, with an exponent bias of 16
      - 10 bits for the mantissa