Пример #1
0
    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);
            }
        }
    }
Пример #2
0
  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);
          }
      }
  }