示例#1
0
        /// <summary>
        ///     Returns the subtraction <see cref="IJuggedMatrix{T}"/> <paramref name="first"/> and
        ///     <see cref="IJuggedMatrix{T}"/> <paramref name="second"/>
        /// </summary>
        /// <param name="first">First matrix</param>
        /// <param name="second">Second matrix</param>
        /// <returns>
        ///     New <see cref="IJuggedMatrix{T}"/> - the result subtraction of matrices <paramref name="first"/> and
        ///     <paramref name="second"/>
        /// </returns>
        public static IJuggedMatrix <int> Sub(this IJuggedMatrix <int> first, IJuggedMatrix <int> second)
        {
            if (first.RowsCount != second.RowsCount)
            {
                throw new
                      MatrixInvalidOperationException("Can't sub second JuggedMatrix to first. Count of rows should be the same");
            }

            for (var i = 0; i < first.RowsCount; i++)
            {
                if (first.ElementsInRow(i) != second.ElementsInRow(i))
                {
                    throw new
                          MatrixInvalidOperationException("Can't add second JuggedMatrix to first. Count of columns should be the same");
                }
            }

            var juggedMatrix = new JuggedMatrix <int>(first.RowsCount,
                                                      first.CountOnEachRow()
                                                      .ToArray());

            for (var i = 0; i < first.RowsCount; i++)
            {
                for (var j = 0; j < first.ElementsInRow(i); j++)
                {
                    juggedMatrix[i, j] = first[i, j] - second[i, j];
                }
            }

            return(juggedMatrix);
        }
示例#2
0
        /// <summary>
        ///     Returns the multiplication <see cref="IJuggedMatrix{T}"/> <paramref name="matrix"/> on <see cref="decimal"/>
        ///     <paramref name="number"/>
        /// </summary>
        /// <param name="matrix">First</param>
        /// <param name="number"></param>
        /// <returns>
        ///     New <see cref="IJuggedMatrix{T}"/> - the result multiplication of matrix <paramref name="matrix"/> on
        ///     <paramref name="number"/>
        /// </returns>
        public static IJuggedMatrix <decimal> MulOnNumber(this IJuggedMatrix <decimal> matrix, decimal number)
        {
            var juggedMatrix = new JuggedMatrix <decimal>(matrix.RowsCount,
                                                          matrix.CountOnEachRow()
                                                          .ToArray());

            for (var i = 0; i < matrix.RowsCount; i++)
            {
                for (var j = 0; j < matrix.ElementsInRow(i); j++)
                {
                    juggedMatrix[i, j] = matrix[i, j] * number;
                }
            }

            return(juggedMatrix);
        }
示例#3
0
        /// <summary>
        ///     Returns the multiplication <see cref="IJuggedMatrix{T}"/> <paramref name="matrix"/> on <see cref="int"/>
        ///     <paramref name="number"/>
        /// </summary>
        /// <param name="matrix">First</param>
        /// <param name="number"></param>
        /// <returns>
        ///     New <see cref="IJuggedMatrix{T}"/> - the result multiplication of matrix <paramref name="matrix"/> on
        ///     <paramref name="number"/>
        /// </returns>
        public static IJuggedMatrix <string> MulOnNumber(this IJuggedMatrix <string> matrix, int number)
        {
            var juggedMatrix = new JuggedMatrix <string>(matrix.RowsCount,
                                                         matrix.CountOnEachRow()
                                                         .ToArray());

            for (var i = 0; i < matrix.RowsCount; i++)
            {
                for (var j = 0; j < matrix.ElementsInRow(i); j++)
                {
                    juggedMatrix[i, j] = matrix[i, j]
                                         .Concat(number);
                }
            }

            return(juggedMatrix);
        }
示例#4
0
        /// <summary>
        ///     Returns the multiplication <see cref="IJuggedMatrix{T}"/> <paramref name="juggedMatrix"/> on <see cref="long"/>
        ///     <paramref name="number"/>
        /// </summary>
        /// <param name="juggedMatrix">First</param>
        /// <param name="number"></param>
        /// <returns>
        ///     New <see cref="IJuggedMatrix{T}"/> - the result multiplication of matrix <paramref name="juggedMatrix"/> on
        ///     <paramref name="number"/>
        /// </returns>
        public static IJuggedMatrix <long?> MulOnNumber(this IJuggedMatrix <long?> juggedMatrix, long number)
        {
            var newJuggedMatrix =
                new JuggedMatrix <long?>(juggedMatrix.RowsCount,
                                         juggedMatrix.CountOnEachRow()
                                         .ToArray());

            for (var i = 0; i < juggedMatrix.RowsCount; i++)
            {
                for (var j = 0; j < juggedMatrix.ElementsInRow(i); j++)
                {
                    if (juggedMatrix[i, j] != null)
                    {
                        newJuggedMatrix[i, j] = juggedMatrix[i, j]
                                                .Value
                                                * number;
                    }
                }
            }

            return(newJuggedMatrix);
        }