← SPL reference

calculus (lib/calculus/)

Handcoded symbolic derivative, integral, limit, and simplify — no external CAS. Load the folder package with use calculus;.

Prefer LaTeX. Pass expressions as LaTeX (or LaTeX-like) strings. Dollar signs ($ / $$) are optional and stripped if present. Ascii shortcuts like sin(x)/x still work, but LaTeX is clearer and less ambiguous for powers, fractions, and trig.

Import

use calculus;

print.string(calculus.derivative("17x^{17}"));
print.string(calculus.integral("\\frac{1}{x^{2}+1}"));
print.string(calculus.limit("\\frac{\\sin x}{x}", "x", 0));
print.string(calculus.limit("(1+\\frac{1}{x^{2}})^{x}", "x", "\\infty"));

API

LaTeX input (preferred)

The parser normalizes LaTeX before evaluating. Supported highlights:

# preferred
calculus.derivative("\\sin(2x)");
calculus.integral("\\frac{2x}{x^{2}+1}");
calculus.limit("\\frac{\\tan x}{x}", "x", 0);

# also fine without backslashes on bare functions / ascii
calculus.derivative("sin(2x)");
calculus.limit("sin(x)/x", "x", 0);

SPL functions as input

You can pass a user functionDefine into calculus — as a call, a name string, or a function.ref. The body must be a single return.* built from math.add / subtract / multiply / div / sqrtR (and nested function.* calls).

use calculus;

functionDefine.something(x):
  return.number(math.add(x, 1));
end;

print.string(calculus.derivative(function.something(x)));
print.string(calculus.derivative("something"));
print.string(calculus.derivative("something(x)"));
r.setVar(function.ref(something));
print.string(calculus.integral(r));

Limit notes

Includes standard table limits (sin x / x), rational asymptotics at infinity, L'Hôpital for 0/0 and ∞/∞, and (1 + c/x^{p})^{x^{q}} forms — e.g. (1+1/x^{2})^{x} → 1 as x → ∞.

Implementation: someProgrammingLanguage/lib/calculus/ (core.py, derivative.py, integral.py, limit.py)