Dear All, I just learnt from hep-th/9507133 that it is possible and useful to consider Clifford algebras defined from a bilinear form which is not necessarily symmetric. Since present code never actually uses a symmetry of defined metrics I propose to drop such an assumption from anywhere. I include the corresponding patch (which accumulates my previous submission for idx.cpp as well). Best, Vladimir -- Vladimir V. Kisil email: kisilv@maths.leeds.ac.uk -- www: http://maths.leeds.ac.uk/~kisilv/ Index: doc/tutorial/ginac.texi =================================================================== RCS file: /home/cvs/GiNaC/doc/tutorial/ginac.texi,v retrieving revision 1.159 diff -r1.159 ginac.texi 3179,3180c3179,3181 < @samp{e~i e~j + e~j e~i = B(i, j)} for some symmetric matrix (@code{metric}) < @math{B(i, j)}. Such generators are created by the function ---
@samp{e~i e~j + e~j e~i = B(i, j)} for some matrix (@code{metric}) @math{B(i, j)}, which may be non-symmetric. Such generators are created by the function Index: ginac/clifford.h =================================================================== RCS file: /home/cvs/GiNaC/ginac/clifford.h,v retrieving revision 1.53 diff -r1.53 clifford.h 194c194 < * @param metr Metric (should be of class tensmetric or a derived class, or a symmetric matrix)
* @param metr Metric (should be of class tensmetric or a derived class, or a matrix) 291c291 < * @param metr Metric (should be of class tensmetric or a derived class, or a symmetric matrix)
* @param metr Metric (should be of class tensmetric or a derived class, or a matrix) Index: ginac/clifford.cpp =================================================================== RCS file: /home/cvs/GiNaC/ginac/clifford.cpp,v retrieving revision 1.82 diff -r1.82 clifford.cpp 158c158 < return indexed(metric, symmetric2(), i, j);
return indexed(metric, i, j); 1114c1114 < S = S * e.op(j).subs(lst(ex_to<varidx>(*it) == ival, ex_to<varidx>(*it).toggle_variance() == ival), subs_options::no_pattern);
S = S * e.op(j).subs(lst(ex_to<varidx>(*it) == ival), subs_options::no_pattern);
Index: ginac/idx.cpp =================================================================== RCS file: /home/cvs/GiNaC/ginac/idx.cpp,v retrieving revision 1.62 diff -r1.62 idx.cpp 508a509,519
// Auxiliary comparison which does not mind the variance of indices struct idx_is_less : public std::binary_function<ex, ex, bool> { bool operator() (const ex &lh, const ex &rh) const { if (is_a<varidx>(lh)) return (lh.compare(rh) < 0) && (lh.compare(ex_to<varidx>(rh).toggle_variance()) < 0); else return lh.compare(rh) < 0; } };
528c539 < shaker_sort(v.begin(), v.end(), ex_is_less(), ex_swap()); ---
shaker_sort(v.begin(), v.end(), idx_is_less(), ex_swap());