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); } } }