© 2006-2012 Anna Bigatti
GNU Free Documentation License, Version 1.2

CoCoALib Documentation Index


User documentation

Based on The Geobucket Data Structure for Polynomials by Thomas Yan (1996).

A geobucket is a polynomial represented in a C++ vector of buckets: a bucket contains a polynomial and some other info (see below geobucket bucket)

This construction is particularly useful for adding many short polynomials to a long one (in particular the reduction process) because it lowers the number of calls of cmp between PPMonoidElems.




Let gbk be a geobucket, f a RingElem& (see RingElem)

Member functions

Maintainer documentation

After calling gbk.mySetLM() the leading monomial of gbk is in gbk.myBuckets[0] (and then gbk is zero iff gbk.myBuckets[0]=0)

gbk.myBuckets[i] contains at most gbk_minlen * gbk_factor^i summands


This class is to be used only by geobuckets.

A bucket represents a polynomial as a product of a polynomial and a coefficient, two RingElem respectivey in a SparsePolyRing P and CoeffRing(P).

The coeffient factor is used for fast multiplication of a geobucket by a coefficient and it comes useful in the reduction process over a field of fraction of a GCD ring.

We normalize the bucket (i.e. multiply the polynomial by the coefficient) only when it is necessary: e.g. to compute a reference to the LC of the bucket.

All methods are private (to be used only by geobuckets, friend)

Methods on buckets (weak exception guarantee)

Functions on buckets

Dirty method and function for efficiency (b1 and b2 will be normalized))

Member fields