#include <config.h>
#include <functions/Inverse.h>
#include <matrix/matrix.h>
#include <sarray/SArray.h>

using std::vector;

Inverse::Inverse ():Function ("inverse", 1)
{
}

void
Inverse::evaluate (SArray & value, vector <SArray const *> const &args) const
{
  int n = args[0]->dim(true)[0];
  int N = args[0]->length();
  double *y = new double[N];
  inverse (y, args[0]->value(), n, false);
  value.setValue (y, N);
  delete y;
}

bool Inverse::checkParameterDim (vector <SArray const*> const &args) const
{
  Index const &dim = args[0]->dim(true);
  return dim.size() == 2 && dim[0] == dim[1];
}

Index Inverse::dim (vector <SArray const *> const &args) const
{
  return args[0]->dim(true);
}


syntax highlighted by Code2HTML, v. 0.9.1