rssoft  0.0.0
Reed-Solomon codes library with soft decision decoding
rssoft::gf::GFq_BivariateMonomial Class Reference

Bivariate Monomial class. More...

#include <GFq_BivariateMonomial.h>

List of all members.

Public Member Functions

 GFq_BivariateMonomial (const GFq_Element &coeff, unsigned int eX, unsigned int eY)
 GFq_BivariateMonomial (const GFq_Element &coeff, const GFq_BivariateMonomialExponents &exponents)
 GFq_BivariateMonomial (const GFq_BivariateMonomialKeyValueRepresentation &monomial_rep)
const GFq_Elementcoeff () const
unsigned int eX () const
unsigned int eY () const
const
GFq_BivariateMonomialExponents
get_exponents () const
unsigned int wdeg (unsigned int wX, unsigned int wY) const
unsigned int wdeg (const std::pair< unsigned int, unsigned int > &weights) const
GFq_BivariateMonomialoperator= (const GFq_BivariateMonomial &monomial)
GFq_BivariateMonomialoperator+= (const GFq_BivariateMonomial &monomial)
GFq_BivariateMonomialoperator+= (const GFq_Element &gfe)
GFq_BivariateMonomialoperator-= (const GFq_BivariateMonomial &monomial)
GFq_BivariateMonomialoperator-= (const GFq_Element &gfe)
GFq_BivariateMonomialoperator*= (const GFq_BivariateMonomial &monomial)
GFq_BivariateMonomialoperator*= (const GFq_Element &gfe)
GFq_BivariateMonomialoperator/= (const GFq_BivariateMonomial &monomial)
GFq_BivariateMonomialoperator/= (const GFq_Element &gfe)

Detailed Description

Bivariate Monomial class.


Constructor & Destructor Documentation

rssoft::gf::GFq_BivariateMonomial::GFq_BivariateMonomial ( const GFq_Element coeff,
unsigned int  eX,
unsigned int  eY 
)
                                                                                                       :
        std::pair<GFq_BivariateMonomialExponents, GFq_Element>(GFq_BivariateMonomialExponents(eX, eY), coeff)
{}
                                                                                                                      :
        std::pair<GFq_BivariateMonomialExponents, GFq_Element>(exponents, coeff)
{}
                                                                                                            :
        std::pair<GFq_BivariateMonomialExponents, GFq_Element>(monomial_rep)
{}

Member Function Documentation

        {
                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;
        }
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);
        }

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Friends Defines