geobucket

© 2006-2012 John Abbott and Anna M. Bigatti
GNU Free Documentation License, Version 1.2



CoCoALib Documentation Index

Examples

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.

For summing many big integers or rationals see also SumBigRat in BigRatOps, and SumBigInt in BigIntOps.

Constructors

Queries

Operations

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

bucket

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

changes

2013

2004