Changeset 16946 for branches/2521_ProblemRefactoring/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionCSharpFormatter.cs
- Timestamp:
- 05/13/19 13:59:30 (5 years ago)
- Location:
- branches/2521_ProblemRefactoring
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2521_ProblemRefactoring
- Property svn:mergeinfo changed
-
branches/2521_ProblemRefactoring/HeuristicLab.Problems.DataAnalysis.Symbolic
- Property svn:mergeinfo changed
/trunk/HeuristicLab.Problems.DataAnalysis.Symbolic merged: 16802,16822,16839,16858,16868,16905
- Property svn:mergeinfo changed
-
branches/2521_ProblemRefactoring/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionCSharpFormatter.cs
r16723 r16946 137 137 } else if (node.Symbol is SquareRoot) { 138 138 FormatFunction(node, "Math.Sqrt", strBuilder); 139 } else if (node.Symbol is Cube) { 140 FormatPower(node, strBuilder, "3"); 141 } else if (node.Symbol is CubeRoot) { 142 strBuilder.Append("Cbrt("); 143 FormatRecursively(node.GetSubtree(0), strBuilder); 144 strBuilder.Append(")"); 139 145 } else if (node.Symbol is Power) { 140 146 FormatFunction(node, "Math.Pow", strBuilder); 141 147 } else if (node.Symbol is Root) { 142 148 FormatRoot(node, strBuilder); 149 } else if (node.Symbol is Absolute) { 150 FormatFunction(node, "Math.Abs", strBuilder); 151 } else if (node.Symbol is AnalyticQuotient) { 152 strBuilder.Append("("); 153 FormatRecursively(node.GetSubtree(0), strBuilder); 154 strBuilder.Append(" / Math.Sqrt(1 + Math.Pow("); 155 FormatRecursively(node.GetSubtree(1), strBuilder); 156 strBuilder.Append(" , 2) )"); 143 157 } else { 144 158 throw new NotSupportedException("Formatting of symbol: " + node.Symbol + " not supported for C# symbolic expression tree formatter."); … … 173 187 174 188 private void FormatSquare(ISymbolicExpressionTreeNode node, StringBuilder strBuilder) { 189 FormatPower(node, strBuilder, "2"); 190 } 191 private void FormatPower(ISymbolicExpressionTreeNode node, StringBuilder strBuilder, string exponent) { 175 192 strBuilder.Append("Math.Pow("); 176 193 FormatRecursively(node.GetSubtree(0), strBuilder); 177 strBuilder.Append( ", 2)");194 strBuilder.Append($", {exponent})"); 178 195 } 179 196 … … 237 254 strBuilder.AppendLine("public static class Model {"); 238 255 GenerateAverageSource(strBuilder); 256 GenerateCbrtSource(strBuilder); 239 257 GenerateIfThenElseSource(strBuilder); 240 258 GenerateFactorSource(strBuilder); … … 278 296 strBuilder.AppendLine("private static double Average(params double[] values) {"); 279 297 strBuilder.AppendLine(" return values.Average();"); 298 strBuilder.AppendLine("}"); 299 } 300 private void GenerateCbrtSource(StringBuilder strBuilder) { 301 strBuilder.AppendLine("private static double Cbrt(double x) {"); 302 strBuilder.AppendLine(" return x < 0 ? -Math.Pow(-x, 1.0 / 3.0) : Math.Pow(x, 1.0 / 3.0);"); 280 303 strBuilder.AppendLine("}"); 281 304 }
Note: See TracChangeset
for help on using the changeset viewer.