*result = 0.0; for (i = 4 / sizeof (unsigned short int); i >= 0; --i) { double factor = ldexp (1.0, (i - 6) * sizeof (unsigned short int));
erand48_r (xsubi, buffer, result)     unsigned short int xsubi[3];     struct drand48_data *buffer;     double *result;{  int i;  /* Be generous for the arguments, detect some errors.  */  if (result == NULL)    {      errno = EFAULT;      return -1;    }  /* Compute next state.  */  if (__drand48_iterate (xsubi, buffer) < 0)    return -1;  *result = 0.0;  for (i = 4 / sizeof (unsigned short int); i >= 0; --i)    {      double factor = ldexp (1.0, (i - 6) * sizeof (unsigned short int));      *result += factor * (double) xsubi[i];    }  return 0;}