Looking through glibc sources I run against such a code:
  double
erand48 (xsubi)
     unsigned short int xsubi[3];
{
  double result;
  (void) __erand48_r (xsubi, &__libc_drand48_data, &result);
  return result;
}
Could you explain what does that xsubi declaration between function's header and body mean?
   unsigned short int xsubi[3];
The same thing is with drand48_r:
  int
drand48_r (buffer, result)
     struct drand48_data *buffer;
     double *result;
{
  return __erand48_r (buffer->__x, buffer, result);
}