X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?a=blobdiff_plain;f=ginac%2Flortensor.cpp;h=657d10b6560a637b50ed0a7f2a748996308b226d;hb=3769991e769b3a4f6f6eb936201c02270b255e11;hp=7cbd2f43ede41c115b7d4b71d1ce163d3318eb9d;hpb=b5e7e31e6d33bbae4d635c27637c7e114b043735;p=ginac.git diff --git a/ginac/lortensor.cpp b/ginac/lortensor.cpp index 7cbd2f43..657d10b6 100644 --- a/ginac/lortensor.cpp +++ b/ginac/lortensor.cpp @@ -4,7 +4,7 @@ * No real implementation yet, do be done. */ /* - * GiNaC Copyright (C) 1999 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2000 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 @@ -35,11 +35,11 @@ #include "flags.h" #include "lst.h" #include "lortensor.h" -#include "utils.h" #include "operators.h" #include "tinfos.h" #include "power.h" #include "symbol.h" +#include "utils.h" #ifndef NO_GINAC_NAMESPACE namespace GiNaC { @@ -65,13 +65,13 @@ lortensor::~lortensor() destroy(0); } -lortensor::lortensor(lortensor const & other) +lortensor::lortensor(const lortensor & other) { debugmsg("lortensor copy constructor",LOGLEVEL_CONSTRUCT); copy (other); } -lortensor const & lortensor::operator=(lortensor const & other) +const lortensor & lortensor::operator=(const lortensor & other) { debugmsg("lortensor operator=",LOGLEVEL_ASSIGNMENT); if (this != & other) { @@ -83,7 +83,7 @@ lortensor const & lortensor::operator=(lortensor const & other) //protected -void lortensor::copy(lortensor const & other) +void lortensor::copy(const lortensor & other) { indexed::copy(other); type=other.type; @@ -104,14 +104,14 @@ void lortensor::destroy(bool call_parent) // protected -lortensor::lortensor(lortensor_types const lt, string const & n) : type(lt), name(n) +lortensor::lortensor(lortensor_types const lt, const string & n) : type(lt), name(n) { debugmsg("lortensor constructor from lortensor_types,string",LOGLEVEL_CONSTRUCT); serial=next_serial++; tinfo_key=TINFO_lortensor; } -lortensor::lortensor(lortensor_types const lt, string const & n, ex const & mu) : indexed(mu), type(lt), name(n) +lortensor::lortensor(lortensor_types const lt, const string & n, const ex & mu) : indexed(mu), type(lt), name(n) { debugmsg("lortensor constructor from lortensor_types,string,ex",LOGLEVEL_CONSTRUCT); serial=next_serial++; @@ -119,7 +119,7 @@ lortensor::lortensor(lortensor_types const lt, string const & n, ex const & mu) tinfo_key=TINFO_lortensor; } -lortensor::lortensor(lortensor_types const lt, string const & n, ex const & mu, ex const & nu) : indexed(mu,nu), type(lt), name(n) +lortensor::lortensor(lortensor_types const lt, const string & n, const ex & mu, const ex & nu) : indexed(mu,nu), type(lt), name(n) { debugmsg("lortensor constructor from lortensor_types,string,ex,ex",LOGLEVEL_CONSTRUCT); serial=next_serial++; @@ -127,7 +127,7 @@ lortensor::lortensor(lortensor_types const lt, string const & n, ex const & mu, tinfo_key=TINFO_lortensor; } -lortensor::lortensor(lortensor_types const lt, string const & n, ex const & mu, ex const & nu, ex const & rho) : indexed(mu,nu,rho), type(lt), name(n) +lortensor::lortensor(lortensor_types const lt, const string & n, const ex & mu, const ex & nu, const ex & rho) : indexed(mu,nu,rho), type(lt), name(n) { debugmsg("lortensor constructor from lortensor_types,string,ex,ex,ex",LOGLEVEL_CONSTRUCT); serial=next_serial++; @@ -135,7 +135,7 @@ lortensor::lortensor(lortensor_types const lt, string const & n, ex const & mu, tinfo_key=TINFO_lortensor; } -lortensor::lortensor(lortensor_types const lt, string const & n, ex const & mu, ex const & nu, ex const & rho, ex const & sigma) : indexed(mu,nu,rho,sigma), type(lt), name(n) +lortensor::lortensor(lortensor_types const lt, const string & n, const ex & mu, const ex & nu, const ex & rho, const ex & sigma) : indexed(mu,nu,rho,sigma), type(lt), name(n) { debugmsg("lortensor constructor from lortensor_types,string,ex,ex,ex,ex",LOGLEVEL_CONSTRUCT); serial=next_serial++; @@ -143,7 +143,7 @@ lortensor::lortensor(lortensor_types const lt, string const & n, ex const & mu, tinfo_key=TINFO_lortensor; } -lortensor::lortensor(lortensor_types const lt, string const & n, exvector const & iv) : indexed(iv), type(lt), name(n) +lortensor::lortensor(lortensor_types const lt, const string & n, const exvector & iv) : indexed(iv), type(lt), name(n) { debugmsg("lortensor constructor from lortensor_types,string,exvector",LOGLEVEL_CONSTRUCT); serial=next_serial++; @@ -151,14 +151,14 @@ lortensor::lortensor(lortensor_types const lt, string const & n, exvector const tinfo_key=TINFO_lortensor; } -lortensor::lortensor(lortensor_types const lt, string const & n, unsigned s, exvector const & iv) : indexed(iv), type(lt), name(n), serial(s) +lortensor::lortensor(lortensor_types const lt, const string & n, unsigned s, const exvector & iv) : indexed(iv), type(lt), name(n), serial(s) { debugmsg("lortensor constructor from lortensor_types,string,unsigned,exvector",LOGLEVEL_CONSTRUCT); GINAC_ASSERT(all_of_type_lorentzidx()); tinfo_key=TINFO_lortensor; } -lortensor::lortensor(lortensor_types const lt, string const & n, unsigned s, exvector *ivp) : indexed(ivp), type(lt), name(n), serial(s) +lortensor::lortensor(lortensor_types const lt, const string & n, unsigned s, exvector *ivp) : indexed(ivp), type(lt), name(n), serial(s) { debugmsg("lortensor constructor from lortensor_types,string,unsigned,exvector",LOGLEVEL_CONSTRUCT); GINAC_ASSERT(all_of_type_lorentzidx()); @@ -246,27 +246,27 @@ ex lortensor::eval(int level) const //something has changed while sorting indices, more evaluations later return ex(sig) *lortensor(type,name,iv); } - lorentzidx const & idx1=ex_to_lorentzidx(seq[0]); - lorentzidx const & idx2=ex_to_lorentzidx(seq[1]); + const lorentzidx & idx1=ex_to_lorentzidx(seq[0]); + const lorentzidx & idx2=ex_to_lorentzidx(seq[1]); if ((!idx1.is_symbolic()) && (!idx2.is_symbolic())) { //both indices are numeric if ((idx1.get_value()==idx2.get_value())) { //both on diagonal if (idx1.get_value()==0){ // (0,0) - return exONE(); + return _ex1(); } else { if (idx1.is_covariant() != idx2.is_covariant()) { // (_i,~i) or (~i,_i), i = 1...3 - return exONE(); + return _ex1(); } else { // (_i,_i) or (~i,~i), i= 1...3 - return exMINUSONE(); + return _ex_1(); } } } else { // at least one off-diagonal - return exZERO(); + return _ex0(); } } else if (idx1.is_symbolic() && idx1.is_co_contra_pair(idx2)) { return Dim()-idx1.get_dim_parallel_space(); @@ -277,7 +277,7 @@ ex lortensor::eval(int level) const //protected -int lortensor::compare_same_type(basic const & other) const +int lortensor::compare_same_type(const basic & other) const { GINAC_ASSERT(is_of_type(other,lortensor)); const lortensor *o = static_cast (&other); @@ -292,7 +292,7 @@ int lortensor::compare_same_type(basic const & other) const return type < o->type ? -1 : 1; } -bool lortensor::is_equal_same_type(basic const & other) const +bool lortensor::is_equal_same_type(const basic & other) const { GINAC_ASSERT(is_of_type(other,lortensor)); const lortensor *o=static_cast (&other); @@ -311,7 +311,7 @@ unsigned lortensor::return_type_tinfo(void) const { return tinfo_key; } -ex lortensor::thisexprseq(exvector const & v) const +ex lortensor::thisexprseq(const exvector & v) const { return lortensor(type,name,serial,v); } @@ -326,7 +326,7 @@ ex lortensor::thisexprseq(exvector *vp) const // protected -void lortensor::setname(string const & n) +void lortensor::setname(const string & n) { name=n; } @@ -361,27 +361,27 @@ unsigned lortensor::next_serial=0; // friend functions ////////// -lortensor lortensor_g(ex const & mu, ex const & nu) +lortensor lortensor_g(const ex & mu, const ex & nu) { return lortensor(lortensor::lortensor_g,"",mu,nu); } -lortensor lortensor_epsilon(ex const & mu, ex const & nu, ex const & rho, ex const & sigma) +lortensor lortensor_epsilon(const ex & mu, const ex & nu, const ex & rho, const ex & sigma) { return lortensor(lortensor::lortensor_epsilon,"",mu,nu,rho,sigma); } -lortensor lortensor_rank1(string const & n, ex const & mu) +lortensor lortensor_rank1(const string & n, const ex & mu) { return lortensor(lortensor::lortensor_rank1,n,mu); } -lortensor lortensor_rank2(string const & n, ex const & mu, ex const & nu) +lortensor lortensor_rank2(const string & n, const ex & mu, const ex & nu) { return lortensor(lortensor::lortensor_rank2,n,mu,nu); } -ex simplify_lortensor_mul(ex const & m) +ex simplify_lortensor_mul(const ex & m) { GINAC_ASSERT(is_ex_exactly_of_type(m,mul)); exvector v_contracted; @@ -391,12 +391,12 @@ ex simplify_lortensor_mul(ex const & m) v_contracted.reserve(2*n); for (int i=0; i