#include <functions/Mexp.h>
#include <matrix/matexp.h>
#include <sarray/SArray.h>
using std::vector;
Mexp::Mexp()
: Function("mexp",1)
{
}
void
Mexp::evaluate (SArray &value, vector <SArray const *> const &args) const
{
int n = args[0]->dim(true)[0];
int N = args[0]->length();
double *expmat = new double[N];
MatrixExpPade(expmat, args[0]->value(), n, 1);
value.setValue(expmat, N);
delete [] expmat;
}
Index Mexp::dim (vector <SArray const *> const &args) const
{
return args[0]->dim(true);
}
bool Mexp::checkParameterDim (vector <SArray const *> const &args) const
{
Index const &dim = args[0]->dim(true);
return (dim.size() == 2) && (dim[0] == dim[1]);
}
syntax highlighted by Code2HTML, v. 0.9.1