Skip to content

symbolic

stable

A symbolic math plugin for building, manipulating, and evaluating mathematical expression trees, including differentiation, integration, Taylor series, and polynomial analysis.

use plugin symbolic::{parse, constant, variable, …}
20 functions Utilities
/ filter jk navigate Esc clear
Functions (20)
  1. parse Parse an expression string into an Expr handle
  2. constant Create a constant-value expression
  3. variable Create a variable expression by name
  4. roots_quadratic Solve ax²+bx+c=0, returns complex roots
  5. to_string Convert expression back to a string
  6. evaluate Evaluate at a single x value
  7. evaluate_with Evaluate with a named-variable table
  8. derivative Differentiate with respect to x
  9. partial_derivative Differentiate with respect to any variable
  10. gradient Partial derivatives for a list of variables
  11. integrate Symbolic integration with respect to a variable
  12. taylor_series Taylor/Maclaurin series approximation
  13. simplify Apply algebraic simplification rules
  14. expand Distribute multiplication over addition
  15. factor Factor simple expressions (e.g. difference of squares)
  16. substitute Replace a variable with another expression
  17. contains_var Check if expression references a variable
  18. degree Polynomial degree with respect to a variable
  19. coefficients Polynomial coefficients as a table
  20. is_polynomial Check if expression is a polynomial

Parse an expression string into an Expr handle

Parses a mathematical expression string into an Expr handle. Supports +, -, *, /, ^, unary -, sin(), cos(), and named variables.

use plugin symbolic::{parse, variable, constant}

let expr = parse("x^2 + 2*x + 1")
print(expr.to_string(expr))

Create a constant-value expression

Creates a leaf expression holding a numeric constant.

use plugin symbolic::{constant}

let pi = constant(3.14159)

Create a variable expression by name

Creates a named variable expression. Any identifier is valid as a variable name.

use plugin symbolic::{variable, parse}

let x = variable("x")
let y = variable("y")

Solve ax²+bx+c=0, returns complex roots

Solves ax² + bx + c = 0 and returns a table of two roots, each as {real, imag}. Works for both real and complex roots.

use plugin symbolic::{roots_quadratic}

let roots = roots_quadratic(1.0, -3.0, 2.0)
print("r1={roots[1]["real"]}, r2={roots[2]["real"]}")

let complex_roots = roots_quadratic(1.0, 0.0, 1.0)
print("real={complex_roots[1]["real"]}, imag={complex_roots[1]["imag"]}")

Convert expression back to a string

Converts the expression tree back to a human-readable string with parentheses showing structure.

use plugin symbolic::{parse}

let expr = parse("x^2 + 2*x + 1")
let deriv = expr.derivative(expr)
print(deriv.to_string(deriv))

Evaluate at a single x value

Evaluates the expression by substituting x with the given numeric value.

use plugin symbolic::{parse}

let f = parse("x^2 + 1")
print(f.evaluate(f, 3.0))

Evaluate with a named-variable table

Evaluates a multi-variable expression using a table mapping variable names to values.

use plugin symbolic::{parse}

let f = parse("x^2 + y^2")
let result = f.evaluate_with(f, #{"x": 3.0, "y": 4.0})
print(result)

Differentiate with respect to x

Differentiates the expression symbolically with respect to x. Applies product rule, quotient rule, chain rule, and trig identities.

use plugin symbolic::{parse}

let f = parse("x^3 + 2*x^2 + x")
let df = f.derivative(f)
print(df.to_string(df))

Differentiate with respect to any variable

Differentiates with respect to the named variable, treating all other variables as constants.

use plugin symbolic::{parse}

let f = parse("x^2 + x*y + y^2")
let df_dx = f.partial_derivative(f, "x")
let df_dy = f.partial_derivative(f, "y")
print(df_dx.to_string(df_dx))

Partial derivatives for a list of variables

Returns a table of partial derivatives, one for each variable name in the list. Useful for optimization.

use plugin symbolic::{parse}

let f = parse("x^2 + x*y + y^2")
let grad = f.gradient(f, ["x", "y"])

Symbolic integration with respect to a variable

Symbolically integrates the expression with respect to variable. Supports polynomials, constants, and simple trig (sin/cos of the integration variable directly).

use plugin symbolic::{parse}

let f = parse("3*x^2 + 2*x")
let F = f.integrate(f, "x")
print(F.to_string(F))

Taylor/Maclaurin series approximation

Computes the Taylor series approximation around center to the given number of terms. Use center=0 for a Maclaurin series.

use plugin symbolic::{parse}

let sinx = parse("sin(x)")
let approx = sinx.taylor_series(sinx, "x", 0.0, 5)
print(approx.to_string(approx))

Apply algebraic simplification rules

Applies algebraic simplification rules up to 5 passes: collapses constants, removes zero additions, removes one multiplications, and evaluates constant subexpressions.

use plugin symbolic::{parse}

let expr = parse("x*1 + 0 + x*0")
let simple = expr.simplify(expr)
print(simple.to_string(simple))

Distribute multiplication over addition

Distributes multiplication over addition and subtraction, and expands integer powers (up to 6) into repeated multiplication.

use plugin symbolic::{parse}

let expr = parse("(x+1)^2")
let expanded = expr.expand(expr)
print(expanded.to_string(expanded))

Factor simple expressions (e.g. difference of squares)

Recognizes and factors simple patterns such as a² - b² = (a+b)(a-b). Falls back to simplification for unsupported forms.

use plugin symbolic::{parse}

let expr = parse("x^2 - 4")
let factored = expr.factor(expr)
print(factored.to_string(factored))

Replace a variable with another expression

Replaces all occurrences of variable in the expression tree with replacement_expr.

use plugin symbolic::{parse}

let f = parse("x^2 + x")
let shifted = f.substitute(f, "x", parse("x + 1"))
print(shifted.simplify(shifted).to_string(shifted))

Check if expression references a variable

Returns true if the expression contains a reference to the named variable.

use plugin symbolic::{parse}

let f = parse("x^2 + y")
print(f.contains_var(f, "x"))
print(f.contains_var(f, "z"))

Polynomial degree with respect to a variable

Returns the polynomial degree of the expression with respect to variable. Errors if the expression is not a polynomial.

use plugin symbolic::{parse}

let f = parse("x^3 + 2*x + 1")
print(f.degree(f, "x"))

Polynomial coefficients as a table

Returns the polynomial coefficients as a table indexed from 1 (constant term) upward.

use plugin symbolic::{parse}

let f = parse("2*x^2 + 3*x + 5")
let coeffs = f.coefficients(f, "x")

Check if expression is a polynomial

Returns true if the expression is a polynomial in the given variable (no trig, no non-integer powers).

use plugin symbolic::{parse}

let poly = parse("x^2 + 1")
let trig = parse("sin(x)")
print(poly.is_polynomial(poly, "x"))
print(trig.is_polynomial(trig, "x"))
enespt-br