void symm1(int lastn, // can use lastn..rank()-1 in product int pow) const // remaining power to take { if (pow == 0) symm1_result->append(symm1_deg); else { for (int i=lastn; i<F->rank(); i++) { // increase symm1_deg, with e_i D->mult(symm1_deg, F->degree(i), symm1_deg); symm1(i, pow-1); // decrease symm1_deg back D->divide(symm1_deg, F->degree(i), symm1_deg); } } }
void symm1(int lastn, // can use lastn..rank()-1 in product int pow) // remaining power to take { if (pow == 0) symm1_result->append(symm1_next++, symm1_base); else { for (int i=lastn; i<S->rank(); i++) { // increase symm1_base with e_i M->mult(symm1_base, S->base_monom(i), symm1_base); symm1(i, pow-1); // decrease symm1_base back M->divide(symm1_base, S->base_monom(i), symm1_base); } } }