canonicalize() failed to return zero for an antisymmetric combination of two
authorChristian Bauer <Christian.Bauer@uni-mainz.de>
Mon, 22 Jul 2002 20:32:49 +0000 (20:32 +0000)
committerChristian Bauer <Christian.Bauer@uni-mainz.de>
Mon, 22 Jul 2002 20:32:49 +0000 (20:32 +0000)
or more equal elements if the elements were already in their canonical order

ginac/symmetry.cpp

index 8a76621..c953953 100644 (file)
@@ -304,7 +304,7 @@ public:
 
 int canonicalize(exvector::iterator v, const symmetry &symm)
 {
-       // Less than two indices? Then do nothing
+       // Less than two elements? Then do nothing
        if (symm.indices.size() < 2)
                return INT_MAX;
 
@@ -334,6 +334,8 @@ int canonicalize(exvector::iterator v, const symmetry &symm)
                case symmetry::antisymmetric:
                        // Sort the children in ascending order, keeping track of the signum
                        sign *= permutation_sign(first, last, sy_is_less(v), sy_swap(v, something_changed));
+                       if (sign == 0)
+                               return 0;
                        break;
                case symmetry::cyclic:
                        // Permute the smallest child to the front