/** * For internal use. */ protected String toString(OutputFormat mode, Class<? extends Tensor> clazz) { return toString(mode); }
@Override public String toString(OutputFormat mode) { return "@[" + innerTensor.toString(mode) + "]"; } }
@Override public String toString() { return metric.toString(); }
@Override public String toString(OutputFormat mode) { if (mode.is(WolframMathematica)) return argument.toString(mode, Power.class) + "^" + power.toString(mode, Power.class); if (mode.is(LaTeX)) if (TensorUtils.isRealNegativeNumber(power)) return "\\frac{1}{" + argument.toString(mode, Power.class) + (TensorUtils.isMinusOne(power) ? "" : "^" + ((Complex) power).abs().toString(mode)) + "}"; else return argument.toString(mode, Power.class) + "^{" + power.toString(mode) + "}"; return argument.toString(mode, Power.class) + "**" + power.toString(mode, Power.class); // return "Power[" + argument.toString(mode) + ", " + power.toString(mode) + "]"; }
private String printData(StringBuilder sb, OutputFormat format, char operatorChar) { // if (sb.length() != 0) // sb.append(operatorChar); for (int i = 0; ; ++i) { sb.append(data[i].toString(format, Product.class)); if (i == data.length - 1) break; sb.append(operatorChar); } removeLastOperatorChar(sb, operatorChar); return sb.toString(); }
void printProductOfMatrices(SubgraphContainer subgraph) { for (int i = 0; ; ++i) { int position = subgraph.partition[i]; matrixPrint.set(position); String str = data[position].toString(format, Product.class); sb.append(str); if (i == subgraph.partition.length - 1) return; if (!str.isEmpty()) sb.append(operatorChar); } } }
@Override public final String toString(OutputFormat mode) { String stringSymbol = functionName(); if (mode.is(UTF8)) return stringSymbol + "(" + argument.toString(UTF8) + ")"; if (mode.is(LaTeX)) return "\\" + stringSymbol.toLowerCase() + "(" + argument.toString(UTF8) + ")"; if (mode.is(Redberry) || mode.is(SimpleRedberry) || mode.is(WolframMathematica)) return Character.toString(Character.toUpperCase(stringSymbol.charAt(0))) + stringSymbol.substring(1, stringSymbol.length()) + "[" + argument.toString(mode) + "]"; else return stringSymbol + "(" + argument.toString(mode) + ")"; } }
@Override public String toString0(OutputFormat mode) { //TODO add argIndices toString(REDBERRY) StringBuilder sb = new StringBuilder(); sb.append(super.toString0(mode)); if (mode.is(OutputFormat.Maple)) sb.append('('); else sb.append('['); for (Tensor t : args) { sb.append(t.toString(mode)); sb.append(','); } sb.deleteCharAt(sb.length() - 1); if (mode.is(OutputFormat.Maple)) sb.append(')'); else sb.append(']'); return sb.toString(); }
/** * Returns a string representation of a tensor according to the default * {@link cc.redberry.core.context.OutputFormat} defined in * {@link cc.redberry.core.context.CC#getDefaultOutputFormat()}. * * @return a string representation of a tensor */ @Override public final String toString() { return toString(Context.get().getDefaultOutputFormat()); }
@Override public String toString(OutputFormat mode) { StringBuilder sb = new StringBuilder(); String temp; for (int i = 0; ; ++i) { temp = get(i).toString(mode, Sum.class); if ((temp.charAt(0) == '-' || temp.charAt(0) == '+') && sb.length() != 0) sb.deleteCharAt(sb.length() - 1); String str = get(i).toString(mode, Sum.class); if (str.contains("'") && !mode.printMatrixIndices) return toString(mode.printMatrixIndices()); sb.append(str); if (i == size() - 1) return sb.toString(); sb.append('+'); } }
void printTrace(SubgraphContainer subgraph) { if (subgraph.partition.length == 1 && Tensors.isKronecker(data[subgraph.partition[0]])) { int position = subgraph.partition[0]; matrixPrint.set(position); sb.append(data[position].toString(format.printMatrixIndices(), Product.class)); } else { sb.append("Tr["); printProductOfMatrices(subgraph); if (subgraph.types.size() > 1) { sb.append(", "); for (int i = 0; ; ++i) { sb.append(subgraph.types.get(i)); if (i == subgraph.types.size() - 1) break; sb.append(", "); } } sb.append("]"); } }
@Override public String toString(OutputFormat format) { StringBuilder sb = new StringBuilder(); char operatorChar = format == OutputFormat.LaTeX ? ' ' : '*'; if (factor.isReal() && factor.getReal().signum() < 0) { sb.append('-'); Complex f = factor.abs(); if (!f.isOne()) sb.append(((Tensor) f).toString(format, Product.class)).append(operatorChar); } else if (factor != Complex.ONE) sb.append(((Tensor) factor).toString(format, Product.class)).append(operatorChar); int i = 0, size = factor == Complex.ONE ? size() : size() - 1; for (; i < indexlessData.length; ++i) { sb.append(indexlessData[i].toString(format, Product.class)); if (i == size - 1) return sb.toString(); sb.append(operatorChar); } // removeLastOperatorChar(sb, operatorChar); EnumSet<IndexType> matrixTypes; if (format.printMatrixIndices || (matrixTypes = IndicesUtils.nonMetricTypes(indices)).isEmpty()) return printData(sb, format, operatorChar); return printMatrices(sb, format, operatorChar, matrixTypes); }
@Override public String newName(String oldName, NameAndStructureOfIndices old) { switch (oldName) { case unitaryMatrixName: return unitaryMatrix.getStringName(); case structureConstantName: return structureConstant.getStringName(); case symmetricConstantName: return symmetricConstant.getStringName(); case dimensionName: if (!(dimension instanceof Complex)) return dimension.toString(OutputFormat.Redberry); default: return oldName; } } });
@Override public String newName(String oldName, NameAndStructureOfIndices old) { switch (oldName) { case unitaryMatrixName: return unitaryMatrix.getStringName(); case structureConstantName: return structureConstant.getStringName(); case symmetricConstantName: return symmetricConstant.getStringName(); case dimensionName: if (!(dimension instanceof Complex)) return dimension.toString(OutputFormat.Redberry); default: return oldName; } } });
static void addVars(Tensor tensor, TIntObjectMap<Var> vars, long power) { if (power < 0) throw new IllegalArgumentException("Negative powers."); if (tensor.getClass() == SimpleTensor.class) { if (tensor.getIndices().size() != 0) throw new IllegalArgumentException(); int name = ((SimpleTensor) tensor).getName(); Var var = vars.get(name); if (var == null) vars.put(name, var = new Var((SimpleTensor) tensor)); var.maxPower = Math.max(power, var.maxPower); return; } else if (tensor.getClass() == Power.class) { if (!TensorUtils.isNaturalNumber(tensor.get(1))) throw new IllegalArgumentException(tensor.toString()); long pow = power * ((Complex) tensor.get(1)).longValue(); addVars(tensor.get(0), vars, pow); return; } else if (tensor instanceof MultiTensor) { for (Tensor t : tensor) addVars(t, vars, power); return; } else if (tensor.getClass() == Complex.class) { if (((Complex) tensor).isNumeric() || !((Complex) tensor).isReal()) throw new IllegalArgumentException("Illegal coefficient: " + tensor); return; } throw new IllegalArgumentException(); }