/// <summary> /// Multiplies matrix by some number /// </summary> /// <param name="number">Multiplier</param> public void MultiplyByNumber(IntegerBitset number) { if (number == null) { throw new ArgumentNullException(nameof(number)); } for (var i = 0; i < _columns; i++) { for (var j = 0; j < _rows; j++) { Matrix[i][j] = new IntegerBitset( IntegerBitsetUtils.BitArrayTruncate(IntegerBitsetUtils.BitArrayMultiply( Matrix[i][j].GetBitArray(), number.GetBitArray(), new BitArray(1, false), out _), 32)); } } }
/// <summary> /// Adds IntegerBitsetMatrix to this /// </summary> public void AddMatrix(IntegerBitsetMatrix additionMatrix) { if (additionMatrix == null) { throw new ArgumentNullException(nameof(additionMatrix)); } if (_rows != additionMatrix.GetRows() || _columns != additionMatrix.GetColumns()) { throw new OperationCanceledException("Sizes of matrix are different"); } for (var i = 0; i < _columns; i++) { for (var j = 0; j < _rows; j++) { Matrix[i][j] = new IntegerBitset(IntegerBitsetUtils.BitArrayAdder(Matrix[i][j].GetBitArray(), additionMatrix.Matrix[i][j].GetBitArray(), new BitArray(1, false), out _)); } } }
/// <summary> /// Raises matrix to some power /// </summary> /// <param name="power">Power</param> public void RaiseMatrixToPower(IntegerBitset power) { if (power == null) { throw new ArgumentNullException(nameof(power)); } for (var i = 0; i < _columns; i++) { for (var j = 0; j < _rows; j++) { for (var k = 1; k < power.GetInt32(); k++) { Matrix[i][j] = new IntegerBitset( IntegerBitsetUtils.BitArrayTruncate(IntegerBitsetUtils.BitArrayMultiply( Matrix[i][j].GetBitArray(), Matrix[i][j].GetBitArray(), new BitArray(1, false), out _), 32)); } } } }