/// <summary>
        /// Run example
        /// </summary>
        /// <seealso cref="http://en.wikipedia.org/wiki/Triangular_matrix">Triangular matrix</seealso>
        public void Run()
        {
            // Format matrix output to console
            var formatProvider = (CultureInfo)CultureInfo.InvariantCulture.Clone();
            formatProvider.TextInfo.ListSeparator = " ";

            // Create square matrix
            var matrix = new DenseMatrix(10);
            var k = 0;
            for (var i = 0; i < matrix.RowCount; i++)
            {
                for (var j = 0; j < matrix.ColumnCount; j++)
                {
                    matrix[i, j] = k++;
                }
            }

            Console.WriteLine(@"Initial square matrix");
            Console.WriteLine(matrix.ToString("#0.00\t", formatProvider));
            Console.WriteLine();

            // 1. Retrieve a new matrix containing the lower triangle of the matrix
            var lower = matrix.LowerTriangle();

            // Puts the lower triangle of the matrix into the result matrix.
            matrix.LowerTriangle(lower);
            Console.WriteLine(@"1. Lower triangle of the matrix");
            Console.WriteLine(lower.ToString("#0.00\t", formatProvider));
            Console.WriteLine();

            // 2. Retrieve a new matrix containing the upper triangle of the matrix
            var upper = matrix.UpperTriangle();

            // Puts the upper triangle of the matrix into the result matrix.
            matrix.UpperTriangle(lower);
            Console.WriteLine(@"2. Upper triangle of the matrix");
            Console.WriteLine(upper.ToString("#0.00\t", formatProvider));
            Console.WriteLine();

            // 3. Retrieve a new matrix containing the strictly lower triangle of the matrix
            var strictlylower = matrix.StrictlyLowerTriangle();

            // Puts the strictly lower triangle of the matrix into the result matrix.
            matrix.StrictlyLowerTriangle(strictlylower);
            Console.WriteLine(@"3. Strictly lower triangle of the matrix");
            Console.WriteLine(strictlylower.ToString("#0.00\t", formatProvider));
            Console.WriteLine();

            // 4. Retrieve a new matrix containing the strictly upper triangle of the matrix
            var strictlyupper = matrix.StrictlyUpperTriangle();

            // Puts the strictly upper triangle of the matrix into the result matrix.
            matrix.StrictlyUpperTriangle(strictlyupper);
            Console.WriteLine(@"4. Strictly upper triangle of the matrix");
            Console.WriteLine(strictlyupper.ToString("#0.00\t", formatProvider));
            Console.WriteLine();
        }