#include #include #include #include #include using std::vector; using std::sort; using std::logic_error; Sort::Sort () : Function ("sort", 1) { } void Sort::evaluate (SArray & value, vector const &args) const { double const *arg1 = args[0]->value (); long len = args[0]->length (); double *copy = new double[len]; for (long i = 0; i < len; ++i) { copy[i] = arg1[i]; } sort(copy, copy + len); value.setValue(copy, len); delete [] copy; } Index Sort::dim (vector const &args) const { return args[0]->dim(true); } bool Sort::checkParameterDim (vector const &args) const { return args[0]->ndim(true) == 1; } bool Sort::isDiscreteValued(vector const &args) const { return allDiscrete(args); }