* Implementation of GiNaC's clifford algebra (Dirac gamma) objects. */
/*
- * GiNaC Copyright (C) 1999-2003 Johannes Gutenberg University Mainz, Germany
+ * GiNaC Copyright (C) 1999-2004 Johannes Gutenberg University Mainz, Germany
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#include "relational.h"
#include "operators.h"
#include "mul.h"
-#include "print.h"
#include "archive.h"
#include "utils.h"
tinfo_key = TINFO_clifford;
}
-clifford::clifford(unsigned char rl, exvector * vp) : inherited(sy_none(), vp), representation_label(rl)
+clifford::clifford(unsigned char rl, std::auto_ptr<exvector> vp) : inherited(sy_none(), vp), representation_label(rl)
{
tinfo_key = TINFO_clifford;
}
return clifford(representation_label, v);
}
-ex clifford::thiscontainer(exvector * vp) const
+ex clifford::thiscontainer(std::auto_ptr<exvector> vp) const
{
return clifford(representation_label, vp);
}
+ex diracgamma5::conjugate() const
+{
+ return _ex_1 * (*this);
+}
+
+ex diracgammaL::conjugate() const
+{
+ return (new diracgammaR)->setflag(status_flags::dynallocated);
+}
+
+ex diracgammaR::conjugate() const
+{
+ return (new diracgammaL)->setflag(status_flags::dynallocated);
+}
+
//////////
// global functions
//////////
ex canonicalize_clifford(const ex & e)
{
// Scan for any ncmul objects
- lst srl;
+ exmap srl;
ex aux = e.to_rational(srl);
- for (size_t i=0; i<srl.nops(); i++) {
+ for (exmap::iterator i = srl.begin(); i != srl.end(); ++i) {
- ex o = srl.op(i);
- ex lhs = o.lhs();
- ex rhs = o.rhs();
+ ex lhs = i->first;
+ ex rhs = i->second;
if (is_exactly_a<ncmul>(rhs)
&& rhs.return_type() == return_types::noncommutative
// Expand product, if necessary
ex rhs_expanded = rhs.expand();
if (!is_a<ncmul>(rhs_expanded)) {
- srl[i] = (lhs == canonicalize_clifford(rhs_expanded));
+ i->second = canonicalize_clifford(rhs_expanded);
continue;
} else if (!is_a<clifford>(rhs.op(0)))
it[0] = save1;
it[1] = save0;
sum -= ncmul(v, true);
- srl[i] = (lhs == canonicalize_clifford(sum));
+ i->second = canonicalize_clifford(sum);
goto next_sym;
}
++it;