public void MatrixMultiplyByOwnTransposeMatrix()
        {
            Matrix m1       = Setup.GetTestMatrix1();
            Matrix m2       = Setup.GetTestMatrix1Transposed();
            Matrix expected = m1 * m2;

            Matrix test1 = Setup.GetTestMatrix1().MultiplyByOwnTranspose();
            Matrix test2 = Matrix.MultiplyByOwnTranspose(Setup.GetTestMatrix1());

            Assert.True(expected == test1);
            Assert.True(expected == test2);
        }
        public void MatrixTransposePermanentlyTallMatrix()
        {
            Matrix testMatrix1           = Setup.GetTestMatrix1();
            Matrix testMatrix1Transposed = Setup.GetTestMatrix1Transposed();

            Matrix m1 = new Matrix(testMatrix1Transposed);
            Matrix m2 = Matrix.Transpose(m1);

            m1.Transpose(false);
            Assert.Equal(testMatrix1Transposed.Rows, m1.Columns);
            Assert.Equal(testMatrix1Transposed.Columns, m1.Rows);
            Assert.True(m1 == testMatrix1);
            Assert.Equal(1.0, m1[0, 0]); Assert.Equal(1.0, m1[0]);
            Assert.Equal(2.0, m1[0, 1]); Assert.Equal(2.0, m1[1]);
            Assert.Equal(3.0, m1[0, 2]); Assert.Equal(3.0, m1[2]);
            Assert.Equal(4.0, m1[1, 0]); Assert.Equal(4.0, m1[3]);
            Assert.Equal(5.0, m1[1, 1]); Assert.Equal(5.0, m1[4]);
            Assert.Equal(6.0, m1[1, 2]); Assert.Equal(6.0, m1[5]);

            Assert.True(m1 == m2);
        }