CoCoALib-0.9905 date: 23 May 2007

CoCoA::DistrMPoly Class Reference

Implementation of "clean" polynomials. More...

#include <DistrMPoly.H>

List of all members.

Public Member Functions

 DistrMPoly (const ring &, const PPMonoid &, MemPool &)
 DistrMPoly (const DistrMPoly &copy)
 ~DistrMPoly ()
DistrMPolyoperator= (const DistrMPoly &rhs)
DistrMPolyoperator= (long rhs)
DistrMPolyoperator= (const ZZ &rhs)
summand * myCopySummand (const summand *original) const
void myAssignZero ()
bool IsEqual (const summand *const lhs, const summand *const rhs) const
void myDeleteLM ()
void myAddMul (const DistrMPoly &h, const DistrMPoly &g, bool SkipLMg)
void myWeylAddMul (const DistrMPoly &h, const DistrMPoly &g)
void myReductionStep (const DistrMPoly &g)
void myReductionStepGCD (const DistrMPoly &g, RefRingElem fscale)
void myAddClear (DistrMPoly &g)
void myAppendClear (DistrMPoly &g)
void myMulByCoeff (RingElemConstRawPtr rawc)
void myDivByCoeff (RingElemConstRawPtr rawc)
void myMulByPP (PPMonoidElemConstRawPtr rawpp)
void myWeylMul (PPMonoidElemConstRawPtr rawpp)
void myPushFront (RingElemConstRawPtr rawc, const std::vector< long > &expv)
void myPushBack (RingElemConstRawPtr rawc, const std::vector< long > &expv)
void myPushFront (summand *t)
void myPushBack (summand *t)
void myRemoveSummand (summand **prev_link)
void myInsertSummand (summand *s, summand **prev_link)
void myNegate ()

Static Public Member Functions

static std::size_t ourSummandSize (const ring &, const PPMonoid &PPM)
static void ourSwap (DistrMPoly &, DistrMPoly &)


bool IsCompatible (const DistrMPoly &f, const DistrMPoly &g)
std::size_t NumTerms (const DistrMPoly &f)
ConstRefRingElem LC (const DistrMPoly &f)
ConstRefPPMonoidElem LPP (const DistrMPoly &f)
int CmpLPP (const DistrMPoly &f, const DistrMPoly &g)
void MoveLM (DistrMPoly &f, DistrMPoly &g)
void DivLM (DistrMPoly &lhs, const DistrMPoly &f, const DistrMPoly &g)
bool IsZeroAddLCs (DistrMPoly &f, DistrMPoly &g)
void add (DistrMPoly &lhs, const DistrMPoly &g, const DistrMPoly &h)
void sub (DistrMPoly &lhs, const DistrMPoly &g, const DistrMPoly &h)
bool div (DistrMPoly &lhs, const DistrMPoly &g, const DistrMPoly &h)
void output (std::ostream &out, const DistrMPoly &f)
 for debugging only
bool IsZero (const DistrMPoly &f)
bool IsMonomial (const DistrMPoly &f)
bool IsEqual (const DistrMPoly &f, const DistrMPoly &g)
void deriv (DistrMPoly &lhs, const DistrMPoly &, std::size_t IndetIndex)
void deriv (DistrMPoly &lhs, const DistrMPoly &f, ConstRefPPMonoidElem x)
void WeylMul (DistrMPoly &lhs, const DistrMPoly &g, const DistrMPoly &h)
void WeylDiv (DistrMPoly &lhs, const DistrMPoly &g, const DistrMPoly &h)


class  iter
struct  summand
 summand of a DistrMPoly

Detailed Description

Implementation of "clean" polynomials.

A summand of a DistrMPoly contains a RingElem and a PPMonoidElem so that the implementation is C++ cleaner than the strictly related class DistrMPolyInlPP

      Copyright (c)  2005 John Abbott
      Permission is granted to copy, distribute and/or modify this document
      under the terms of the GNU Free Documentation License, Version 1.2;
      with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
      A copy of the licence is included in the file COPYING in this directory.

User documentation for files DistrMPoly.H and DistrMPoly.C

Maintainer documentation for files DistrMPoly.H and DistrMPoly.C

The primary purpose for object of class DistrMPoly is to represent
values in a RingDistrMPoly; consequently all operations on a
DistrMPoly which could allocate or deallocate memory must take
arguments indicating which memory manager(s) to use.

An object of type DistrMPoly is essentially an ordered (singly) linked
list of summands, and each summand is a pair made up of a coefficient
(held as a RingElem) and a power product (held as a PPMonoidElem).  In a
valid DistrMPoly all the coefficients are non-zero, the power products
are all distinct and the summands are ordered decreasingly according to
the ordering on the PPs (as determined by the PPO inside the owning

Bugs, Shortcomings, and other ideas


Definition at line 55 of file DistrMPoly.H.

Constructor & Destructor Documentation

CoCoA::DistrMPoly::DistrMPoly const ring ,
const PPMonoid ,

CoCoA::DistrMPoly::DistrMPoly const DistrMPoly copy  ) 

CoCoA::DistrMPoly::~DistrMPoly  ) 

Member Function Documentation

DistrMPoly& CoCoA::DistrMPoly::operator= const DistrMPoly rhs  ) 

DistrMPoly& CoCoA::DistrMPoly::operator= long  rhs  ) 

DistrMPoly& CoCoA::DistrMPoly::operator= const ZZ rhs  ) 

std::size_t CoCoA::DistrMPoly::ourSummandSize const ring ,
const PPMonoid PPM
[inline, static]

Definition at line 260 of file DistrMPoly.H.

static void CoCoA::DistrMPoly::ourSwap DistrMPoly ,

Referenced by CoCoA::swap().

summand* CoCoA::DistrMPoly::myCopySummand const summand *  original  )  const

void CoCoA::DistrMPoly::myAssignZero  ) 

bool CoCoA::DistrMPoly::IsEqual const summand *const   lhs,
const summand *const   rhs

void CoCoA::DistrMPoly::myDeleteLM  ) 

void CoCoA::DistrMPoly::myAddMul const DistrMPoly h,
const DistrMPoly g,
bool  SkipLMg

void CoCoA::DistrMPoly::myWeylAddMul const DistrMPoly h,
const DistrMPoly g

void CoCoA::DistrMPoly::myReductionStep const DistrMPoly g  ) 

void CoCoA::DistrMPoly::myReductionStepGCD const DistrMPoly g,
RefRingElem  fscale

void CoCoA::DistrMPoly::myAddClear DistrMPoly g  ) 

void CoCoA::DistrMPoly::myAppendClear DistrMPoly g  ) 

void CoCoA::DistrMPoly::myMulByCoeff RingElemConstRawPtr  rawc  ) 

void CoCoA::DistrMPoly::myDivByCoeff RingElemConstRawPtr  rawc  ) 

void CoCoA::DistrMPoly::myMulByPP PPMonoidElemConstRawPtr  rawpp  ) 

void CoCoA::DistrMPoly::myWeylMul PPMonoidElemConstRawPtr  rawpp  ) 

void CoCoA::DistrMPoly::myPushFront RingElemConstRawPtr  rawc,
const std::vector< long > &  expv

void CoCoA::DistrMPoly::myPushBack RingElemConstRawPtr  rawc,
const std::vector< long > &  expv

void CoCoA::DistrMPoly::myPushFront summand *  t  ) 

void CoCoA::DistrMPoly::myPushBack summand *  t  ) 

void CoCoA::DistrMPoly::myRemoveSummand summand **  prev_link  ) 

void CoCoA::DistrMPoly::myInsertSummand summand *  s,
summand **  prev_link

void CoCoA::DistrMPoly::myNegate  ) 

Friends And Related Function Documentation

bool IsCompatible const DistrMPoly f,
const DistrMPoly g

std::size_t NumTerms const DistrMPoly f  )  [friend]

ConstRefRingElem LC const DistrMPoly f  )  [friend]

ConstRefPPMonoidElem LPP const DistrMPoly f  )  [friend]

int CmpLPP const DistrMPoly f,
const DistrMPoly g

void MoveLM DistrMPoly f,
DistrMPoly g

void DivLM DistrMPoly lhs,
const DistrMPoly f,
const DistrMPoly g

bool IsZeroAddLCs DistrMPoly f,
DistrMPoly g

void add DistrMPoly lhs,
const DistrMPoly g,
const DistrMPoly h

void sub DistrMPoly lhs,
const DistrMPoly g,
const DistrMPoly h

bool div DistrMPoly lhs,
const DistrMPoly g,
const DistrMPoly h

void output std::ostream &  out,
const DistrMPoly f

for debugging only

bool IsZero const DistrMPoly f  )  [friend]

bool IsMonomial const DistrMPoly f  )  [friend]

bool IsEqual const DistrMPoly f,
const DistrMPoly g

void deriv DistrMPoly lhs,
const DistrMPoly ,
std::size_t  IndetIndex

void deriv DistrMPoly lhs,
const DistrMPoly f,
ConstRefPPMonoidElem  x

void WeylMul DistrMPoly lhs,
const DistrMPoly g,
const DistrMPoly h

void WeylDiv DistrMPoly lhs,
const DistrMPoly g,
const DistrMPoly h

The documentation for this class was generated from the following file:
Generated on Wed May 23 13:46:14 2007 for CoCoALib by  doxygen 1.4.6