public double[] SolveLinearSystemForwardEliminationAndBackSubstitution(double[] RightHandSide)
        {
            WriteToDisplay.WriteInfo("\n  Solving linear system using link-list storage method and PLU decomposition\n\n");
            WriteToDisplay.WriteInfo("   Number of equations = " + n.ToString() + "\n");

            StopWatchTimer Totaltime = new StopWatchTimer();

            Totaltime.StartTimer();

            StopWatchTimer timer = new StopWatchTimer();

            //rightHandSide = RightHandSide;
            //ScaleAllRowsAndRightHandSideAndRemoveZeros();
            //this.RemoveAllZeros();

            // PLU decomposition
            timer.StartTimer();
            //this.LUDecomposition();
            timer.StopTimer();
            WriteToDisplay.WriteInfo("   PLU decomposition time = " + timer.TimeElapsedInSeconds().ToString() + "\n");

            // Forward elimination
            timer.StartTimer();
            this.ForwardElimination(RightHandSide);
            timer.StopTimer();
            WriteToDisplay.WriteInfo("   Forward elimination time = " + timer.TimeElapsedInSeconds().ToString() + "\n");

            //Backward elimination
            timer.StartTimer();
            this.BackSubstitution();
            timer.StopTimer();
            WriteToDisplay.WriteInfo("   Backward elimination time = " + timer.TimeElapsedInSeconds().ToString() + "\n");

            // Determinant
            timer.StartTimer();
            this.CalculateDeterminant();
            timer.StopTimer();
            WriteToDisplay.WriteInfo("   Determinant time = " + timer.TimeElapsedInSeconds().ToString() + "\n");

            Totaltime.StopTimer();
            WriteToDisplay.WriteInfo("\n  Total time to solve = " + Totaltime.TimeElapsedInSeconds().ToString() + "\n\n");

            return(rightHandSide);
        }