#include <config.h>
#include <functions/Min.h>
#include <sarray/SArray.h>
#include <algorithm>
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 <SArray const *> const &args) const
{
return true;
}
Index Min::dim (vector <SArray const *> const &args) const
{
return Index(1);
}
bool Min::isDiscreteValued(std::vector<SArray const *> const &args) const
{
return allDiscrete(args);
}
syntax highlighted by Code2HTML, v. 0.9.1