TYPE smallest(TYPE values[], int length, int (*lessThan)(TYPE a, TYPE b))
{
  TYPE small = values[0];
  int i;
  for (i = 1; i < length; i++) {
    if ((*lessThan)(values[i], small))
      small = values[i];
  } /* for */
  return small;
} /* smallest */
