]> www.ginac.de Git - ginac.git/blobdiff - ginac/color.cpp
Remove 'level' argument of normal().
[ginac.git] / ginac / color.cpp
index dcc106dacda8309fec7f86c90ed295225a9f805d..7081998d05d14614589e84d0161ebec934f685af 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of GiNaC's color (SU(3) Lie algebra) objects. */
 
 /*
- *  GiNaC Copyright (C) 1999-2015 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2016 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
@@ -400,9 +400,7 @@ bool su3d::contract_with(exvector::iterator self, exvector::iterator other, exve
                 && ex_to<indexed>(*self).has_dummy_index_for(other[1].op(1))) {
 
                        exvector self_indices = ex_to<indexed>(*self).get_indices();
-                       exvector dummy_indices;
-                       dummy_indices.push_back(other[0].op(1));
-                       dummy_indices.push_back(other[1].op(1));
+                       exvector dummy_indices = {other[0].op(1), other[1].op(1)};
                        int sig;
                        ex a = permute_free_index_to_front(self_indices, dummy_indices, sig);
                        *self = numeric(5, 6);
@@ -453,9 +451,7 @@ bool su3f::contract_with(exvector::iterator self, exvector::iterator other, exve
                 && ex_to<indexed>(*self).has_dummy_index_for(other[1].op(1))) {
 
                        exvector self_indices = ex_to<indexed>(*self).get_indices();
-                       exvector dummy_indices;
-                       dummy_indices.push_back(other[0].op(1));
-                       dummy_indices.push_back(other[1].op(1));
+                       exvector dummy_indices = {other[0].op(1), other[1].op(1)};
                        int sig;
                        ex a = permute_free_index_to_front(self_indices, dummy_indices, sig);
                        *self = numeric(3, 2) * sig * I;
@@ -474,13 +470,13 @@ bool su3f::contract_with(exvector::iterator self, exvector::iterator other, exve
 
 ex color_ONE(unsigned char rl)
 {
-       static ex ONE = (new su3one)->setflag(status_flags::dynallocated);
+       static ex ONE = dynallocate<su3one>();
        return color(ONE, rl);
 }
 
 ex color_T(const ex & a, unsigned char rl)
 {
-       static ex t = (new su3t)->setflag(status_flags::dynallocated);
+       static ex t = dynallocate<su3t>();
 
        if (!is_a<idx>(a))
                throw(std::invalid_argument("indices of color_T must be of type idx"));
@@ -492,7 +488,7 @@ ex color_T(const ex & a, unsigned char rl)
 
 ex color_f(const ex & a, const ex & b, const ex & c)
 {
-       static ex f = (new su3f)->setflag(status_flags::dynallocated);
+       static ex f = dynallocate<su3f>();
 
        if (!is_a<idx>(a) || !is_a<idx>(b) || !is_a<idx>(c))
                throw(std::invalid_argument("indices of color_f must be of type idx"));
@@ -504,7 +500,7 @@ ex color_f(const ex & a, const ex & b, const ex & c)
 
 ex color_d(const ex & a, const ex & b, const ex & c)
 {
-       static ex d = (new su3d)->setflag(status_flags::dynallocated);
+       static ex d = dynallocate<su3d>();
 
        if (!is_a<idx>(a) || !is_a<idx>(b) || !is_a<idx>(c))
                throw(std::invalid_argument("indices of color_d must be of type idx"));
@@ -595,7 +591,7 @@ ex color_trace(const ex & e, const std::set<unsigned char> & rls)
                        //   + 1/2 h_a(n-1)_an_k Tr T_a1 .. T_a(n-2) T_k
                        const ex &last_index = e.op(num - 1).op(1);
                        const ex &next_to_last_index = e.op(num - 2).op(1);
-                       idx summation_index((new symbol)->setflag(status_flags::dynallocated), 8);
+                       idx summation_index(dynallocate<symbol>(), 8);
 
                        exvector v1;
                        v1.reserve(num - 2);