n[0] = low;
{ n[0] = low; *nsize = 1; }
str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize,	    int *exponent){  /* Number of digits for actual limb.  */  int cnt = 0;  mp_limb_t low = 0;  mp_limb_t start;  *nsize = 0;  assert (digcnt > 0);  do    {      if (cnt == MAX_DIG_PER_LIMB)	{	  if (*nsize == 0)	    n[0] = low;	  else	    {	      mp_limb_t cy;	      cy = __mpn_mul_1 (n, n, *nsize, MAX_FAC_PER_LIMB);	      cy += __mpn_add_1 (n, n, *nsize, low);	      if (cy != 0)		n[*nsize] = cy;	    }	  ++(*nsize);	  cnt = 0;	  low = 0;	}      /* There might be thousands separators or radix characters in	 the string.  But these all can be ignored because we know the	 format of the number is correct and we have an exact number	 of characters to read.  */      while (*str < L_('0') || *str > L_('9'))	++str;      low = low * 10 + *str++ - L_('0');      ++cnt;    }  while (--digcnt > 0);  if (*exponent > 0 && cnt + *exponent <= MAX_DIG_PER_LIMB)    {      low *= _tens_in_limb[*exponent];      start = _tens_in_limb[cnt + *exponent];      *exponent = 0;    }  else    start = _tens_in_limb[cnt];  if (*nsize == 0)    {      n[0] = low;      *nsize = 1;    }  else    {      mp_limb_t cy;      cy = __mpn_mul_1 (n, n, *nsize, start);      cy += __mpn_add_1 (n, n, *nsize, low);      if (cy != 0)	n[(*nsize)++] = cy;    }  return str;}