16 #ifndef polybori_groebner_LLReduction_h_
17 #define polybori_groebner_LLReduction_h_
28 template <
bool have_redsb,
bool single_call_for_noredsb,
29 bool fast_multiplication>
33 template<
class RingType>
40 return dd_multiply<fast_multiplication>(cache_mgr_type(p.
ring()),
53 template <
bool have_redsb,
bool single_call_for_noredsb,
bool fast_multiplication>
64 while((*r_nav)<p_index) {
78 Polynomial p_nav_else(cache_mgr.generate(p_nav.elseBranch()));
79 Polynomial p_nav_then(cache_mgr.generate(p_nav.thenBranch()));
81 if ((*r_nav) == p_index){
82 Polynomial r_nav_else(cache_mgr.generate(r_nav.elseBranch()));
84 if ((!have_redsb) && single_call_for_noredsb) {
85 res = operator()(p_nav_else +
multiply(r_nav_else, p_nav_then),
89 Polynomial tmp1 = operator()(p_nav_else, r_nav.thenBranch());
90 Polynomial tmp2 = operator()(p_nav_then, r_nav.thenBranch());
93 operator()(r_nav_else, r_nav.thenBranch()) );
100 operator()(p_nav_then, r_nav).diagram(),
101 operator()(p_nav_else, r_nav).diagram());
105 cache_mgr.insert(p_nav, r_nav, res.navigation());