- if (num_terms_orig > 1 && dummy_indices.size() >= 2) {
-
- // Construct list of all dummy index symbols
- lst dummy_syms;
- for (int i=0; i<dummy_indices.size(); i++)
- dummy_syms.append(dummy_indices[i].op(0));
-
- // Symmetrize each term separately and store the resulting
- // terms in a list of symminfo structures
- std::vector<symminfo> v;
- for (int i=0; i<sum.nops(); i++) {
- ex sum_symm = sum.op(i).symmetrize(dummy_syms);
- if (sum_symm.is_zero())
- continue;
- if (is_exactly_a<add>(sum_symm))
- for (int j=0; j<sum_symm.nops(); j++)
- v.push_back(symminfo(sum_symm.op(j), sum.op(i), sum_symm.nops()));
- else
- v.push_back(symminfo(sum_symm, sum.op(i), 1));
- }