/* Reverses the function. Equivalent to doing 

   x.reverse!
   y.reverse!
  
  excepted that it is faster (though not *much* faster).
*/
static VALUE function_reverse(VALUE self)
{
  long len = function_sanity_check(self);
  double *xs = Dvector_Data_for_Write(get_x_vector(self),NULL);
  double *ys = Dvector_Data_for_Write(get_y_vector(self),NULL);
  
  double *xe = xs+len-1;
  double *ye = ys+len-1;
  double tmp;
  long i;
  for(i = 0; i < len/2; i++, xs++, ys++, xe--, ye--) {
    tmp = *xe; *xe = *xs; *xs = tmp;
    tmp = *ye; *ye = *ys; *ys = tmp;
  }
  return self;
}