#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#include <mex.h>

#include <mexhelper.h>
#include "lineq.ci"

extern "C"
{
void mexFunction (int nresults, mxArray **arrresults, int nargs,
	const mxArray **arrargs)
{
	matrix<double> arg0 = matrix<double>();
	if (nargs > 0)
		mexConvert(arrargs[0], arg0);
	myVector<double> arg1 = myVector<double>(1);
	if (nargs > 1)
		mexConvert(arrargs[1], arg1);


	try
	{
		initEnv();
		myVector<double> res = LinEq::solve<double>(arg0,arg1);

		if (nresults > 0)
		{
			mexConvert(res, arrresults[0]);
		}
	}
	catch (ctl::exception &e)
	{
		std::cerr << e << "\n";
	}
}
}
