|
static size_t | getShelf (double logmod) |
| Returns the index where the shelf (with specified natural log of modulus) belongs.
|
|
static const integer & | mod_to_integer (const Integer &D) |
| Returns a reference to D. More...
|
|
template<class Domain > |
static integer | mod_to_integer (const Domain &D) |
| Returns the characteristic of D.
|
|
static void | combineShelves (Shelf &dest, const Shelf &src) |
| Incorporates the residue in src into dest and updates the modulus.
|
|
static void | ensureShelf (size_t index, std::vector< Shelf > &shelves, size_t dim) |
| Expands the shelves as necessary so that the given index exists in the array.
|
|
template<class Domain_Type>
struct LinBox::CRABuilderFullMultip< Domain_Type >
Chinese remaindering of a vector of elements without early termination.
- Bibliography:
- Jean-Guillaume Dumas, Thierry Gautier et Jean-Louis Roch. Generic design of Chinese remaindering schemes PASCO 2010, pp 26-34, 21-23 juillet, Grenoble, France.
The idea is that each "shelf" contains a vector of residues with some modulus. We want to combine shelves that have roughly the same size of modulus, for efficiency. The method is that any submitted residue is assigned to a unique shelf according to log2(log(modulus)), as computed by the getShelf() helper. When two residues belong on the same shelf, they are combined and re-assigned to another shelf, recursively.