X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Ftensor.cpp;h=f786c4a193963524ca84483880fe42670b1a515e;hp=b49cbc05498be1b2e0558d0ca2073924ba5702ab;hb=a8617f6e1705e980b7a5f6500f6a2c42563d3f6c;hpb=d62ef51eb25759462a28063289687fc491cec8d1 diff --git a/ginac/tensor.cpp b/ginac/tensor.cpp index b49cbc05..f786c4a1 100644 --- a/ginac/tensor.cpp +++ b/ginac/tensor.cpp @@ -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 @@ -179,6 +179,13 @@ ex tensdelta::eval_indexed(const basic & i) const const idx & i1 = ex_to(i.op(1)); const idx & i2 = ex_to(i.op(2)); + // The dimension of the indices must be equal, otherwise we use the minimal + // dimension + if (!i1.get_dim().is_equal(i2.get_dim())) { + ex min_dim = i1.minimal_dim(i2); + return i.subs(lst(i1 == i1.replace_dim(min_dim), i2 == i2.replace_dim(min_dim))); + } + // Trace of delta tensor is the (effective) dimension of the space if (is_dummy_pair(i1, i2)) { try {