]> www.ginac.de Git - ginac.git/blobdiff - ginac/color.cpp
- Banned exZERO(), exONE(), exMINUSHALF() and all this from the interface.
[ginac.git] / ginac / color.cpp
index b59e4b4ce1a030b340b1a248a6be6d4b070ef34e..0f5f604717db1c2a1c450fd2e921b666a307088d 100644 (file)
 #include "numeric.h"
 #include "relational.h"
 #include "debugmsg.h"
+#include "utils.h"
 
+#ifndef NO_GINAC_NAMESPACE
 namespace GiNaC {
+#endif // ndef NO_GINAC_NAMESPACE
 
 //////////
 // default constructor, destructor, copy constructor assignment operator and helpers
@@ -96,54 +99,54 @@ void color::destroy(bool call_parent)
 color::color(color_types const t, unsigned const rl) : type(t), representation_label(rl)
 {
     debugmsg("color constructor from color_types,unsigned",LOGLEVEL_CONSTRUCT);
-    ASSERT(representation_label<MAX_REPRESENTATION_LABELS);
+    GINAC_ASSERT(representation_label<MAX_REPRESENTATION_LABELS);
     tinfo_key=TINFO_color;
-    ASSERT(all_of_type_coloridx());
+    GINAC_ASSERT(all_of_type_coloridx());
 }
 
 color::color(color_types const t, ex const & i1, unsigned const rl)
     : indexed(i1), type(t), representation_label(rl)
 {
     debugmsg("color constructor from color_types,ex,unsigned",LOGLEVEL_CONSTRUCT);
-    ASSERT(representation_label<MAX_REPRESENTATION_LABELS);
+    GINAC_ASSERT(representation_label<MAX_REPRESENTATION_LABELS);
     tinfo_key=TINFO_color;
-    ASSERT(all_of_type_coloridx());
+    GINAC_ASSERT(all_of_type_coloridx());
 }
 
 color::color(color_types const t, ex const & i1, ex const & i2, unsigned const rl)
     : indexed(i1,i2), type(t), representation_label(rl)
 {
     debugmsg("color constructor from color_types,ex,ex,unsigned",LOGLEVEL_CONSTRUCT);
-    ASSERT(representation_label<MAX_REPRESENTATION_LABELS);
+    GINAC_ASSERT(representation_label<MAX_REPRESENTATION_LABELS);
     tinfo_key=TINFO_color;
-    ASSERT(all_of_type_coloridx());
+    GINAC_ASSERT(all_of_type_coloridx());
 }
 
 color::color(color_types const t, ex const & i1, ex const & i2, ex const & i3,
              unsigned const rl) : indexed(i1,i2,i3), type(t), representation_label(rl)
 {
     debugmsg("color constructor from color_types,ex,ex,ex,unsigned",LOGLEVEL_CONSTRUCT);
-    ASSERT(representation_label<MAX_REPRESENTATION_LABELS);
+    GINAC_ASSERT(representation_label<MAX_REPRESENTATION_LABELS);
     tinfo_key=TINFO_color;
-    ASSERT(all_of_type_coloridx());
+    GINAC_ASSERT(all_of_type_coloridx());
 }
 
 color::color(color_types const t, exvector const & iv, unsigned const rl)
     : indexed(iv), type(t), representation_label(rl)
 {
     debugmsg("color constructor from color_types,exvector,unsigned",LOGLEVEL_CONSTRUCT);
-    ASSERT(representation_label<MAX_REPRESENTATION_LABELS);
+    GINAC_ASSERT(representation_label<MAX_REPRESENTATION_LABELS);
     tinfo_key=TINFO_color;
-    ASSERT(all_of_type_coloridx());
+    GINAC_ASSERT(all_of_type_coloridx());
 }
 
 color::color(color_types const t, exvector * ivp, unsigned const rl)
     : indexed(ivp), type(t), representation_label(rl)
 {
     debugmsg("color constructor from color_types,exvector *,unsigned",LOGLEVEL_CONSTRUCT);
-    ASSERT(representation_label<MAX_REPRESENTATION_LABELS);
+    GINAC_ASSERT(representation_label<MAX_REPRESENTATION_LABELS);
     tinfo_key=TINFO_color;
-    ASSERT(all_of_type_coloridx());
+    GINAC_ASSERT(all_of_type_coloridx());
 }
 
 //////////
@@ -240,7 +243,7 @@ ex color::eval(int level) const
             int sig=canonicalize_indices(iv,antisymmetric);
             if (sig!=INT_MAX) {
                 // something has changed while sorting indices, more evaluations later
-                if (sig==0) return exZERO();
+                if (sig==0) return _ex0();
                 return ex(sig)*color(type,iv,representation_label);
             }
         }
@@ -253,7 +256,7 @@ ex color::eval(int level) const
     switch (type) {
     case color_delta8:
         {
-            ASSERT(seq.size()==2);
+            GINAC_ASSERT(seq.size()==2);
             coloridx const & idx1=ex_to_coloridx(seq[0]);
             coloridx const & idx2=ex_to_coloridx(seq[1]);
             
@@ -265,9 +268,9 @@ ex color::eval(int level) const
             // check for delta8_{a,b} where a and b are numeric indices, replace by 0 or 1
             if ((!idx1.is_symbolic())&&(!idx2.is_symbolic())) {
                 if ((idx1.get_value()!=idx2.get_value())) {
-                    return exONE();
+                    return _ex1();
                 } else {
-                    return exZERO();
+                    return _ex0();
                 }
             }
        }
@@ -275,26 +278,26 @@ ex color::eval(int level) const
     case color_d:
         // check for d_{a,a,c} (=0) when a is symbolic
         {
-            ASSERT(seq.size()==3);
+            GINAC_ASSERT(seq.size()==3);
             coloridx const & idx1=ex_to_coloridx(seq[0]);
             coloridx const & idx2=ex_to_coloridx(seq[1]);
             coloridx const & idx3=ex_to_coloridx(seq[2]);
             
             if (idx1.is_equal_same_type(idx2) && idx1.is_symbolic()) {
-                return exZERO();
+                return _ex0();
             } else if (idx2.is_equal_same_type(idx3) && idx2.is_symbolic()) {
-                return exZERO();
+                return _ex0();
             }
             
             // check for three numeric indices
             if (!(idx1.is_symbolic()||idx2.is_symbolic()||idx3.is_symbolic())) {
-                ASSERT(idx1.get_value()<=idx2.get_value());
-                ASSERT(idx2.get_value()<=idx3.get_value());
+                GINAC_ASSERT(idx1.get_value()<=idx2.get_value());
+                GINAC_ASSERT(idx2.get_value()<=idx3.get_value());
                 if (CMPINDICES(1,4,6)||CMPINDICES(1,5,7)||CMPINDICES(2,5,6)||
                     CMPINDICES(3,4,4)||CMPINDICES(3,5,5)) {
-                    return exHALF();
+                    return _ex1_2();
                 } else if (CMPINDICES(2,4,7)||CMPINDICES(3,6,6)||CMPINDICES(3,7,7)) {
-                    return -exHALF();
+                    return -_ex1_2();
                 } else if (CMPINDICES(1,1,8)||CMPINDICES(2,2,8)||CMPINDICES(3,3,8)) {
                     return 1/sqrt(numeric(3));
                 } else if (CMPINDICES(8,8,8)) {
@@ -302,28 +305,28 @@ ex color::eval(int level) const
                 } else if (CMPINDICES(4,4,8)||CMPINDICES(5,5,8)||CMPINDICES(6,6,8)||CMPINDICES(7,7,8)) {
                     return -1/(2*sqrt(numeric(3)));
                 }
-                return exZERO();
+                return _ex0();
             }
         }
         break;
     case color_f:
         {
-            ASSERT(seq.size()==3);
+            GINAC_ASSERT(seq.size()==3);
             coloridx const & idx1=ex_to_coloridx(seq[0]);
             coloridx const & idx2=ex_to_coloridx(seq[1]);
             coloridx const & idx3=ex_to_coloridx(seq[2]);
             
             // check for three numeric indices
             if (!(idx1.is_symbolic()||idx2.is_symbolic()||idx3.is_symbolic())) {
-                ASSERT(idx1.get_value()<=idx2.get_value());
-                ASSERT(idx2.get_value()<=idx3.get_value());
+                GINAC_ASSERT(idx1.get_value()<=idx2.get_value());
+                GINAC_ASSERT(idx2.get_value()<=idx3.get_value());
                 if (CMPINDICES(1,2,3)) {
-                    return exONE();
+                    return _ex1();
                 } else if (CMPINDICES(1,4,7)||CMPINDICES(2,4,6)||
                            CMPINDICES(2,5,7)||CMPINDICES(3,4,5)) {
-                    return exHALF();
+                    return _ex1_2();
                 } else if (CMPINDICES(1,5,6)||CMPINDICES(3,6,7)) {
-                    return -exHALF();
+                    return -_ex1_2();
                 } else if (CMPINDICES(4,5,8)||CMPINDICES(6,7,8)) {
                     return sqrt(numeric(3))/2;
                 } else if (CMPINDICES(8,8,8)) {
@@ -331,7 +334,7 @@ ex color::eval(int level) const
                 } else if (CMPINDICES(4,4,8)||CMPINDICES(5,5,8)||CMPINDICES(6,6,8)||CMPINDICES(7,7,8)) {
                     return -1/(2*sqrt(numeric(3)));
                 }
-                return exZERO();
+                return _ex0();
             }
             break;
         }
@@ -347,7 +350,7 @@ ex color::eval(int level) const
 
 int color::compare_same_type(basic const & other) const
 {
-    ASSERT(other.tinfo() == TINFO_color);
+    GINAC_ASSERT(other.tinfo() == TINFO_color);
     const color *o = static_cast<const color *>(&other);
     if (type==o->type) {
         if (representation_label==o->representation_label) {
@@ -360,7 +363,7 @@ int color::compare_same_type(basic const & other) const
 
 bool color::is_equal_same_type(basic const & other) const
 {
-    ASSERT(other.tinfo() == TINFO_color);
+    GINAC_ASSERT(other.tinfo() == TINFO_color);
     const color *o = static_cast<const color *>(&other);
     if (type!=o->type) return false;
     if (representation_label!=o->representation_label) return false;
@@ -386,11 +389,11 @@ ex color::simplify_ncmul(exvector const & v) const
         // process only delta8 objects
         if (is_ex_exactly_of_type(*it,color) && (ex_to_color(*it).type==color_delta8)) {
             color & d8=ex_to_nonconst_color(*it);
-            ASSERT(d8.seq.size()==2);
+            GINAC_ASSERT(d8.seq.size()==2);
             coloridx const & first_idx=ex_to_coloridx(d8.seq[0]);
             coloridx const & second_idx=ex_to_coloridx(d8.seq[1]);
             // delta8_{a,a} should have been contracted in color::eval()
-            ASSERT((!first_idx.is_equal(second_idx))||(!first_idx.is_symbolic()));
+            GINAC_ASSERT((!first_idx.is_equal(second_idx))||(!first_idx.is_symbolic()));
             ex saved_delta8=*it; // save to restore it later
 
             // try to contract first index
@@ -402,8 +405,8 @@ ex color::simplify_ncmul(exvector const & v) const
                     *it=saved_delta8;
                 } else {
                     // a contracted index should occur exactly twice
-                    ASSERT(replacements==2);
-                    *it=exONE();
+                    GINAC_ASSERT(replacements==2);
+                    *it=_ex1();
                     something_changed=true;
                 }
             }
@@ -417,8 +420,8 @@ ex color::simplify_ncmul(exvector const & v) const
                     *it=saved_delta8;
                 } else {
                     // a contracted index should occur exactly twice
-                    ASSERT(replacements==2);
-                    *it=exONE();
+                    GINAC_ASSERT(replacements==2);
+                    *it=_ex1();
                     something_changed=true;
                 }
             }
@@ -438,9 +441,9 @@ ex color::simplify_ncmul(exvector const & v) const
     exvector delta8vec;
     exvector fvec;
     exvector dvec;
-    vector<exvector> Tvecs;
+    exvectorvector Tvecs;
     Tvecs.resize(MAX_REPRESENTATION_LABELS);
-    vector<exvector> ONEvecs;
+    exvectorvector ONEvecs;
     ONEvecs.resize(MAX_REPRESENTATION_LABELS);
     exvector unknownvec;
     
@@ -450,12 +453,12 @@ ex color::simplify_ncmul(exvector const & v) const
     if ((dvec.size()>=1)&&(fvec.size()>=1)) {
         for (exvector::iterator it1=dvec.begin(); it1!=dvec.end(); ++it1) {
             for (exvector::iterator it2=fvec.begin(); it2!=fvec.end(); ++it2) {
-                ASSERT(is_ex_exactly_of_type(*it1,color));
-                ASSERT(is_ex_exactly_of_type(*it2,color));
+                GINAC_ASSERT(is_ex_exactly_of_type(*it1,color));
+                GINAC_ASSERT(is_ex_exactly_of_type(*it2,color));
                 color const & col1=ex_to_color(*it1);
                 color const & col2=ex_to_color(*it2);
                 exvector iv_intersect=idx_intersect(col1.seq,col2.seq);
-                if (iv_intersect.size()>=2) return exZERO();
+                if (iv_intersect.size()>=2) return _ex0();
             }
         }
     }
@@ -464,21 +467,21 @@ ex color::simplify_ncmul(exvector const & v) const
     if (dvec.size()>=2) {
         for (exvector::iterator it1=dvec.begin(); it1!=dvec.end()-1; ++it1) {
             for (exvector::iterator it2=it1+1; it2!=dvec.end(); ++it2) {
-                ASSERT(is_ex_exactly_of_type(*it1,color));
-                ASSERT(is_ex_exactly_of_type(*it2,color));
+                GINAC_ASSERT(is_ex_exactly_of_type(*it1,color));
+                GINAC_ASSERT(is_ex_exactly_of_type(*it2,color));
                 color const & col1=ex_to_color(*it1);
                 color const & col2=ex_to_color(*it2);
                 exvector iv_intersect=idx_intersect(col1.seq,col2.seq);
                 if (iv_intersect.size()>=2) {
                     if (iv_intersect.size()==3) {
                         *it1=numeric(40)/numeric(3);
-                        *it2=exONE();
+                        *it2=_ex1();
                     } else {
                         int sig1, sig2; // unimportant, since symmetric
                         ex idx1=permute_free_index_to_front(col1.seq,iv_intersect,false,&sig1);
                         ex idx2=permute_free_index_to_front(col2.seq,iv_intersect,false,&sig2);
                         *it1=numeric(5)/numeric(3)*color(color_delta8,idx1,idx2);
-                        *it2=exONE();
+                        *it2=_ex1();
                     }
                     return nonsimplified_ncmul(recombine_color_string(
                            delta8vec,fvec,dvec,Tvecs,ONEvecs,unknownvec));
@@ -491,21 +494,21 @@ ex color::simplify_ncmul(exvector const & v) const
     if (fvec.size()>=2) {
         for (exvector::iterator it1=fvec.begin(); it1!=fvec.end()-1; ++it1) {
             for (exvector::iterator it2=it1+1; it2!=fvec.end(); ++it2) {
-                ASSERT(is_ex_exactly_of_type(*it1,color));
-                ASSERT(is_ex_exactly_of_type(*it2,color));
+                GINAC_ASSERT(is_ex_exactly_of_type(*it1,color));
+                GINAC_ASSERT(is_ex_exactly_of_type(*it2,color));
                 color const & col1=ex_to_color(*it1);
                 color const & col2=ex_to_color(*it2);
                 exvector iv_intersect=idx_intersect(col1.seq,col2.seq);
                 if (iv_intersect.size()>=2) {
                     if (iv_intersect.size()==3) {
                         *it1=numeric(24);
-                        *it2=exONE();
+                        *it2=_ex1();
                     } else {
                         int sig1, sig2;
                         ex idx1=permute_free_index_to_front(col1.seq,iv_intersect,true,&sig1);
                         ex idx2=permute_free_index_to_front(col2.seq,iv_intersect,true,&sig2);
                         *it1=numeric(sig1*sig2*5)/numeric(3)*color(color_delta8,idx1,idx2);
-                        *it2=exONE();
+                        *it2=_ex1();
                     }
                     return nonsimplified_ncmul(recombine_color_string(
                            delta8vec,fvec,dvec,Tvecs,ONEvecs,unknownvec));
@@ -520,14 +523,14 @@ ex color::simplify_ncmul(exvector const & v) const
         if ((Tvecs[rl].size()>=2)&&((dvec.size()>=1)||(fvec.size()>=1))) {
             for (exvector::iterator it1=Tvecs[rl].begin(); it1!=Tvecs[rl].end()-1; ++it1) {
                 exvector iv;
-                ASSERT(is_ex_exactly_of_type(*it1,color)&&ex_to_color(*it1).type==color_T);
-                ASSERT(is_ex_exactly_of_type(*(it1+1),color)&&ex_to_color(*(it1+1)).type==color_T);
+                GINAC_ASSERT(is_ex_exactly_of_type(*it1,color)&&ex_to_color(*it1).type==color_T);
+                GINAC_ASSERT(is_ex_exactly_of_type(*(it1+1),color)&&ex_to_color(*(it1+1)).type==color_T);
                 iv.push_back(ex_to_color(*it1).seq[0]);
                 iv.push_back(ex_to_color(*(it1+1)).seq[0]);
                 
                 // d_{a,b,c} T_b T_c = 5/6 T_a
                 for (exvector::iterator it2=dvec.begin(); it2!=dvec.end(); ++it2) {
-                    ASSERT(is_ex_exactly_of_type(*it2,color)&&ex_to_color(*it2).type==color_d);
+                    GINAC_ASSERT(is_ex_exactly_of_type(*it2,color)&&ex_to_color(*it2).type==color_d);
                     color const & dref=ex_to_color(*it2);
                     exvector iv_intersect=idx_intersect(dref.seq,iv);
                     if (iv_intersect.size()==2) {
@@ -543,7 +546,7 @@ ex color::simplify_ncmul(exvector const & v) const
 
                 // f_{a,b,c} T_b T_c = 3/2 I T_a
                 for (exvector::iterator it2=fvec.begin(); it2!=fvec.end(); ++it2) {
-                    ASSERT(is_ex_exactly_of_type(*it2,color)&&ex_to_color(*it2).type==color_f);
+                    GINAC_ASSERT(is_ex_exactly_of_type(*it2,color)&&ex_to_color(*it2).type==color_f);
                     color const & fref=ex_to_color(*it2);
                     exvector iv_intersect=idx_intersect(fref.seq,iv);
                     if (iv_intersect.size()==2) {
@@ -654,8 +657,8 @@ color color_delta8(ex const & a, ex const & b)
 
 void split_color_string_in_parts(exvector const & v, exvector & delta8vec,
                                  exvector & fvec, exvector & dvec,
-                                 vector<exvector> & Tvecs,
-                                 vector<exvector> & ONEvecs,
+                                 exvectorvector & Tvecs,
+                                 exvectorvector & ONEvecs,
                                  exvector & unknownvec)
 {
     // if not all elements are of type color, put all Ts in unknownvec to
@@ -681,7 +684,7 @@ void split_color_string_in_parts(exvector const & v, exvector & delta8vec,
                 dvec.push_back(*cit);
                 break;
             case color::color_T:
-                ASSERT(ex_to_color(*cit).representation_label<MAX_REPRESENTATION_LABELS);
+                GINAC_ASSERT(ex_to_color(*cit).representation_label<MAX_REPRESENTATION_LABELS);
                 if (all_color) {
                     Tvecs[ex_to_color(*cit).representation_label].push_back(*cit);
                 } else {
@@ -689,7 +692,7 @@ void split_color_string_in_parts(exvector const & v, exvector & delta8vec,
                 }
                 break;
             case color::color_ONE:
-                ASSERT(ex_to_color(*cit).representation_label<MAX_REPRESENTATION_LABELS);
+                GINAC_ASSERT(ex_to_color(*cit).representation_label<MAX_REPRESENTATION_LABELS);
                 ONEvecs[ex_to_color(*cit).representation_label].push_back(*cit);
                 break;
             default:
@@ -702,8 +705,8 @@ void split_color_string_in_parts(exvector const & v, exvector & delta8vec,
 }    
 
 exvector recombine_color_string(exvector & delta8vec, exvector & fvec,
-                                exvector & dvec, vector<exvector> & Tvecs,
-                                vector<exvector> & ONEvecs, exvector & unknownvec)
+                                exvector & dvec, exvectorvector & Tvecs,
+                                exvectorvector & ONEvecs, exvector & unknownvec)
 {
     unsigned sz=delta8vec.size()+fvec.size()+dvec.size()+unknownvec.size();
     for (unsigned rl=0; rl<MAX_REPRESENTATION_LABELS; ++rl) {
@@ -729,17 +732,17 @@ ex color_trace_of_one_representation_label(exvector const & v)
     if (v.size()==0) {
         return numeric(COLOR_THREE);
     } else if (v.size()==1) {
-        ASSERT(is_ex_exactly_of_type(*(v.begin()),color));
-        return exZERO();
+        GINAC_ASSERT(is_ex_exactly_of_type(*(v.begin()),color));
+        return _ex0();
     }
     exvector v1=v;
     ex last_element=v1.back();
-    ASSERT(is_ex_exactly_of_type(last_element,color));
-    ASSERT(ex_to_color(last_element).type==color::color_T);
+    GINAC_ASSERT(is_ex_exactly_of_type(last_element,color));
+    GINAC_ASSERT(ex_to_color(last_element).type==color::color_T);
     v1.pop_back();
     ex next_to_last_element=v1.back();
-    ASSERT(is_ex_exactly_of_type(next_to_last_element,color));
-    ASSERT(ex_to_color(next_to_last_element).type==color::color_T);
+    GINAC_ASSERT(is_ex_exactly_of_type(next_to_last_element,color));
+    GINAC_ASSERT(ex_to_color(next_to_last_element).type==color::color_T);
     v1.pop_back();
     exvector v2=v1;
 
@@ -767,7 +770,7 @@ ex color_trace_of_one_representation_label(exvector const & v)
 
 ex color_trace(exvector const & v, unsigned const rl)
 {
-    ASSERT(rl<MAX_REPRESENTATION_LABELS);
+    GINAC_ASSERT(rl<MAX_REPRESENTATION_LABELS);
     
     exvector v_rest;
     v_rest.reserve(v.size()+1); // max size if trace is empty
@@ -775,9 +778,9 @@ ex color_trace(exvector const & v, unsigned const rl)
     exvector delta8vec;
     exvector fvec;
     exvector dvec;
-    vector<exvector> Tvecs;
+    exvectorvector Tvecs;
     Tvecs.resize(MAX_REPRESENTATION_LABELS);
-    vector<exvector> ONEvecs;
+    exvectorvector ONEvecs;
     ONEvecs.resize(MAX_REPRESENTATION_LABELS);
     exvector unknownvec;
 
@@ -810,14 +813,14 @@ ex color_trace(exvector const & v, unsigned const rl)
 
 ex simplify_pure_color_string(ex const & e)
 {
-    ASSERT(is_ex_exactly_of_type(e,ncmul));
+    GINAC_ASSERT(is_ex_exactly_of_type(e,ncmul));
 
     exvector delta8vec;
     exvector fvec;
     exvector dvec;
-    vector<exvector> Tvecs;
+    exvectorvector Tvecs;
     Tvecs.resize(MAX_REPRESENTATION_LABELS);
-    vector<exvector> ONEvecs;
+    exvectorvector ONEvecs;
     ONEvecs.resize(MAX_REPRESENTATION_LABELS);
     exvector unknownvec;
 
@@ -830,10 +833,10 @@ ex simplify_pure_color_string(ex const & e)
                 for (unsigned j=i+1; j<Tvecs[rl].size(); ++j) {
                     ex & t1=Tvecs[rl][i];
                     ex & t2=Tvecs[rl][j];
-                    ASSERT(is_ex_exactly_of_type(t1,color)&&
+                    GINAC_ASSERT(is_ex_exactly_of_type(t1,color)&&
                            (ex_to_color(t1).type==color::color_T)&&
                            (ex_to_color(t1).seq.size()==1));
-                    ASSERT(is_ex_exactly_of_type(t2,color)&&
+                    GINAC_ASSERT(is_ex_exactly_of_type(t2,color)&&
                            (ex_to_color(t2).type==color::color_T)&&
                            (ex_to_color(t2).seq.size()==1));
                     coloridx const & idx1=ex_to_coloridx(ex_to_color(t1).seq[0]);
@@ -844,12 +847,12 @@ ex simplify_pure_color_string(ex const & e)
                         for (unsigned k=i+1; k<j; ++k) {
                             S.push_back(Tvecs[rl][k]);
                         }
-                        t1=exONE();
-                        t2=exONE();
+                        t1=_ex1();
+                        t2=_ex1();
                         ex term1=numeric(-1)/numeric(6)*nonsimplified_ncmul(recombine_color_string(
                                  delta8vec,fvec,dvec,Tvecs,ONEvecs,unknownvec));
                         for (unsigned k=i+1; k<j; ++k) {
-                            S.push_back(exONE());
+                            S.push_back(_ex1());
                         }
                         t1=color_trace_of_one_representation_label(S);
                         ex term2=numeric(1)/numeric(2)*nonsimplified_ncmul(recombine_color_string(
@@ -873,7 +876,7 @@ ex simplify_color(ex const & e)
 
     // simplification of sum=sum of simplifications
     if (is_ex_exactly_of_type(e_expanded,add)) {
-        ex sum=exZERO();
+        ex sum=_ex0();
         for (int i=0; i<e_expanded.nops(); ++i) {
             sum += simplify_color(e_expanded.op(i));
         }
@@ -882,7 +885,7 @@ ex simplify_color(ex const & e)
 
     // simplification of commutative product=commutative product of simplifications
     if (is_ex_exactly_of_type(e_expanded,mul)) {
-        ex prod=exONE();
+        ex prod=_ex1();
         for (int i=0; i<e_expanded.nops(); ++i) {
             prod *= simplify_color(e_expanded.op(i));
         }
@@ -915,9 +918,9 @@ ex brute_force_sum_color_indices(ex const & e)
     // find double symbolic indices
     if (iv_all.size()<2) return e;
     for (exvector::const_iterator cit1=iv_all.begin(); cit1!=iv_all.end()-1; ++cit1) {
-        ASSERT(is_ex_of_type(*cit1,coloridx));
+        GINAC_ASSERT(is_ex_of_type(*cit1,coloridx));
         for (exvector::const_iterator cit2=cit1+1; cit2!=iv_all.end(); ++cit2) {
-            ASSERT(is_ex_of_type(*cit2,coloridx));
+            GINAC_ASSERT(is_ex_of_type(*cit2,coloridx));
             if (ex_to_coloridx(*cit1).is_symbolic() && 
                 ex_to_coloridx(*cit1).is_equal(ex_to_coloridx(*cit2))) {
                 iv_double.push_back(*cit1);
@@ -933,7 +936,7 @@ ex brute_force_sum_color_indices(ex const & e)
         counter[l]=1;
     }
 
-    ex sum=exZERO();
+    ex sum=_ex0();
     
     while (1) {
         ex term=e;
@@ -965,4 +968,7 @@ void append_exvector_to_exvector(exvector & dest, exvector const & source)
     }
 }
 
+#ifndef NO_GINAC_NAMESPACE
 } // namespace GiNaC
+#endif // ndef NO_GINAC_NAMESPACE
+