From 09f37bdbd46f469b3a8a902a43d0f795c41a89bf Mon Sep 17 00:00:00 2001 From: Richard Kreckel Date: Wed, 3 Jul 2002 21:31:50 +0000 Subject: [PATCH] * Include the operators.h header file in the source files, not in ex.h. Rationale: It really gets in the way there, when trying to strip down the source files for debugging purposes. * are_ex_trivially_equal(): use this only when reasonable, i.e. when an operation on all children was a no-op such that the this pointer is returned. --- ginac/add.cpp | 9 +++++---- ginac/basic.cpp | 1 + ginac/clifford.cpp | 1 + ginac/color.cpp | 1 + ginac/ex.h | 1 - ginac/expairseq.cpp | 1 + ginac/fderivative.cpp | 1 + ginac/indexed.cpp | 1 + ginac/inifcns.cpp | 1 + ginac/inifcns_gamma.cpp | 1 + ginac/inifcns_trans.cpp | 1 + ginac/inifcns_zeta.cpp | 1 + ginac/input_parser.yy | 1 + ginac/matrix.cpp | 1 + ginac/mul.cpp | 12 ++++++------ ginac/normal.cpp | 1 + ginac/numeric.cpp | 1 + ginac/power.cpp | 5 +++-- ginac/pseries.cpp | 1 + ginac/relational.cpp | 1 + ginac/symmetry.cpp | 1 + ginac/tensor.cpp | 1 + 22 files changed, 32 insertions(+), 13 deletions(-) diff --git a/ginac/add.cpp b/ginac/add.cpp index bde5b2b7..36dafd8f 100644 --- a/ginac/add.cpp +++ b/ginac/add.cpp @@ -25,8 +25,9 @@ #include "add.h" #include "mul.h" -#include "matrix.h" #include "archive.h" +#include "operators.h" +#include "matrix.h" #include "utils.h" namespace GiNaC { @@ -473,14 +474,14 @@ expair add::combine_ex_with_coeff_to_pair(const ex & e, mulcopyp->clearflag(status_flags::evaluated); mulcopyp->clearflag(status_flags::hash_calculated); mulcopyp->setflag(status_flags::dynallocated); - if (are_ex_trivially_equal(c, _ex1)) + if (c.is_equal(_ex1)) return expair(*mulcopyp, numfactor); - else if (are_ex_trivially_equal(numfactor, _ex1)) + else if (numfactor.is_equal(_ex1)) return expair(*mulcopyp, c); else return expair(*mulcopyp, ex_to(numfactor).mul_dyn(ex_to(c))); } else if (is_exactly_a(e)) { - if (are_ex_trivially_equal(c, _ex1)) + if (c.is_equal(_ex1)) return expair(e, _ex1); return expair(ex_to(e).mul_dyn(ex_to(c)), _ex1); } diff --git a/ginac/basic.cpp b/ginac/basic.cpp index 79fab079..882755f1 100644 --- a/ginac/basic.cpp +++ b/ginac/basic.cpp @@ -34,6 +34,7 @@ #include "lst.h" #include "ncmul.h" #include "relational.h" +#include "operators.h" #include "wildcard.h" #include "print.h" #include "archive.h" diff --git a/ginac/clifford.cpp b/ginac/clifford.cpp index 9533ccd1..2d8904f9 100644 --- a/ginac/clifford.cpp +++ b/ginac/clifford.cpp @@ -32,6 +32,7 @@ #include "symmetry.h" #include "lst.h" #include "relational.h" +#include "operators.h" #include "mul.h" #include "print.h" #include "archive.h" diff --git a/ginac/color.cpp b/ginac/color.cpp index 7c2b37de..16f68c07 100644 --- a/ginac/color.cpp +++ b/ginac/color.cpp @@ -27,6 +27,7 @@ #include "idx.h" #include "ncmul.h" #include "symmetry.h" +#include "operators.h" #include "numeric.h" #include "mul.h" #include "power.h" // for sqrt() diff --git a/ginac/ex.h b/ginac/ex.h index cf59b2a1..af5cac31 100644 --- a/ginac/ex.h +++ b/ginac/ex.h @@ -27,7 +27,6 @@ #include #include "basic.h" -#include "operators.h" namespace GiNaC { diff --git a/ginac/expairseq.cpp b/ginac/expairseq.cpp index 44bc87ef..51af5f88 100644 --- a/ginac/expairseq.cpp +++ b/ginac/expairseq.cpp @@ -33,6 +33,7 @@ #include "wildcard.h" #include "print.h" #include "archive.h" +#include "operators.h" #include "utils.h" #if EXPAIRSEQ_USE_HASHTAB diff --git a/ginac/fderivative.cpp b/ginac/fderivative.cpp index c571d809..e925f897 100644 --- a/ginac/fderivative.cpp +++ b/ginac/fderivative.cpp @@ -23,6 +23,7 @@ #include #include "fderivative.h" +#include "operators.h" #include "print.h" #include "archive.h" #include "utils.h" diff --git a/ginac/indexed.cpp b/ginac/indexed.cpp index 85ef415f..12561cf1 100644 --- a/ginac/indexed.cpp +++ b/ginac/indexed.cpp @@ -30,6 +30,7 @@ #include "ncmul.h" #include "power.h" #include "symmetry.h" +#include "operators.h" #include "lst.h" #include "print.h" #include "archive.h" diff --git a/ginac/inifcns.cpp b/ginac/inifcns.cpp index 52220b5b..761a9eac 100644 --- a/ginac/inifcns.cpp +++ b/ginac/inifcns.cpp @@ -30,6 +30,7 @@ #include "matrix.h" #include "mul.h" #include "power.h" +#include "operators.h" #include "relational.h" #include "pseries.h" #include "symbol.h" diff --git a/ginac/inifcns_gamma.cpp b/ginac/inifcns_gamma.cpp index 72eeec08..d2e9a6b7 100644 --- a/ginac/inifcns_gamma.cpp +++ b/ginac/inifcns_gamma.cpp @@ -30,6 +30,7 @@ #include "numeric.h" #include "power.h" #include "relational.h" +#include "operators.h" #include "symbol.h" #include "symmetry.h" #include "utils.h" diff --git a/ginac/inifcns_trans.cpp b/ginac/inifcns_trans.cpp index 9db0cbd1..877e2c28 100644 --- a/ginac/inifcns_trans.cpp +++ b/ginac/inifcns_trans.cpp @@ -29,6 +29,7 @@ #include "constant.h" #include "numeric.h" #include "power.h" +#include "operators.h" #include "relational.h" #include "symbol.h" #include "pseries.h" diff --git a/ginac/inifcns_zeta.cpp b/ginac/inifcns_zeta.cpp index d7e29c06..45ab0c95 100644 --- a/ginac/inifcns_zeta.cpp +++ b/ginac/inifcns_zeta.cpp @@ -28,6 +28,7 @@ #include "numeric.h" #include "power.h" #include "symbol.h" +#include "operators.h" #include "utils.h" namespace GiNaC { diff --git a/ginac/input_parser.yy b/ginac/input_parser.yy index d3ffd195..778b8347 100644 --- a/ginac/input_parser.yy +++ b/ginac/input_parser.yy @@ -32,6 +32,7 @@ #include "input_lexer.h" #include "ex.h" #include "relational.h" +#include "operators.h" #include "symbol.h" #include "lst.h" #include "power.h" diff --git a/ginac/matrix.cpp b/ginac/matrix.cpp index 7421e149..1c316a35 100644 --- a/ginac/matrix.cpp +++ b/ginac/matrix.cpp @@ -32,6 +32,7 @@ #include "indexed.h" #include "power.h" #include "symbol.h" +#include "operators.h" #include "normal.h" #include "print.h" #include "archive.h" diff --git a/ginac/mul.cpp b/ginac/mul.cpp index 8127c316..23547841 100644 --- a/ginac/mul.cpp +++ b/ginac/mul.cpp @@ -27,6 +27,7 @@ #include "mul.h" #include "add.h" #include "power.h" +#include "operators.h" #include "matrix.h" #include "archive.h" #include "utils.h" @@ -119,7 +120,6 @@ DEFAULT_ARCHIVING(mul) ////////// // public - void mul::print(const print_context & c, unsigned level) const { if (is_a(c)) { @@ -189,7 +189,7 @@ void mul::print(const print_context & c, unsigned level) const bool first = true; // First print the overall numeric coefficient - numeric coeff = ex_to(overall_coeff); + const numeric &coeff = ex_to(overall_coeff); if (coeff.csgn() == -1) c.s << '-'; if (!coeff.is_equal(_num1) && @@ -581,9 +581,9 @@ expair mul::combine_ex_with_coeff_to_pair(const ex & e, { // to avoid duplication of power simplification rules, // we create a temporary power object - // otherwise it would be hard to correctly simplify + // otherwise it would be hard to correctly evaluate // expression like (4^(1/3))^(3/2) - if (are_ex_trivially_equal(c,_ex1)) + if (c.is_equal(_ex1)) return split_ex_to_pair(e); return split_ex_to_pair(power(e,c)); @@ -594,9 +594,9 @@ expair mul::combine_pair_with_coeff_to_pair(const expair & p, { // to avoid duplication of power simplification rules, // we create a temporary power object - // otherwise it would be hard to correctly simplify + // otherwise it would be hard to correctly evaluate // expression like (4^(1/3))^(3/2) - if (are_ex_trivially_equal(c,_ex1)) + if (c.is_equal(_ex1)) return p; return split_ex_to_pair(power(recombine_pair_to_ex(p),c)); diff --git a/ginac/normal.cpp b/ginac/normal.cpp index 956b646e..c936b566 100644 --- a/ginac/normal.cpp +++ b/ginac/normal.cpp @@ -39,6 +39,7 @@ #include "numeric.h" #include "power.h" #include "relational.h" +#include "operators.h" #include "matrix.h" #include "pseries.h" #include "symbol.h" diff --git a/ginac/numeric.cpp b/ginac/numeric.cpp index 7bdca344..005e57e3 100644 --- a/ginac/numeric.cpp +++ b/ginac/numeric.cpp @@ -34,6 +34,7 @@ #include "numeric.h" #include "ex.h" #include "print.h" +#include "operators.h" #include "archive.h" #include "tostring.h" #include "utils.h" diff --git a/ginac/power.cpp b/ginac/power.cpp index bbed51fe..90850c67 100644 --- a/ginac/power.cpp +++ b/ginac/power.cpp @@ -31,6 +31,7 @@ #include "ncmul.h" #include "numeric.h" #include "constant.h" +#include "operators.h" #include "inifcns.h" // for log() in power::derivative() #include "matrix.h" #include "indexed.h" @@ -754,7 +755,7 @@ ex power::expand_add_2(const add & a) const !is_exactly_a(ex_to(r).basis) || !is_exactly_a(ex_to(r).basis)); - if (are_ex_trivially_equal(c,_ex1)) { + if (c.is_equal(_ex1)) { if (is_exactly_a(r)) { sum.push_back(expair(expand_mul(ex_to(r),_num2), _ex1)); @@ -771,7 +772,7 @@ ex power::expand_add_2(const add & a) const ex_to(c).power_dyn(_num2))); } } - + for (epvector::const_iterator cit1=cit0+1; cit1!=last; ++cit1) { const ex & r1 = cit1->rest; const ex & c1 = cit1->coeff; diff --git a/ginac/pseries.cpp b/ginac/pseries.cpp index dab286f5..8479735c 100644 --- a/ginac/pseries.cpp +++ b/ginac/pseries.cpp @@ -31,6 +31,7 @@ #include "mul.h" #include "power.h" #include "relational.h" +#include "operators.h" #include "symbol.h" #include "print.h" #include "archive.h" diff --git a/ginac/relational.cpp b/ginac/relational.cpp index 9ff452be..78d0b7d4 100644 --- a/ginac/relational.cpp +++ b/ginac/relational.cpp @@ -24,6 +24,7 @@ #include #include "relational.h" +#include "operators.h" #include "numeric.h" #include "print.h" #include "archive.h" diff --git a/ginac/symmetry.cpp b/ginac/symmetry.cpp index 8a766214..78dd75cf 100644 --- a/ginac/symmetry.cpp +++ b/ginac/symmetry.cpp @@ -27,6 +27,7 @@ #include "symmetry.h" #include "lst.h" #include "numeric.h" // for factorial() +#include "operators.h" #include "print.h" #include "archive.h" #include "utils.h" diff --git a/ginac/tensor.cpp b/ginac/tensor.cpp index afdd28ca..b71f6b03 100644 --- a/ginac/tensor.cpp +++ b/ginac/tensor.cpp @@ -29,6 +29,7 @@ #include "indexed.h" #include "symmetry.h" #include "relational.h" +#include "operators.h" #include "lst.h" #include "numeric.h" #include "matrix.h" -- 2.47.0