#include <config.h>
#include <functions/SD.h>
#include <sarray/SArray.h>
#include <cmath>
using std::vector;
using std::sqrt;
SD::SD ()
: ScalarFunc ("sd", 1)
{
}
double
SD::eval (vector < SArray const *>const &args) const
{
double const *arg0 = args[0]->value ();
long len = args[0]->length ();
double svalue = 0;
if (len > 1)
{
long i;
double sum = 0;
for (i = 0; i < len; i++)
{
sum += arg0[i];
}
double mean = sum / len;
double var = 0;
for (i = 0; i < len; i++)
{
var += (arg0[i] - mean) * (arg0[i] - mean);
}
svalue = sqrt (var / len);
}
return svalue;
}
bool SD::checkParameterDim (vector <SArray const *> const &args) const
{
return args[0]->length() >= 2;
}
syntax highlighted by Code2HTML, v. 0.9.1