open Leibniz let () = print_endline "basic differentiation and simplification\n"; let f = Parser.parse "x^3 + 2x^2 + x" in print_endline ("f(x) = " ^ Expr.to_string f); let df = Diff.diff "x" f in print_endline ("f'(x) = " ^ Expr.to_string df); let ddf = Diff.diff "x" df in print_endline ("f''(x) = " ^ Expr.to_string ddf); print_endline "\nsimplification\n"; let expr = Parser.parse "(x + 0) * 1 + x * 0" in print_endline ("before: " ^ Expr.to_string expr); let simplified = Simplify.simplify expr in print_endline ("after: " ^ Expr.to_string simplified); print_endline "\nimplicit multiplication\n"; let expr2 = Parser.parse "2x + 3sin(x)" in print_endline ("parsed: " ^ Expr.to_string expr2); print_endline "\ntrigonometric functions\n"; let trig = Parser.parse "sin(x)^2 + cos(x)^2" in print_endline ("trig identity: " ^ Expr.to_string trig); let dtrig = Diff.diff "x" trig in print_endline ("derivative: " ^ Expr.to_string dtrig)