CoCoALib-0.9905 date: 23 May 2007


CoCoA::DistrMPoly Class Reference

Implementation of "clean" polynomials. More...

#include <DistrMPoly.H>

Collaboration diagram for CoCoA::DistrMPoly:

Collaboration graph
[legend]
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)
summandmyCopySummand (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 &)

Private Member Functions

void myAddMulSummand (const summand *s, const DistrMPoly &g, bool SkipLMg)
void myWeylAddMulSummand (const summand *s, const DistrMPoly &g, bool SkipLMg)

Static Private Member Functions

static void ourDeleteSummands (summand *ptr)

Private Attributes

const ring myCoeffRing
 the ring to which all the coeffs belong
const PPMonoid myPPM
 the PP monoid to which all the PPs belong
MemPoolmySummandMemory
 the MemPool which manages the memory occupied by the summands
summand ** myEnd
 pointer to facilitate implementing the one-past-the-last iterator
summandmySummands
 pointer to the first summand

Friends

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)

Classes

class  iter
struct  summand
 summand of a DistrMPoly More...

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
PPMonoid).




Bugs, Shortcomings, and other ideas
-----------------------------------

T

Definition at line 55 of file DistrMPoly.H.


Constructor & Destructor Documentation

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

CoCoA::DistrMPoly::DistrMPoly const DistrMPoly copy  ) 
 

CoCoA::DistrMPoly::~DistrMPoly  ) 
 


Member Function Documentation

static void CoCoA::DistrMPoly::ourDeleteSummands summand ptr  )  [static, private]
 

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 ,
DistrMPoly
[static]
 

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
const
 

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  ) 
 

void CoCoA::DistrMPoly::myAddMulSummand const summand s,
const DistrMPoly g,
bool  SkipLMg
[private]
 

void CoCoA::DistrMPoly::myWeylAddMulSummand const summand s,
const DistrMPoly g,
bool  SkipLMg
[private]
 


Friends And Related Function Documentation

bool IsCompatible const DistrMPoly f,
const DistrMPoly g
[friend]
 

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
[friend]
 

void MoveLM DistrMPoly f,
DistrMPoly g
[friend]
 

void DivLM DistrMPoly lhs,
const DistrMPoly f,
const DistrMPoly g
[friend]
 

bool IsZeroAddLCs DistrMPoly f,
DistrMPoly g
[friend]
 

void add DistrMPoly lhs,
const DistrMPoly g,
const DistrMPoly h
[friend]
 

void sub DistrMPoly lhs,
const DistrMPoly g,
const DistrMPoly h
[friend]
 

bool div DistrMPoly lhs,
const DistrMPoly g,
const DistrMPoly h
[friend]
 

void output std::ostream &  out,
const DistrMPoly f
[friend]
 

for debugging only

bool IsZero const DistrMPoly f  )  [friend]
 

bool IsMonomial const DistrMPoly f  )  [friend]
 

bool IsEqual const DistrMPoly f,
const DistrMPoly g
[friend]
 

void deriv DistrMPoly lhs,
const DistrMPoly ,
std::size_t  IndetIndex
[friend]
 

void deriv DistrMPoly lhs,
const DistrMPoly f,
ConstRefPPMonoidElem  x
[friend]
 

void WeylMul DistrMPoly lhs,
const DistrMPoly g,
const DistrMPoly h
[friend]
 

void WeylDiv DistrMPoly lhs,
const DistrMPoly g,
const DistrMPoly h
[friend]
 


Member Data Documentation

const ring CoCoA::DistrMPoly::myCoeffRing [private]
 

the ring to which all the coeffs belong

Definition at line 97 of file DistrMPoly.H.

const PPMonoid CoCoA::DistrMPoly::myPPM [private]
 

the PP monoid to which all the PPs belong

Definition at line 98 of file DistrMPoly.H.

Referenced by CoCoA::CmpLPP().

MemPool& CoCoA::DistrMPoly::mySummandMemory [private]
 

the MemPool which manages the memory occupied by the summands

Definition at line 99 of file DistrMPoly.H.

summand** CoCoA::DistrMPoly::myEnd [private]
 

pointer to facilitate implementing the one-past-the-last iterator

Definition at line 100 of file DistrMPoly.H.

summand* CoCoA::DistrMPoly::mySummands [private]
 

pointer to the first summand

Definition at line 101 of file DistrMPoly.H.

Referenced by CoCoA::CmpLPP().


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