else if (exponent == MIN_EXP - 2
else if (exponent == DENORM_EXP
round_and_return (mp_limb_t *retval, int exponent, int negative,		  mp_limb_t round_limb, mp_size_t round_bit, int more_bits){  if (exponent < MIN_EXP - 1)    {      mp_size_t shift = MIN_EXP - 1 - exponent;      if (shift > MANT_DIG)	{	  __set_errno (EDOM);	  return 0.0;	}      more_bits |= (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0;      if (shift == MANT_DIG)	/* This is a special case to handle the very seldom case where	   the mantissa will be empty after the shift.  */	{	  int i;	  round_limb = retval[RETURN_LIMB_SIZE - 1];	  round_bit = BITS_PER_MP_LIMB - 1;	  for (i = 0; i < RETURN_LIMB_SIZE; ++i)	    more_bits |= retval[i] != 0;	  MPN_ZERO (retval, RETURN_LIMB_SIZE);	}      else if (shift >= BITS_PER_MP_LIMB)	{	  int i;	  round_limb = retval[(shift - 1) / BITS_PER_MP_LIMB];	  round_bit = (shift - 1) % BITS_PER_MP_LIMB;	  for (i = 0; i < (shift - 1) / BITS_PER_MP_LIMB; ++i)	    more_bits |= retval[i] != 0;	  more_bits |= ((round_limb & ((((mp_limb_t) 1) << round_bit) - 1))			!= 0);	  (void) __mpn_rshift (retval, &retval[shift / BITS_PER_MP_LIMB],                               RETURN_LIMB_SIZE - (shift / BITS_PER_MP_LIMB),                               shift % BITS_PER_MP_LIMB);          MPN_ZERO (&retval[RETURN_LIMB_SIZE - (shift / BITS_PER_MP_LIMB)],                    shift / BITS_PER_MP_LIMB);	}      else if (shift > 0)	{          round_limb = retval[0];          round_bit = shift - 1;	  (void) __mpn_rshift (retval, retval, RETURN_LIMB_SIZE, shift);	}      exponent = MIN_EXP - 2;    }  if ((round_limb & (((mp_limb_t) 1) << round_bit)) != 0      && (more_bits || (retval[0] & 1) != 0          || (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0))    {      mp_limb_t cy = __mpn_add_1 (retval, retval, RETURN_LIMB_SIZE, 1);      if (((MANT_DIG % BITS_PER_MP_LIMB) == 0 && cy) ||          ((MANT_DIG % BITS_PER_MP_LIMB) != 0 &&           (retval[RETURN_LIMB_SIZE - 1]            & (((mp_limb_t) 1) << (MANT_DIG % BITS_PER_MP_LIMB))) != 0))	{	  ++exponent;	  (void) __mpn_rshift (retval, retval, RETURN_LIMB_SIZE, 1);	  retval[RETURN_LIMB_SIZE - 1]	    |= ((mp_limb_t) 1) << ((MANT_DIG - 1) % BITS_PER_MP_LIMB);	}      else if (exponent == MIN_EXP - 2	       && (retval[RETURN_LIMB_SIZE - 1]		   & (((mp_limb_t) 1) << ((MANT_DIG - 1) % BITS_PER_MP_LIMB)))	       != 0)	  /* The number was denormalized but now normalized.  */	exponent = MIN_EXP - 1;    }  if (exponent > MAX_EXP)    return negative ? -FLOAT_HUGE_VAL : FLOAT_HUGE_VAL;  return MPN2FLOAT (retval, exponent, negative);}