#include <config.h>
#include <functions/InProd.h>
#include <sarray/SArray.h>
#include <sarray/Range.h>
using std::vector;
InProd::InProd () : ScalarFunc ("inprod", 2)
{
}
double
InProd::eval (vector <SArray const *> const &args) const
{
double const *arg1 = args[0]->value ();
double const *arg2 = args[1]->value ();
long len = args[0]->length ();
double svalue = 0;
for (long i = 0; i < len; i++)
{
svalue += arg1[i] * arg2[i];
}
return svalue;
}
bool InProd::checkParameterDim (vector <SArray const*> const &args) const
{
return (args[0]->dim(true) == args[1]->dim(true));
}
bool InProd::isDiscreteValued(std::vector<SArray const *> const &args) const
{
return (args[0]->isDiscreteValued() && args[1]->isDiscreteValued());
}
syntax highlighted by Code2HTML, v. 0.9.1