/// <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); }
/// <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); }
/// <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); }
/// <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); }