Expression * diff() { Expression * ex = (Expression*)new Mul(e1->diff(), e2); Expression * ex1 = (Expression*)new Mul(e1, e2->diff()); Expression *ex2 = (Expression*)new Add(ex, ex1); return ex2; }
Expression * diff() { Expression * ex = (Expression*)new Mul(e1->diff(), e2); Expression * ex1 = (Expression*)new Mul(e1, e2->diff()); Expression *ex2 = (Expression*)new Sub(ex, ex1); Expression *ex3 = (Expression*)new Mul(e2, e2); Expression *ex4 = (Expression*)new Div(ex2, ex3); return ex4; }
Expression * Sin::diff() { Expression * ex; if (e1->diff() == 0) ex = (Expression*)new Number(0); else ex = (Expression*)new Cos(e1); return ex; }
Expression * diff() { Expression * ex = (Expression*)new Sub(e1->diff(), e2->diff()); return ex; }