static void FindDifferentialInput(string input, int parameterIndex, CalculationContext context) { string funcName = input.Substring(4).Trim(' '); FinishedFunction function = context.FunctionTable[funcName]; DefaultDifferentiator differentiator = new DefaultDifferentiator(); FinishedFunction df = differentiator.FindDifferential(function, parameterIndex); Console.WriteLine(df.TopNode); visualizer.VisualizeAsTree(df.TopNode, context); FinishedFunction odf = optimizer.OptimizeWithTable(df); Console.WriteLine("Optimized: "); Console.WriteLine(odf.TopNode); visualizer.VisualizeAsTree(odf.TopNode, context); }