525{
526
527
528
530 ring_elem F =
R->from_long(1);
533 if (len <= 2)
534 {
535
536
540
541 if (len == 2)
542 {
550 }
551 delete I;
552 }
553 else
554 {
555 int npure;
556 gc_vector<int> pivot;
557 gc_vector<int> pure_a(I->
topvar() + 1);
560 {
561
562
563
564
568 if (pure[i.var()] != -1)
569 {
570 ring_elem H =
R->from_long(1);
571 D->power(
M->degree_of_var(i.var()), pure[i.var()],
LOCAL_deg1);
576
578 D->power(
M->degree_of_var(i.var()),
579 pure[i.var()] - i.exponent(),
585 }
586 R->subtract_to(F,
G);
587 delete I;
588 }
589 else
590 {
591
594 return;
595 }
596 }
600}
ExponentListIterator< int, true > index_varpower
exponents::Exponents exponents_t
static void lcm(ConstExponents a, ConstExponents b, Vector &result)
const_varpower second_elem() const
const_varpower first_elem() const
gc_vector< int > LOCAL_vp
void recurse(MonomialIdeal *&I, const_varpower pivot_vp)
static int find_pivot(const MonomialIdeal &I, int &npure, exponents_t pure, gc_vector< int > &m)