void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{

  using namespace FortranLinalg;

    char * filename = mxArrayToString(prhs[0]);
    
    
    DenseMatrix<Precision> in = LinalgIO<Precision>::readMatrix(filename);
    
    mxArray *lhs[1];

    lhs[0] = mxCreateNumericMatrix(in.M(), in.N(), CLASS, mxREAL);

    Precision *out = (Precision*) mxGetPr(lhs[0]);
    

    memcpy(out, in.data(), in.M()*in.N()*sizeof(Precision));

    plhs[0] = lhs[0]; 

    

    in.deallocate();
      
    mxFree(filename);
    
    return;
}