示例#1
0
        public void MatrixOperationsJoinRowsIncorrectDimensions()
        {
            Matrix m1 = Setup.GetTestMatrix1();

            Assert.Throws <InvalidMatrixDimensionsException>(() => m1.Join(Setup.GetTestMatrix3(), MatrixDimension.Rows));
            Assert.Throws <InvalidMatrixDimensionsException>(() => Matrix.Join(Setup.GetTestMatrix1(), Setup.GetTestMatrix3(), MatrixDimension.Rows));
        }
        public void MatrixMultiplyTransposeByMatrixMatrixInvalidDimensions()
        {
            Matrix m1 = Setup.GetTestMatrix3();
            Matrix m2 = Setup.GetTestMatrix1();

            Assert.Throws <InvalidMatrixDimensionsException>(() => m1.MultiplyTransposeBy(m2));
            Assert.Throws <InvalidMatrixDimensionsException>(() => Matrix.MultiplyTransposeBy(m1, m2));
        }
示例#3
0
        public void MatrixElementOperationInvalidDimensions(IMatrixArithmetic arithmetic)
        {
            Matrix.Arithmetic = arithmetic;
            Matrix testMatrix1 = Setup.GetTestMatrix1();
            Matrix testMatrix3 = Setup.GetTestMatrix3();

            Assert.Throws <InvalidMatrixDimensionsException>(() => Matrix.ElementOperation(testMatrix1, testMatrix3, (a, b) => a + b));
            Matrix m1 = new Matrix(testMatrix1);

            Assert.Throws <InvalidMatrixDimensionsException>(() => m1.ElementOperation(testMatrix3, (a, b) => a + b));
        }
        public void MatrixSubtractMatrixMatrixInvalidDimensions(IMatrixArithmetic arithmetic)
        {
            Matrix.Arithmetic = arithmetic;
            Matrix testMatrix1 = Setup.GetTestMatrix1();
            Matrix testMatrix3 = Setup.GetTestMatrix3();

            Assert.Throws <InvalidMatrixDimensionsException>(() => Matrix.Subtract(testMatrix1, testMatrix3));
            Matrix m1 = new Matrix(testMatrix1);

            Assert.Throws <InvalidMatrixDimensionsException>(() => m1.Subtract(testMatrix3));
            Assert.Throws <InvalidMatrixDimensionsException>(() => testMatrix1 - testMatrix3);
        }
        public void MatrixMultiplyTransposeByMatrixSwapDimensionsMatrix()
        {
            Matrix m1       = Setup.GetTestMatrix3();
            Matrix m2       = Setup.GetTestMatrix1();
            Matrix expected = m1 * m2;

            Matrix test1 = Matrix.MultiplyTransposeBy(m1.Transpose(true), Setup.GetTestMatrix1());
            Matrix test2 = Setup.GetTestMatrix3().Transpose(true);

            test2.MultiplyTransposeBy(Setup.GetTestMatrix1());

            Assert.True(test1 == expected);
            Assert.True(test2 == expected);
        }
        public void MatrixOperationsReduceRowsAddTwoColumns()
        {
            Matrix m1 = Setup.GetTestMatrix3();

            m1.ReduceDimension(MatrixDimension.Rows, (x, y) => x + y);
            Matrix m2 = Matrix.ReduceDimension(Setup.GetTestMatrix3(), MatrixDimension.Rows, (x, y) => x + y);

            Matrix expected = new Matrix(new double[, ] {
                { 3.0 }, { 7.0 }, { 11.0 }
            });

            Assert.True(m1 == expected);
            Assert.True(m2 == expected);
        }
        public void MatrixOperationsReduceColumnsAddThreeRows()
        {
            Matrix m1 = Setup.GetTestMatrix3();

            m1.ReduceDimension(MatrixDimension.Columns, (x, y) => x + y);
            Matrix m2 = Matrix.ReduceDimension(Setup.GetTestMatrix3(), MatrixDimension.Columns, (x, y) => x + y);

            Matrix expected = new Matrix(new double[, ] {
                { 9.0, 12.0 }
            });

            Assert.True(m1 == expected);
            Assert.True(m2 == expected);
        }
示例#8
0
        public void MatrixRemoveRowsTwoInCentre()
        {
            Matrix m1 = Setup.GetTestMatrix3();
            Matrix m2 = Matrix.RemoveRows(Setup.GetTestMatrix3(), 1, 2);

            m1.RemoveRows(1, 2);

            Matrix expected = new Matrix(new double[, ] {
                { 1.0, 2.0 }
            });

            Assert.True(expected == m1);
            Assert.True(expected == m2);
        }
示例#9
0
        public void MatrixExtractRowsTwoRows()
        {
            Matrix m1 = Setup.GetTestMatrix3();
            Matrix m2 = Matrix.ExtractRows(Setup.GetTestMatrix3(), 1, 2);

            m1.ExtractRows(1, 2);

            Matrix expected = new Matrix(new double[, ] {
                { 3.0, 4.0 }, { 5.0, 6.0 }
            });

            Assert.True(expected == m1);
            Assert.True(expected == m2);
        }
        public void MatrixMultipyMatrixMatrixFluent(IMatrixArithmetic arithmetic)
        {
            Matrix.Arithmetic = arithmetic;
            Matrix testMatrix1 = Setup.GetTestMatrix1();
            Matrix testMatrix3 = Setup.GetTestMatrix3();

            Matrix m1 = new Matrix(testMatrix1);
            Matrix m2 = new Matrix(new double[, ] {
                { 22.0, 28.0 }, { 49.0, 64.0 }
            });
            Matrix expected = new Matrix(new double[, ] {
                { 1856.0, 2408.0 }, { 4214.0, 5468.0 }
            });

            m1.Multiply(testMatrix3).Multiply(m2);
            Assert.Equal(expected, m1);
        }
        public void MatrixMultiplyMatrixMatrix(IMatrixArithmetic arithmetic)
        {
            Matrix.Arithmetic = arithmetic;
            Matrix testMatrix1 = Setup.GetTestMatrix1();
            Matrix testMatrix3 = Setup.GetTestMatrix3();

            Matrix m1 = Matrix.Multiply(testMatrix1, testMatrix3);
            Matrix m2 = testMatrix1 * testMatrix3;
            Matrix m3 = new Matrix(testMatrix1);

            m3.Multiply(testMatrix3);

            Matrix expected = new Matrix(new double[, ] {
                { 22.0, 28.0 }, { 49.0, 64.0 }
            });

            Assert.Equal(expected, m1);
            Assert.Equal(expected, m2);
            Assert.Equal(expected, m3);
        }