- prepared for 1.0.13 release
authorChristian Bauer <Christian.Bauer@uni-mainz.de>
Tue, 21 Jan 2003 22:50:19 +0000 (22:50 +0000)
committerChristian Bauer <Christian.Bauer@uni-mainz.de>
Tue, 21 Jan 2003 22:50:19 +0000 (22:50 +0000)
- synced to 1.1

81 files changed:
ginac/add.cpp
ginac/add.h
ginac/archive.cpp
ginac/archive.h
ginac/assertion.h
ginac/basic.cpp
ginac/basic.h
ginac/clifford.cpp
ginac/clifford.h
ginac/color.cpp
ginac/color.h
ginac/constant.cpp
ginac/constant.h
ginac/container.pl
ginac/ex.cpp
ginac/ex.h
ginac/expair.cpp
ginac/expair.h
ginac/expairseq.cpp
ginac/expairseq.h
ginac/exprseq_suppl.cpp
ginac/fail.cpp
ginac/fail.h
ginac/fderivative.cpp
ginac/fderivative.h
ginac/flags.h
ginac/function.pl
ginac/ginac.h
ginac/idx.cpp
ginac/idx.h
ginac/indexed.cpp
ginac/indexed.h
ginac/inifcns.cpp
ginac/inifcns.h
ginac/inifcns_gamma.cpp
ginac/inifcns_trans.cpp
ginac/inifcns_zeta.cpp
ginac/input_lexer.h
ginac/input_lexer.ll
ginac/input_parser.yy
ginac/lst_suppl.cpp
ginac/matrix.cpp
ginac/matrix.h
ginac/mul.cpp
ginac/mul.h
ginac/ncmul.cpp
ginac/ncmul.h
ginac/normal.cpp
ginac/normal.h
ginac/numeric.cpp
ginac/numeric.h
ginac/operators.cpp
ginac/operators.h
ginac/power.cpp
ginac/power.h
ginac/print.cpp
ginac/print.h
ginac/pseries.cpp
ginac/pseries.h
ginac/registrar.cpp
ginac/registrar.h
ginac/relational.cpp
ginac/relational.h
ginac/remember.cpp
ginac/remember.h
ginac/structure.cpp
ginac/structure.h
ginac/structure.pl
ginac/symbol.cpp
ginac/symbol.h
ginac/symmetry.cpp
ginac/symmetry.h
ginac/tensor.cpp
ginac/tensor.h
ginac/tinfos.h
ginac/tostring.h
ginac/utils.cpp
ginac/utils.h
ginac/version.h.in
ginac/wildcard.cpp
ginac/wildcard.h

index b3fd1f60bfa678867ab9d4e76ea7fb3ac039ea2d..706013a3905f3ca60e4e45c121b8aa9cfcdefb09 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of GiNaC's sums of expressions. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 9288891921a9643cba026295eebc1f3706e37442..4f55240ade432133c4cde263969714cb70a6bad5 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to GiNaC's sums of expressions. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 2dc14f672c2f8252b6e62f5ab50ca4c39bd2f3d2..28d8afc3dbde5ca0daccfcf1ab0d0fcafd34049e 100644 (file)
@@ -3,7 +3,7 @@
  *  Archiving of GiNaC expressions. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 0dca095b5527a8fcb7d43239d7de249d7905d115..b7e9ba989e296a55e907a547ac0dcb3193236801 100644 (file)
@@ -3,7 +3,7 @@
  *  Archiving of GiNaC expressions. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index e0f1240eb04746adb19302bed883f85c7ae3c64c..0abce53c5c3be2b18bb7f0303484bd85dbca59bb 100644 (file)
@@ -3,7 +3,7 @@
  *  Assertion macro definition. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index fb73096fa70a4796e301ade46306d53849d25068..f625e92b342a39e3538fa397649d5fc836e7e237 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of GiNaC's ABC. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index d7fef59385856882a370e4f8383e67700a784e63..d2d3e865840462c865ae0a0b3d474dc09e42b78a 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to GiNaC's ABC. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index af8b749c34a453fadff041722785ca71fd0cd1ab..b12e385ce4f03f2ca6f9bc7d6fd09342f5f6ef28 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of GiNaC's clifford algebra (Dirac gamma) objects. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
@@ -210,6 +210,8 @@ bool diracgamma::contract_with(exvector::iterator self, exvector::iterator other
        unsigned char rl = ex_to<clifford>(*self).get_representation_label();
        ex dim = ex_to<idx>(self->op(1)).get_dim();
 
+      if (other->nops() > 1)
+              dim = minimal_dim(dim, ex_to<idx>(self->op(1)).get_dim());
        if (is_a<clifford>(*other)) {
 
                // Contraction only makes sense if the represenation labels are equal
@@ -439,7 +441,7 @@ ex clifford::simplify_ncmul(const exvector & v) const
                        } else if (!a_is_diracgamma && !b_is_diracgamma && ag.is_equal(bg)) {
 
                                // a\ a\ -> a^2
-                               varidx ix((new symbol)->setflag(status_flags::dynallocated), ex_to<idx>(a.op(1)).get_dim());
+                               varidx ix((new symbol)->setflag(status_flags::dynallocated), ex_to<idx>(a.op(1)).minimal_dim(ex_to<idx>(b.op(1))));
                                a = indexed(ag, ix) * indexed(ag, ix.toggle_variance());
                                b = dirac_ONE(representation_label);
                                something_changed = true;
index 2a9e73b1a6c6c89d772a88d5e7d86d736d7a14ae..ce5d2acfd50a6b3430d5717c9aa125389d19f3fc 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to GiNaC's clifford algebra (Dirac gamma) objects. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 7d71facf896eb9aca5b0f32126ec4dc0a7480678..4c50a6e7dd8f8c2b2abcab33eb927e2e869cbd78 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of GiNaC's color (SU(3) Lie algebra) objects. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index be51156dc084965c00545426dda8d61ff79e9e75..66cf0769fde054fb041c72da024bd21b29157a8f 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to GiNaC's color (SU(3) Lie algebra) objects. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 5ba8475108af93ef8ccf90ff4fc5afb4fb747fc3..636eeae4104eb7ad3b82377ac0de0d5729d038f4 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of GiNaC's constant types and some special constants. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 6f3aa0fa1786bc4e924a46f3782d034a9bafa65a..e0242d970d060b98df09fbe63ca96a49cf31bfe5 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to GiNaC's constant types and some special constants. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index d187d0654d6973076b9bacc2431d732678b73d53..39c75385197ddbe0a93b684c039a90212a943e88 100755 (executable)
@@ -191,7 +191,7 @@ $interface=<<END_OF_INTERFACE;
  *                        \$close_bracket=${close_bracket}
  *                        \$maxargs=${maxargs}
  *
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
@@ -299,7 +299,7 @@ $implementation=<<END_OF_IMPLEMENTATION;
  *                        \$close_bracket=${close_bracket}
  *                        \$maxargs=${maxargs}
  *
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index c41abee74b5131ea157c9b0b27d842016caddd5c..c69b30b08b92128a3287cbfd9961acb7e1fe4159 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of GiNaC's light-weight expression handles. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 9f3dd6b4a6dc481af9d2711e364a0760cbf9265a..208151df99fbc97616bbc1d74b3b89f5b1de187f 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to GiNaC's light-weight expression handles. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 9fe283b61ebeaa24969b223fa925d99b5d0d70d0..9d8375d85a94d2faa38773b22f73b7e37b622fa9 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of expression pairs (building blocks of expairseq). */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 513dd5c96442b294f1d4a2a755196155a8459334..a170ae8649ba994b621ebc6ef15d51bde99c528f 100644 (file)
@@ -3,7 +3,7 @@
  *  Definition of expression pairs (building blocks of expairseq). */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 3c5a656bd2d52d686eec3abcadbe8ff679d8c83d..f46039d6c231cd34b9a04592591c6423015ea9fd 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of sequences of expression pairs. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 23534978401c240f2fa4e3096282ce529ba1ee91..13e0d161312d89fa38e98a3418f597b6e6124caf 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to sequences of expression pairs. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index a1ddbac371186651354aa65acce955dff8283d83..29bb549ad61caa66e07d0fc747a48966390ff57b 100644 (file)
@@ -4,7 +4,7 @@
  *  generated. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 3b5d75b6a52f8e8bb75c9ec0a0c1bac3897d3dd2..fc539ab5f7f6a9680f146d03c1e8771077cd11da 100644 (file)
@@ -4,7 +4,7 @@
  *  somewhat obsolete (most of this can be replaced by exceptions). */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 117e8fa97d2033dc05ce3d060eb66232a60cdab5..a681d5598ccfa1734abfa8eb9bfd3b892b7b7237 100644 (file)
@@ -4,7 +4,7 @@
  *  somewhat obsolete (most of this can be replaced by exceptions). */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index c571d809fab48db86c6064c6db034707547471e5..20070b84c90eecc94f4f5ffa657ddca52bb37c6a 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of abstract derivatives of functions. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index b57662296c0d37ba51c0f404d2a2aa02907153b7..3b82ad39baf059da7deb6078aa662555b0cf120e 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to abstract derivatives of functions. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 60c10fed2034862ade164e5cee32be8a9b4d11e9..62cd82a4e0840a9c9ae2e241aded65ca7dccfcc7 100644 (file)
@@ -3,7 +3,7 @@
  *  Collection of all flags used through the GiNaC framework. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index d75e8f645ebf3e359d565067837b31ba60d7a174..bc46d710ad3355dd4f4e4ee64e72d8ad6900513a 100755 (executable)
@@ -164,7 +164,7 @@ $interface=<<END_OF_INTERFACE;
  *  Please do not modify it directly, edit the perl script instead!
  *  function.pl options: \$maxargs=${maxargs}
  *
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
@@ -383,7 +383,7 @@ $implementation=<<END_OF_IMPLEMENTATION;
  *  Please do not modify it directly, edit the perl script instead!
  *  function.pl options: \$maxargs=${maxargs}
  *
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index a13cc827985afc1425bf1e096ec41ddeeb71cc8a..183705359d57db4ead9ecd69ed610f85a1e08234 100644 (file)
@@ -3,7 +3,7 @@
  *  This include file includes all other public GiNaC headers. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 26d63910cbfdf0ed395fefee25dadb81a0726196..503a74ace174f6ab32c03a07bea7c3b9236dbb0d 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of GiNaC's indices. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 0b31696c772840c347aa0fad1aa9e71099de93c7..ecc6f468439bb7c25d9fc12b2cdcfcd2077bc711 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to GiNaC's indices. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index d639e3022c387d357a903c2fcd8be7351422824b..9b4092e6cd4336f1cdbc343c7595157be1566611 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of GiNaC's indexed expressions. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
@@ -21,6 +21,7 @@
  */
 
 #include <iostream>
+#include <sstream>
 #include <stdexcept>
 
 #include "indexed.h"
@@ -387,6 +388,22 @@ ex indexed::derivative(const symbol & s) const
 // global functions
 //////////
 
+struct idx_is_equal_ignore_dim : public std::binary_function<ex, ex, bool> {
+       bool operator() (const ex &lh, const ex &rh) const
+       {
+               if (lh.is_equal(rh))
+                       return true;
+               else
+                       try {
+                               // Replacing the dimension might cause an error (e.g. with
+                               // index classes that only work in a fixed number of dimensions)
+                               return lh.is_equal(ex_to<idx>(rh).replace_dim(ex_to<idx>(lh).get_dim()));
+                       } catch (...) {
+                               return false;
+                       }
+       }
+};
+
 /** Check whether two sorted index vectors are consistent (i.e. equal). */
 static bool indices_consistent(const exvector & v1, const exvector & v2)
 {
@@ -394,7 +411,7 @@ static bool indices_consistent(const exvector & v1, const exvector & v2)
        if (v1.size() != v2.size())
                return false;
 
-       return equal(v1.begin(), v1.end(), v2.begin(), ex_is_equal());
+       return equal(v1.begin(), v1.end(), v2.begin(), idx_is_equal_ignore_dim());
 }
 
 exvector indexed::get_indices(void) const
@@ -815,17 +832,11 @@ contraction_done:
  *  obtained during the simplification of sums. */
 class symminfo {
 public:
-       symminfo() {}
+       symminfo() : num(0) {}
        ~symminfo() {}
 
-       symminfo(const ex & symmterm_, const ex & orig_)
+       symminfo(const ex & symmterm_, const ex & orig_, unsigned num_) : orig(orig_), num(num_)
        {
-               if (is_exactly_a<mul>(orig_) && is_exactly_a<numeric>(orig_.op(orig_.nops()-1))) {
-                       ex tmp = orig_.op(orig_.nops()-1);
-                       orig = orig_ / tmp;
-               } else 
-                       orig = orig_;
-
                if (is_exactly_a<mul>(symmterm_) && is_exactly_a<numeric>(symmterm_.op(symmterm_.nops()-1))) {
                        coeff = symmterm_.op(symmterm_.nops()-1);
                        symmterm = symmterm_ / coeff;
@@ -835,40 +846,44 @@ public:
                }
        }
 
-       symminfo(const symminfo & other)
-       {
-               symmterm = other.symmterm;
-               coeff = other.coeff;
-               orig = other.orig;
-       }
+       ex symmterm;  /**< symmetrized term */
+       ex coeff;     /**< coefficient of symmetrized term */
+       ex orig;      /**< original term */
+       unsigned num; /**< how many symmetrized terms resulted from the original term */
+};
 
-       const symminfo & operator=(const symminfo & other)
+class symminfo_is_less_by_symmterm {
+public:
+       bool operator() (const symminfo & si1, const symminfo & si2) const
        {
-               if (this != &other) {
-                       symmterm = other.symmterm;
-                       coeff = other.coeff;
-                       orig = other.orig;
-               }
-               return *this;
+               int comp = si1.symmterm.compare(si2.symmterm);
+               if (comp < 0) return true;
+#if 0
+               if (comp > 0) return false;
+               comp = si1.orig.compare(si2.orig);
+               if (comp < 0) return true;
+               if (comp > 0) return false;
+               comp = si1.coeff.compare(si2.coeff);
+               if (comp < 0) return true;
+#endif
+               return false;
        }
-
-       ex symmterm;
-       ex coeff;
-       ex orig;
 };
 
-class symminfo_is_less {
+class symminfo_is_less_by_orig {
 public:
-       bool operator() (const symminfo & si1, const symminfo & si2)
+       bool operator() (const symminfo & si1, const symminfo & si2) const
        {
-               int comp = si1.symmterm.compare(si2.symmterm);
+               int comp = si1.orig.compare(si2.orig);
                if (comp < 0) return true;
+#if 0
                if (comp > 0) return false;
-               comp = si1.orig.compare(si2.orig);
+               comp = si1.symmterm.compare(si2.symmterm);
                if (comp < 0) return true;
                if (comp > 0) return false;
                comp = si1.coeff.compare(si2.coeff);
                if (comp < 0) return true;
+#endif
                return false;
        }
 };
@@ -920,8 +935,12 @@ ex simplify_indexed(const ex & e, exvector & free_indices, exvector & dummy_indi
                                        sum = term;
                                        first = false;
                                } else {
-                                       if (!indices_consistent(free_indices, free_indices_of_term))
-                                               throw (std::runtime_error("simplify_indexed: inconsistent indices in sum"));
+                                       if (!indices_consistent(free_indices, free_indices_of_term)) {
+                                               std::ostringstream s;
+                                               s << "simplify_indexed: inconsistent indices in sum: ";
+                                               s << exprseq(free_indices) << " vs. " << exprseq(free_indices_of_term);
+                                               throw (std::runtime_error(s.str()));
+                                       }
                                        if (is_ex_of_type(sum, indexed) && is_ex_of_type(term, indexed))
                                                sum = ex_to<basic>(sum.op(0)).add_indexed(sum, term);
                                        else
@@ -950,24 +969,81 @@ ex simplify_indexed(const ex & e, exvector & free_indices, exvector & dummy_indi
                        std::vector<symminfo> v;
                        for (int i=0; i<sum.nops(); i++) {
                                ex sum_symm = sum.op(i).symmetrize(dummy_syms);
+                               if (sum_symm.is_zero())
+                                       continue;
                                if (is_exactly_a<add>(sum_symm))
                                        for (int j=0; j<sum_symm.nops(); j++)
-                                               v.push_back(symminfo(sum_symm.op(j), sum.op(i)));
+                                               v.push_back(symminfo(sum_symm.op(j), sum.op(i), sum_symm.nops()));
                                else
-                                       v.push_back(symminfo(sum_symm, sum.op(i)));
+                                       v.push_back(symminfo(sum_symm, sum.op(i), 1));
                        }
 
                        // Now add up all the unsymmetrized versions of the terms that
                        // did not cancel out in the symmetrization
                        exvector result;
-                       std::sort(v.begin(), v.end(), symminfo_is_less());
-                       for (std::vector<symminfo>::iterator i=v.begin(); i!=v.end(); ) {
-                               std::vector<symminfo>::iterator j = i;
-                               for (j++; j!=v.end() && i->symmterm == j->symmterm; j++) ;
-                               for (std::vector<symminfo>::iterator k=i; k!=j; k++)
-                                       result.push_back((k->coeff)*(i->orig));
+                       std::sort(v.begin(), v.end(), symminfo_is_less_by_symmterm());
+
+                       std::vector<symminfo> v_pass2;
+                       for (std::vector<symminfo>::const_iterator i=v.begin(); i!=v.end(); ) {
+
+                               // Combine equal terms
+                               std::vector<symminfo>::const_iterator j = i + 1;
+                               if (j != v.end() && j->symmterm == i->symmterm) {
+
+                                       // More than one term, collect the coefficients
+                                       ex coeff = i->coeff;
+                                       while (j != v.end() && j->symmterm == i->symmterm) {
+                                               coeff += j->coeff;
+                                               j++;
+                                       }
+
+                                       // Add combined term to result
+                                       if (!coeff.is_zero())
+                                               result.push_back(coeff * i->symmterm);
+
+                               } else {
+
+                                       // Single term, store for second pass
+                                       v_pass2.push_back(*i);
+                               }
+
                                i = j;
                        }
+
+                       // Were there any remaining terms that didn't get combined?
+                       if (v_pass2.size() > 0) {
+
+                               // Yes, sort them by their original term
+                               std::sort(v_pass2.begin(), v_pass2.end(), symminfo_is_less_by_orig());
+
+                               for (std::vector<symminfo>::const_iterator i=v_pass2.begin(); i!=v_pass2.end(); ) {
+
+                                       // How many symmetrized terms of this original term are left?
+                                       unsigned num = 1;
+                                       std::vector<symminfo>::const_iterator j = i + 1;
+                                       while (j != v_pass2.end() && j->orig == i->orig) {
+                                               num++;
+                                               j++;
+                                       }
+
+                                       if (num == i->num) {
+
+                                               // All terms left, then add the original term to the result
+                                               result.push_back(i->orig);
+
+                                       } else {
+
+                                               // Some terms were combined with others, add up the remaining symmetrized terms
+                                               std::vector<symminfo>::const_iterator k;
+                                               for (k=i; k!=j; k++)
+                                                       result.push_back(k->coeff * k->symmterm);
+                                       }
+
+                                       i = j;
+                               }
+                       }
+
+                       // Add all resulting terms
                        ex sum_symm = (new add(result))->setflag(status_flags::dynallocated);
                        if (sum_symm.is_zero())
                                free_indices.clear();
index ad18ddb55f91c568e1b09f727a4f8b814ff59329..0a00e76999d93cb4328ffea566903f17d55c072d 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to GiNaC's indexed expressions. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 745223062a70a0f0ba9332942bdeece970f7a05f..9d373e794a7313d2c68ce5c27381cb0bb8fd49e1 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of GiNaC's initially known functions. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 86156398ee053e4e92fe15b992de96ddab66ddc7..11850c34896a563d935b52807e1a4a372ab4fa07 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to GiNaC's initially known functions. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 1beab9eaffb2d33faab5efda09fa0e4d14014ab3..3f3bd561bc4a54c85dd1f1a9eb912216eb6ff782 100644 (file)
@@ -4,7 +4,7 @@
  *  some related stuff. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index ec2fb91187f0d22bb4731c3a06f83e5aff54c423..67a578dd72b4f1963b752cf2359ba8af9b5ce839 100644 (file)
@@ -4,7 +4,7 @@
  *  functions. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index d7e29c061a69f1ee01585b8159721c822dd041c5..ef956e61f740a467b55a2fe1bab394830112ae38 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of the Zeta-function and some related stuff. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index ed3f94c63a1ddfb697df87cc8285b62657d53928..001c546745d787d58fe032a52dc4fef43258b597 100644 (file)
@@ -4,7 +4,7 @@
  *  This file must be processed with flex. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 139d6907aa58b2a237922cbf247e33dbb59eb17b..d8bfd36282c8e4d011d95d87e4fab7e256d73af1 100644 (file)
@@ -4,7 +4,7 @@
  *  This file must be processed with flex. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 43d7cc826942124104e1faa55046349a2476bf5f..c4f69c26d39aeb7c13121242d4a23c59de7ce938 100644 (file)
@@ -4,7 +4,7 @@
  *  This file must be processed with yacc/bison. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 13438c5d00be23d2361992383cecb6483adfc9ad..7c0d83fc91c3f5fe03e8f2c41b7c4143482d0509 100644 (file)
@@ -4,7 +4,7 @@
  *  generated. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 46d7a64cd9faa2330cca7a035e9782c2cb334da6..146127fab4365c06b1477d25433b9cc412a6f11e 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of symbolic matrices */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index b0b582d7580f777b9949d43a8d222fc403a4e967..4dc2ee0584e1cad9c78fcf3752700093da75e305 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to symbolic matrices */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 63f6381d27c4e960500b0d3b7ab2770576d36aec..4a66f310ccf0aaf6eb335898a2424ecd8a2b2834 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of GiNaC's products of expressions. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 65a291b7993a2b0216c0791541e117333cb705c0..d7df44a964cc961c6f891339866a427b360f388a 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to GiNaC's products of expressions. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 6931279dd144db63f9c482c7ee9bff31a1c11af5..2b91cb23dd44853906dc64dd32adbdfb8136378a 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of GiNaC's non-commutative products of expressions. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index f8ba628453388ec1ebe2b30344653ef735503da0..78a45ed6d65db00ae4635391df781f07c58bf6e1 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to GiNaC's non-commutative products of expressions. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 936957fe55e929df7bb58b647d184c097146c655..6e18f512d5e50b90b44539f5b0c4462f7bcd7c6f 100644 (file)
@@ -6,7 +6,7 @@
  *  computation, square-free factorization and rational function normalization. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 9196f965cf428ec5478f9223c174cc5be4d44169..304d51c2b50bbb492e45dc03c4bc4fe313e411f4 100644 (file)
@@ -6,7 +6,7 @@
  *  computation, square-free factorization and rational function normalization. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index a3872b96650b9843505126cce338757ade54169a..545d87428ed59ee9836db929fcd36ef5317e84c4 100644 (file)
@@ -7,7 +7,7 @@
  *  of special functions or implement the interface to the bignum package. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 3c7dba2c37aee6b178a978bd5088bed3b104aa7a..c56c56bd84dee5ae85715c7ca70ee0879d218ee3 100644 (file)
@@ -3,7 +3,7 @@
  *  Makes the interface to the underlying bignum package available. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index c83f09a154502ece4dcfdab3c440a05208d3e2b9..da3e766c366159bcc1a9c8c6034149292f8324c8 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of GiNaC's overloaded operators. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 9c37506d24f3a2f6fc57d4e555240ca97676f8a3..770d20862b39f1a4ab0980922cef8989effbc986 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to GiNaC's overloaded operators. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 7d84c82eb8026b4a40733fbd2b953e223970f8d0..0730e3c8bf7fc385c5d4d1c1a97b6c565997cfab 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of GiNaC's symbolic exponentiation (basis^exponent). */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 12ebf6a2aa896bedcd271c7ac865e1df977a4502..46acef9773395f30cda05179af51fd0a88e97c4e 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to GiNaC's symbolic exponentiation (basis^exponent). */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 1018ee70d47d3fcb20dd474efa8ee370064b8382..606e5e16cbc20ef30f5af8e4f82e535ad3779d64 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of helper classes for expression output. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index af910f1a1cf6d3757d167e34dba1d21e8a7f28db..00ebcc919f3a5855a090e07274c5b48f01b2d990 100644 (file)
@@ -3,7 +3,7 @@
  *  Definition of helper classes for expression output. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index e08921e8ccd8cf6cbfd57a1e982ecff49340506e..bdf17d16c2b19f84dfd9ba2cebef81fb2f7ab874 100644 (file)
@@ -4,7 +4,7 @@
  *  methods for series expansion. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index f2fc759137274c847299f77d976802148871b760..26c27306250a03a03177764962efc32734349cfc 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to class for extended truncated power series. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 83269e5ac3257d5769d64f27a6779b3f50f72f09..34c9111884059f22ab49db86d73a7e14a6fa3fd1 100644 (file)
@@ -3,7 +3,7 @@
  *  GiNaC's class registrar (for class basic and all classes derived from it). */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index eda20bb3264d1c72ca3ca941b728bd65cba54efe..e620250ec7cc8537896d13db67c57e57bcb0c741 100644 (file)
@@ -3,7 +3,7 @@
  *  GiNaC's class registrar (for class basic and all classes derived from it). */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index bd3b64421f75c6f1244c002a36e64b1619d7e6b9..d779c632bd49e5bbf8b5bb236deb2b6980c74c01 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of relations between expressions */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 779b1fe871e46ef1b8985fa2c4a934627a5fa1f1..9f58e0c7125e0a2aae73e50e4822d014181eddd3 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to relations between expressions. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 1a102719f9ab1d2cd1377e06e469597ca8204a6a..cdd346f74e0e1b18e32fe83e608c2c089039493f 100644 (file)
@@ -4,7 +4,7 @@
  *  in GiNaC functions */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 9a76a21bfe350e467473768ee7b1f5d0d5004ef8..704c3f8ef7c7a0c060fb45a43ce21a9ec8ec647b 100644 (file)
@@ -4,7 +4,7 @@
  *  in GiNaC functions */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index c8c0e2b0dd7812859720b93da8b1d2a8748f9d03..d2f6a9b8ddbe22380b6a07a407cc68b4bddda94e 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of 'abstract' class structure. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 9c7417e463043c2d3ede04d9250c0de9d106e1cb..9bfb97ce3f50e3c216c90ab9ba2f58b4605a7eb2 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to 'abstract' class structure. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 809ae2682f7548e8be01123b05e921b30af2e381..5ec55af485cdf4adc4f72d6c6d4aa36646964f13 100755 (executable)
@@ -125,7 +125,7 @@ $interface=<<END_OF_INTERFACE;
  *  This file was generated automatically by structure.pl.
  *  Please do not modify it directly, edit the perl script instead!
  *
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
@@ -224,7 +224,7 @@ $implementation=<<END_OF_IMPLEMENTATION;
  *  This file was generated automatically by STRUCTURE.pl.
  *  Please do not modify it directly, edit the perl script instead!
  *
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index f099967cb095c349cba4a1b19320391c0b6fa2ad..48579ccf65ae658fc571413cf9a22f6f711069c8 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of GiNaC's symbolic objects. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 15490253eb9f0a2b54b3f620fd41f0d444cea42f..5dc869db03f7e1cd91ba9fce88f2be13b8a36a73 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to GiNaC's symbolic objects. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index c953953a2e55eebf2ee081a84ab6904658cb7adb..536d1cd5115c31edf125ce83693afdd4792dd667 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of GiNaC's symmetry definitions. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 9cf9aa6c4695918a72c7b8d501f2ac4bbda14ce6..4ef1cd0db93a9f1f4b64374f6c59bfd06f55bf27 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to GiNaC's symmetry definitions. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index b49cbc05498be1b2e0558d0ca2073924ba5702ab..f04a75c9c668b05249e004bf07dfe69f4c91ccbf 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of GiNaC's special tensors. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 3fae6b425a87d768b72cfc7053b5efdc7a6d0154..a9cc67ed1f3bd8651e59619f44b4c554b73186b2 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to GiNaC's special tensors. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 657a1cd7a5bd16cbb875d1e331f706adaf3ec01f..0f53714b6d29d9f6b73b4f1e7a1f0b974b2dd353 100644 (file)
@@ -3,7 +3,7 @@
  *  Values for a do-it-yourself typeinfo scheme. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 00c32ce6689fe055d40d8f661fd185d33f2be704..b1a6cbf49e476be94c51fa4d5f55ebccf0b5196a 100644 (file)
@@ -4,7 +4,7 @@
  *  internal header file. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 28a2e9a724395b4ec742d1f345ff4d7a2d3fe0d2..3d9e794f1c19eaac328482f0c929b34c01b69b23 100644 (file)
@@ -4,7 +4,7 @@
  *  but not of any interest to the user of the library. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 791cfb5d81eb71094807b96725cffdcd98032a46..1d24a82d7791f9c81c649a5643e489f678bd0724 100644 (file)
@@ -4,7 +4,7 @@
  *  of any interest to the user of the library. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 1a563a8b622df7a7a763fd6d95b871a8e91b70e9..cec6b9051591a350e7d35766a28a35a4d1c8e319 100644 (file)
@@ -3,7 +3,7 @@
  *  GiNaC library version information. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index 466f86f4354037f9ac49b2204f272f61e63cdd50..c389c98f1452b9a94b90368a249bb26507c70117 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of GiNaC's wildcard objects. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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
index f1e16968abe6cb43bc848db124104fc48d863deb..78c541b572f5b64a66763166f8f2f04d3e2e451c 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to GiNaC's wildcard objects. */
 
 /*
- *  GiNaC Copyright (C) 1999-2002 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2003 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