[GiNaC-devel] Clifford extension

Vladimir Kisil kisilv at maths.leeds.ac.uk
Fri Nov 12 14:45:04 CET 2004


		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 at 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());




More information about the GiNaC-devel mailing list