/* 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; }