#include #include #include #include using std::min_element; using std::min; using std::vector; Min::Min () : Function ("min", 0) { } void Min::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 mini = *min_element(argi, argi + len); if (i == 0) { ans = mini; } else { ans = min(ans, mini); } } value.setValue(&ans, 1); } bool Min::checkParameterDim (vector const &args) const { return true; } Index Min::dim (vector const &args) const { return Index(1); } bool Min::isDiscreteValued(std::vector const &args) const { return allDiscrete(args); }