WARNING: THIS IS STILL ONLY A PRELIMINARY INTERFACE
friend bool IsDivisibleFast(const PPWithMask& pm1, const PPWithMask& pm2); ///< suffix "Fast" because it does not check compatibility
A value of type PPWithMask
is an "enriched" power product: it also
contains a "divmask" so that divisibility tests between PPWithMask
values can be effected quickly (on average, and assuming they are only
rarely divisible).
To create a PPWithMask
value:
PPWithMask(pp, DMRule) -- pp is a power product, DMRule is a divmask rule
Given a PPWithMask
value you can extract the power product and DivMaskRule
using the following accessor functions:
PP(ppwm) -- get a reference to the internal power product DivMaskImpl(ppwm) -- get the div mask rule
Implementation of PPMonoidElem with DivMask for fast divisibility test
This type is not intended for "public use": it must be fast, so we
cannot guarantee safety checks. It does some compatibility tests with
CoCoA_ASSERT (i.e. only with CoCoA_DEBUG
on)
It is to be used ONLY when speed on divisibility tests is crucial (Buchberger, Toric, Hilbert, ...).
Constructor and assignment from pp might be expensive.
Both impl and doc are very incomplete!