Thanks Christian, I make this Looking symmetrize.cpp I define: class symmetrize_pair : public map_function{ lst w; public: symmetrize_pair(lst & var_) : w(var_){} ex operator()(const ex & e); }; ex symmetrize_pair :: operator()(const ex & e) { if(is_a<add>(e)) return e.map(*this); else{ lst l; lst orig_lst=w; unsigned num=w.nops(); unsigned *iv= new unsigned[num]; for(unsigned i=0;i<num;i++) iv[i]=i; ex sum=e; while(std::next_permutation(iv,iv+num)) { lst new_lst; for(unsigned i=0;i<num;i++) new_lst.append(orig_lst.op(iv[i])); l.remove_all(); for(unsigned j=0;j<num;j++) l.append(orig_lst.op(j).op(0)==new_lst.op(j).op(0)).append(orig_lst.op(j).op(1)==new_lst.op(j).op(1)); ex term=e.subs(l); sum+=term; } delete[] iv; return sum; } } int main () { varidx mu(symbol("mu"),4), nu(symbol("nu"),4),gamma(symbol("gamma"),4),delta(symbol("delta"),4),alpha(symbol("alpha"),4),beta(symbol("beta"),4),sigma(symbol("sigma"),4); idx a(symbol("a"),8), b(symbol("b"),8), c(symbol("c"),8), d(symbol("d"),8), e(symbol("e"),8), f(symbol("f"),8),g(symbol("g"),8), r(symbol("r"),8), s(symbol("s"),8); ex four = delta_tensor(a,e)*delta_tensor(b,f)*delta_tensor(c,r)*delta_tensor(d,s)*metric_tensor(alpha,gamma)*metric_tensor(beta,delta); lst u(a,alpha); lst v(b,beta); lst z(c,gamma); lst x(d,delta); lst w(u,v,z,x); symmetrize_pair make_symm(w); ex fourv = make_symm(four); } Ginac is really great !!!!!! Marco Quoting Christian Bauer <Christian.Bauer@uni-mainz.de>:
Hi!
On Wed, Feb 16, 2005 at 12:13:47PM -0200, mdias@ift.unesp.br wrote:
I can make somethink like four.symmetrize((sigma,l),(mu,m),(nu,n),(rho,o))?
No, it can't do that (but it would be a nice feature to have, actually...). You have to do the symmetrization by hand.
Bye, Christian
-- / Physics is an algorithm \/ http://www.uni-mainz.de/~bauec002/
_______________________________________________ GiNaC-list mailing list GiNaC-list@ginac.de http://thep.physik.uni-mainz.de/mailman/listinfo/ginac-list
------------------------------------------------- This mail sent through IMP: http://horde.org/imp/