#include #include #include #include using std::vector; using std::max_element; using std::max; Max::Max () : Function ("max", 0) { } void Max::evaluate (SArray &value, vector < SArray const *>const &args) const { double ans; for (unsigned int i = 0; i < args.size(); ++i) { double const *argi = args[i]->value (); long len = args[i]->length (); double maxi = *max_element(argi, argi + len); if (i == 0) { ans = maxi; } else { ans = max(ans, maxi); } } value.setValue(&ans, 1); } bool Max::checkParameterDim (vector const &args) const { return true; } Index Max::dim (vector const &args) const { return Index(1); } bool Max::isDiscreteValued(std::vector const &args) const { return allDiscrete(args); }