public MathExpression Derive(MathState state) { StaticStack<MathOperation> stack = m_ExpressionStack; StaticStack<MathOperation> derived = new StaticStack<MathOperation>(); ExpressionTree tree = new ExpressionTree(stack); tree.DeriveToStack(derived, state); Dictionary<string, float> var = new Dictionary<string, float>(m_Variables); for (int i = 0; i < derived.Count; i++) { if (derived[i] is Variable) { Variable v = (Variable)derived[i]; derived[i] = new Variable(v.ToString(), var); } } return new MathExpression(derived,var, "(" + OriginalExpression + ")'"); }