Search packages, repositories and app categories

Package detailsv3.2.0

math_expressions

A library for parsing and evaluating mathematical expressions, supporting real numbers, vectors, and basic interval arithmetic.

AndroidiOSWebmacOSWindowsLinux
30-day downloads
101K
Likes
382
Pub points
160

Install package

flutter pub add math_expressions

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

A Flutter/Dart package for parsing and evaluating mathematical expressions, supporting real numbers, vectors, and basic interval arithmetic. It enables dynamic computation of math formulas from strings, making it ideal for calculators, scientific apps, and data analysis tools. The library is lightweight, cross-platform, and integrates seamlessly into Flutter projects. It supports standard operators, functions, and custom variables, with clear error handling for invalid inputs. Ideal for developers needing flexible math expression evaluation without building a parser from scratch.

Use cases

  • Scientific calculators
  • Dynamic formula evaluation
  • Data analysis in apps
  • Educational math tools
  • Physics simulations

Key features

  • Supports real numbers and vectors
  • Basic interval arithmetic
  • Custom variable and function definitions
  • Cross-platform compatibility
  • Robust error handling
  • String-based expression parsing

Suitable for

  • Math-heavy applications
  • Educational software
  • Engineering and physics apps
  • Calculator apps
  • Data-driven UIs

Considerations

  • Not optimized for high-performance numerical computing
  • Limited to basic interval arithmetic
  • Requires careful input validation to prevent injection-like issues
  • No built-in support for complex numbers

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

math_expressions

A library for parsing and evaluating mathematical expressions.

  • Performs evaluations in real, vector, and interval contexts.
  • Supports expression simplification and differentiation.

math_expressions is inspired by mathExpr for Java and distributed under the MIT license.

Features

  • Evaluation of expressions in various modes: Real, Vector and Interval.
  • Parsing, simplification and differentiation of mathematical expressions.
  • Supporting most basic math functions out of the box.
  • Extensible through custom function definitions in code.
  • Well documented and tested.

This package contains a very simple command-line interpreter for real numbers:

dart pub run math_expressions:interpreter
What's not working yet?
  • Some evaluations in vector and interval space (especially functions).
  • N-dimensional vectors. Curently no more than four dimensions are supported.
  • The parser only works for real numbers.
  • Complex numbers.

Suggestions and pull requests are always welcome!

Usage

Below are two basic examples of how to use this library. There also is some additional example code available.

1. Expression creation and evaluation

This example shows how to evaluate

$\frac{(x^2+\cos y)}{3}$

for $x=2, y=\pi$

Build the expression

You can either create an mathematical expression programmatically or parse a string.

  • Create the expression programmatically:
  var x = Variable('x'), y = Variable('y');
  var xSquare = Power(x, 2);
  var yCos = Cos(y);
  var three = Number(3.0);
  Expression exp = (xSquare + yCos) / three;
  • Create the expression via the parser:
  ExpressionParser p = GrammarParser();
  Expression exp = p.parse("(x^2 + cos(y)) / 3");
Evaluate the expression
  • Bind variables and evaluate the expression as real number:
  // Bind variables:
  var context = ContextModel()
    ..bindVariableName('x', Number(2.0));
    ..bindVariableName('y', Number(math.pi));

  // Evaluate expression:
  var evaluator = RealEvaluator(context);
  num eval = evaluator.evaluate(exp);

  print(eval) // = 1.0
2. Expression simplification and differentiation

This example shows how to simplify and differentiate

$x \cdot 1 - (-5)$

  • Expressions can be simplified and differentiated with respect to a given variable:
  Expression exp = p.parse("x*1 - (-5)");

  print(exp);            // = ((x * 1.0) - -(5.0))
  print(exp.simplify()); // = (x + 5.0)

  Expression expDerived = exp.derive('x');

  print(expDerived);            // = (((x * 0.0) + (1.0 * 1.0)) - -(0.0))
  print(expDerived.simplify()); // = 1.0

Alternatives

Here are some other Dart libraries that implement similar functionality to math_expression: parsing and evaluating mathematical expressions.

  • expressions: an elegant and small library to parse and evaluate simple expressions.
  • function_tree: a library for parsing, evaluating and plotting single- and multi-variables numerical functions.

To the author's knowledge math_expressions is currently the only library supporting interval arithmetics.

Categories

Dependencies

Dependency list 2 items

Source repository

Projects using this package

Rankings