/// <summary> /// /// </summary> /// <param name="other"></param> /// <returns></returns> public VectorXD Solve(VectorXD other, DenseSolverType denseSolverType = DenseSolverType.ColPivHouseholderQR) { double[] vout = new double[Rows]; switch (denseSolverType) { case DenseSolverType.PartialPivLU: EigenDenseUtilities.SolvePartialPivLU(GetValues(), Rows, Cols, other.GetValues(), vout); break; case DenseSolverType.FullPivLU: EigenDenseUtilities.SolveFullPivLU(GetValues(), Rows, Cols, other.GetValues(), vout); break; case DenseSolverType.LDLT: EigenDenseUtilities.SolveLDLT(GetValues(), Rows, Cols, other.GetValues(), vout); break; case DenseSolverType.LLT: EigenDenseUtilities.SolveLLT(GetValues(), Rows, Cols, other.GetValues(), vout); break; case DenseSolverType.ColPivHouseholderQR: default: EigenDenseUtilities.SolveColPivHouseholderQr(GetValues(), Rows, Cols, other.GetValues(), vout); break; } return(new VectorXD(vout)); }