private Expression[] getLeviCivitaSubstitutions() { Expression[] substitutions = new Expression[2]; //Levi-Civita self-contraction substitutions[0] = getLeviCivitaSelfContraction(); //d^a_a = numberOfIndices substitutions[1] = expression(createKronecker( setType(typeOfLeviCivitaIndices, 0), setType(typeOfLeviCivitaIndices, 0x80000000)), new Complex(numberOfIndices)); return substitutions; }
byte btype = type.getType(); samples.add(Tensors.createKronecker(setType(btype, 0), 0x80000000 | setType(btype, 1))); if (CC.isMetric(btype)) { samples.add(Tensors.createMetric(setType(btype, 0), setType(btype, 1)));
from.add(index); to.add(newIndex); kroneckers.add(Tensors.createKronecker(index, inverseIndexState(newIndex))); } else if (IndicesUtils.getState(index) && dummies.contains(getNameWithType(index))) { newIndex = setRawState(getRawStateInt(index), generator.generate(getType(index))); from.add(index); to.add(newIndex); kroneckers.add(Tensors.createKronecker(index, inverseIndexState(newIndex)));
for (int i = 0; i < numberOfIndices; ++i) for (j = 0; j < numberOfIndices; ++j) matrix[i][j] = createKronecker(lower[i], upper[j]); Tensor rhs = TensorUtils.det(matrix);