![]() |
rssoft
0.0.0
Reed-Solomon codes library with soft decision decoding
|
Bivariate Monomial class. More...
#include <GFq_BivariateMonomial.h>
Bivariate Monomial class.
rssoft::gf::GFq_BivariateMonomial::GFq_BivariateMonomial | ( | const GFq_Element & | coeff, |
unsigned int | eX, | ||
unsigned int | eY | ||
) |
rssoft::gf::GFq_BivariateMonomial::GFq_BivariateMonomial | ( | const GFq_Element & | coeff, |
const GFq_BivariateMonomialExponents & | exponents | ||
) |
: std::pair<GFq_BivariateMonomialExponents, GFq_Element>(exponents, coeff) {}
rssoft::gf::GFq_BivariateMonomial::GFq_BivariateMonomial | ( | const GFq_BivariateMonomialKeyValueRepresentation & | monomial_rep | ) |
: std::pair<GFq_BivariateMonomialExponents, GFq_Element>(monomial_rep) {}
const GFq_Element& rssoft::gf::GFq_BivariateMonomial::coeff | ( | ) | const [inline] |
{
return second;
}
unsigned int rssoft::gf::GFq_BivariateMonomial::eX | ( | ) | const [inline] |
{
return first.first;
}
unsigned int rssoft::gf::GFq_BivariateMonomial::eY | ( | ) | const [inline] |
{
return first.second;
}
const GFq_BivariateMonomialExponents& rssoft::gf::GFq_BivariateMonomial::get_exponents | ( | ) | const [inline] |
{
return first;
}
GFq_BivariateMonomial & rssoft::gf::GFq_BivariateMonomial::operator*= | ( | const GFq_BivariateMonomial & | monomial | ) |
{ second *= monomial.second; first.first += monomial.first.first; first.second += monomial.first.second; return *this; }
GFq_BivariateMonomial & rssoft::gf::GFq_BivariateMonomial::operator*= | ( | const GFq_Element & | gfe | ) |
{ second *= gfe; return *this; }
GFq_BivariateMonomial & rssoft::gf::GFq_BivariateMonomial::operator+= | ( | const GFq_BivariateMonomial & | monomial | ) |
{ if (first != monomial.first) { throw GF_Exception("Cannot add monomials of different exponents"); } else { second += monomial.second; } return *this; }
GFq_BivariateMonomial & rssoft::gf::GFq_BivariateMonomial::operator+= | ( | const GFq_Element & | gfe | ) |
{ second += gfe; return *this; }
GFq_BivariateMonomial & rssoft::gf::GFq_BivariateMonomial::operator-= | ( | const GFq_BivariateMonomial & | monomial | ) |
{ *this += monomial; return *this; }
GFq_BivariateMonomial & rssoft::gf::GFq_BivariateMonomial::operator-= | ( | const GFq_Element & | gfe | ) |
{ *this += gfe; return *this; }
GFq_BivariateMonomial & rssoft::gf::GFq_BivariateMonomial::operator/= | ( | const GFq_BivariateMonomial & | monomial | ) |
{ if (monomial.second == 0) { throw GF_Exception("Zero divide monomial"); } second /= monomial.second; if (first.first - monomial.first.first < 0) { throw GF_Exception("Cannot divide by a monomial with a higher degree in X"); } else if (first.second - monomial.first.second < 0) { throw GF_Exception("Cannot divide by a monomial with a higher degree in Y"); } else { first.first -= monomial.first.first; first.second -= monomial.first.second; } return *this; }
GFq_BivariateMonomial & rssoft::gf::GFq_BivariateMonomial::operator/= | ( | const GFq_Element & | gfe | ) |
{ if (gfe == 0) { throw GF_Exception("Zero divide monomial"); } second /= gfe; return *this; }
GFq_BivariateMonomial & rssoft::gf::GFq_BivariateMonomial::operator= | ( | const GFq_BivariateMonomial & | monomial | ) |
{ *this = monomial; return *this; }
unsigned int rssoft::gf::GFq_BivariateMonomial::wdeg | ( | unsigned int | wX, |
unsigned int | wY | ||
) | const [inline] |
{
return first.wdeg(wX, wY);
}
unsigned int rssoft::gf::GFq_BivariateMonomial::wdeg | ( | const std::pair< unsigned int, unsigned int > & | weights | ) | const [inline] |
{
return first.wdeg(weights);
}