I think the following expressions are mathematically equivalent: cout << (indexed(matrix(3,1, lst(a1,b1,c1)), mu.toggle_variance ())+indexed(matrix(3,1, lst(a2,b2,c2)), mu.toggle_variance ())).simplify_indexed()*basis1 << endl; cout << ((indexed(matrix(3,1, lst(a1,b1,c1)), mu.toggle_variance ())+indexed(matrix(3,1, lst(a2,b2,c2)), mu.toggle_variance ()))*basis1).simplify_indexed() << endl; cout << (indexed(matrix(3,1, lst(a1,b1,c1)), mu.toggle_variance ())*basis1+indexed(matrix(3,1, lst(a2,b2,c2)), mu.toggle_variance ())*basis1).simplify_indexed() << endl; Where varidx mu(symbol("mu", "\\mu"), 3); ex basis1 = clifford_unit(mu, diag_matrix(lst(1, 1, 1)),1); But output is different
[[a2+a1],[b1+b2],[c2+c1]].mu*e~mu [[a2],[b2],[c2]].mu*e~mu+[[a1],[b1],[c1]].mu*e~mu [[a2],[b2],[c2]].mu*e~mu+[[a1],[b1],[c1]].mu*e~mu
Is this intended behaviour? Thanks again Javier Ros