]> www.ginac.de Git - ginac.git/blobdiff - ginac/indexed.cpp
- added symmetrize() and antisymmetrize() functions
[ginac.git] / ginac / indexed.cpp
index acbf7d489967445a4d1e2d52f79cf5d91f06d850..20e54752a93d89c90e17607c953f0e62741fbacd 100644 (file)
@@ -30,6 +30,7 @@
 #include "ncmul.h"
 #include "power.h"
 #include "lst.h"
+#include "inifcns.h"
 #include "print.h"
 #include "archive.h"
 #include "utils.h"
@@ -710,7 +711,7 @@ contraction_done:
                                        // Non-commutative products are always re-expanded to give
                                        // simplify_ncmul() the chance to re-order and canonicalize
                                        // the product
-                                       ex r = (non_commutative ? ex(ncmul(v)) : ex(mul(v)));
+                                       ex r = (non_commutative ? ex(ncmul(v, true)) : ex(mul(v)));
                                        return simplify_indexed(r, free_indices, dummy_indices, sp);
                                }
 
@@ -744,7 +745,7 @@ contraction_done:
 
        ex r;
        if (something_changed)
-               r = non_commutative ? ex(ncmul(v)) : ex(mul(v));
+               r = non_commutative ? ex(ncmul(v, true)) : ex(mul(v));
        else
                r = e;
 
@@ -827,6 +828,16 @@ ex simplify_indexed(const ex & e, const scalar_products & sp)
        return simplify_indexed(e, free_indices, dummy_indices, sp);
 }
 
+ex symmetrize(const ex & e)
+{
+       return symmetrize(e, e.get_free_indices());
+}
+
+ex antisymmetrize(const ex & e)
+{
+       return antisymmetrize(e, e.get_free_indices());
+}
+
 //////////
 // helper classes
 //////////