Exemplo n.º 1
0
  //(c) Chernysheva, TEST(Matrix, mulVecToMatrix)
  //------->>>>>>>>>-----------------
  // умножение вектор-строки на матрицу
  Polynom mulVecToMatrix(const Polynom& plA, const Matrix& mtB)
  {
    Polynom vec;
    if (mtB.CodeWord == Matrix::ON_COLUMN)
    {
      if (mtB.RowCount >= plA.getNumberBits())
      {
        for (uint j = 0; j < mtB.ColCount; j++)
        {
          uint sum = 0, elem, a, b;
          for (uint i = 0; i < plA.getNumberDigits(); i++)
          {
            elem =  plA.getDigit(i) & mtB.plMatrix[j]->getDigit(i);
            sum = sum ^ elem;
          }
          vec.setDigit(j, sum);
        }

        Polynom res;
        uint s = 0;
        for (uint j = 0; j < vec.getNumberDigits(); j++)
        {
          bool bit = 0;
          for (uint i = 0; i < vec.getDigitSizeInBits(); i++)
          {
            bit = bit  ^ vec.getBit(s);
            s++;
          }
          res.setBit(j, bit);
        }
        return res;
      }
    }
    vec = plA;
    return vec;
  }