Example #1
0
        /// <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));
                }
            }
        }
Example #2
0
        /// <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 _));
                }
            }
        }
Example #3
0
        /// <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));
                    }
                }
            }
        }