⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 galoisfieldpolynomial.cpp

📁 心电图小波零树压缩演算法的研究
💻 CPP
📖 第 1 页 / 共 2 页
字号:
      {         poly.resize(0,GaloisFieldElement(gf,0));      }      return *this;   }   const GaloisFieldElement& GaloisFieldPolynomial::operator[](const unsigned int& term) const   {      assert(term < poly.size());      return poly[term];   }   GaloisFieldElement& GaloisFieldPolynomial::operator[](const unsigned int& term)   {      assert(term < poly.size());      return poly[term];   }   GaloisFieldElement GaloisFieldPolynomial::operator()(const GaloisFieldElement& value)   {      GaloisFieldElement result(gf,0);      if (poly.size() > 0)      {         result = poly[poly.size() - 1];         for(size_t i = poly.size() - 2; ((int)i) >= 0; i--)         {            result = poly[i] + (result * value);         }      }      return result;   }   const GaloisFieldElement GaloisFieldPolynomial::operator()(const GaloisFieldElement& value) const   {      GaloisFieldElement result(gf,0);      if (poly.size() > 0)      {         result = poly[poly.size() - 1];         for(size_t i = poly.size() - 2; static_cast<int>(i) >= 0; i--)         {            result = poly[i] + (result * value);         }      }      return result;   }   GaloisFieldElement GaloisFieldPolynomial::operator()(GFSymbol value)   {      return (*this)(GaloisFieldElement(gf,value));   }   const GaloisFieldElement GaloisFieldPolynomial::operator()(GFSymbol value) const   {      return (*this)(GaloisFieldElement(gf,value));   }   bool GaloisFieldPolynomial::operator==(const GaloisFieldPolynomial& polynomial) const   {      if (gf == polynomial.gf)      {         if (poly.size() != polynomial.poly.size())           return false;         else         {            for (unsigned int i = 0; i < poly.size(); i++)            {               if (poly[i] != polynomial.poly[i])                 return false;            }            return true;         }      }      else        return false;   }   bool GaloisFieldPolynomial::operator!=(const GaloisFieldPolynomial& polynomial) const   {      return !(*this == polynomial);   }   GaloisFieldPolynomial GaloisFieldPolynomial::derivative()   {      if ((*this).poly.size() > 1)      {         GaloisFieldPolynomial deriv(gf,deg());         for (unsigned int i = 0; i < poly.size() - 1; i++)         {            if (((i + 1) & 1) == 1)              deriv.poly[i] = poly[i + 1];            else              deriv.poly[i] = 0;         }         simplify(deriv);         return deriv;      }      return GaloisFieldPolynomial(gf,0);   }   void GaloisFieldPolynomial::simplify()   {      simplify(*this);   }   void GaloisFieldPolynomial::simplify(GaloisFieldPolynomial& polynomial)   {      if (poly.size() > 0)      {         size_t last = polynomial.poly.size() - 1;         while((last >= 0) && (polynomial.poly.size() > 0))         {            if (polynomial.poly[last] == 0)              polynomial.poly.pop_back();            else              break;            last = polynomial.poly.size() - 1;         }      }   }   GaloisFieldPolynomial operator+(const GaloisFieldPolynomial& a, const GaloisFieldPolynomial& b)   {      GaloisFieldPolynomial result = a;      result += b;      return result;   }   GaloisFieldPolynomial operator + (const GaloisFieldPolynomial& a, const GaloisFieldElement& b)   {      GaloisFieldPolynomial result = a;      result += b;      return result;   }   GaloisFieldPolynomial operator + (const GaloisFieldElement& a, const GaloisFieldPolynomial& b)   {      GaloisFieldPolynomial result = b;      result += a;      return result;   }   GaloisFieldPolynomial operator + (const GaloisFieldPolynomial& a, const GFSymbol& b)   {      return a + GaloisFieldElement(a.field(),b);   }   GaloisFieldPolynomial operator + (const GFSymbol& a, const GaloisFieldPolynomial& b)   {      return b + GaloisFieldElement(b.field(),a);   }   GaloisFieldPolynomial operator - (const GaloisFieldPolynomial& a, const GaloisFieldPolynomial& b)   {      GaloisFieldPolynomial result = a;      result -= b;      return result;   }   GaloisFieldPolynomial operator - (const GaloisFieldPolynomial& a, const GaloisFieldElement& b)   {      GaloisFieldPolynomial result = a;      result -= b;      return result;   }   GaloisFieldPolynomial operator - (const GaloisFieldElement& a, const GaloisFieldPolynomial& b)   {      GaloisFieldPolynomial result = b;      result -= a;      return result;   }   GaloisFieldPolynomial operator - (const GaloisFieldPolynomial& a, const GFSymbol& b)   {      return a - GaloisFieldElement(a.field(),b);   }   GaloisFieldPolynomial operator - (const GFSymbol& a, const GaloisFieldPolynomial& b)   {      return b - GaloisFieldElement(b.field(),a);   }   GaloisFieldPolynomial operator * (const GaloisFieldPolynomial& a, const GaloisFieldPolynomial& b)   {      GaloisFieldPolynomial result = a;      result *= b;      return result;   }   GaloisFieldPolynomial operator * (const GaloisFieldElement& a, const GaloisFieldPolynomial& b)   {      GaloisFieldPolynomial result = b;      result *= a;      return result;   }   GaloisFieldPolynomial operator * (const GaloisFieldPolynomial& a, const GaloisFieldElement& b)   {      GaloisFieldPolynomial result = a;      result *= b;      return result;   }   GaloisFieldPolynomial operator / (const GaloisFieldPolynomial& a, const GaloisFieldPolynomial& b)   {      GaloisFieldPolynomial result = a;      result /= b;      return result;   }   GaloisFieldPolynomial operator / (const GaloisFieldPolynomial& a, const GaloisFieldElement& b)   {      GaloisFieldPolynomial result = a;      result /= b;      return result;   }   GaloisFieldPolynomial operator % (const GaloisFieldPolynomial& a, const GaloisFieldPolynomial& b)   {      GaloisFieldPolynomial result = a;      result %= b;      return result;   }   GaloisFieldPolynomial operator % (const GaloisFieldPolynomial& a, const unsigned int& power)   {      GaloisFieldPolynomial result = a;      result %= power;      return result;   }   GaloisFieldPolynomial operator ^ (const GaloisFieldPolynomial& a, const int& n)   {      GaloisFieldPolynomial result = a;      result ^= n;      return result;   }   GaloisFieldPolynomial operator<<(const GaloisFieldPolynomial& a, const unsigned int& n)   {      GaloisFieldPolynomial result = a;      result <<= n;      return result;   }   GaloisFieldPolynomial operator>>(const GaloisFieldPolynomial& a, const unsigned int& n)   {      GaloisFieldPolynomial result = a;      result >>= n;      return result;   }   GaloisFieldPolynomial gcd(const GaloisFieldPolynomial& a, const GaloisFieldPolynomial& b)   {      if ((*a.field()) == (*b.field()))      {         if ((!a.valid()) && (!b.valid())) return GaloisFieldPolynomial();         if (!a.valid()) return b;         if (!b.valid()) return a;         GaloisFieldPolynomial x = a % b;         GaloisFieldPolynomial y = b;         GaloisFieldPolynomial z = x;         while ((z = y % x).valid())         {            y = x;            x = z;         }         return x;      }      else        return GaloisFieldPolynomial();   }   std::ostream& operator << (std::ostream& os, const GaloisFieldPolynomial& polynomial)   {      if (polynomial.deg() >= 0)      {/*         for (unsigned int i = 0; i < polynomial.poly.size(); i++)         {            os << polynomial.poly[i].index()               << ((i != (polynomial.deg())) ? " " : "");         }         std::cout << " poly form: ";*/         for (unsigned int i = 0; i < polynomial.poly.size(); i++)         {            os << polynomial.poly[i].poly()               << " "               << "x^"               << i               << ((i != (polynomial.deg())) ? " + " : "");         }      }      return os;   }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -