Skip to main content

Efficient Simplification of Mathematical Expressions

Project description

SimpliPy:
Efficient Simplification of Mathematical Expressions

PyPI version PyPI license Documentation Status

pytest quality checks CodeQL Advanced

Usage

pip install simplipy
import simplipy as sp

engine = sp.SimpliPyEngine.load("dev_7-3", install=True)

# Simplify prefix expressions
engine.simplify(('/', '<constant>', '*', '/', '*', 'x3', '<constant>', 'x3', 'log', 'x3'))
# > ('/', '<constant>', 'log', 'x3')

# Simplify infix expressions
engine.simplify('x3 * sin(<constant> + 1) / (x3 * x3)')
# > '<constant> / x3'

More examples can be found in the documentation.

Performance

Original vs Simplified Length and Simplification Time

Simplification efficacy and efficiency for different maximum pattern lengths (Engine: dev_7-3). Original expressions sampled with the Lample-Charton Algorithm using the following parameters:

  • 0 to 3 variables
  • 0 to 20 operators (corresponding to lengths of 0 to 41)
  • Operators:
    • with relative weight 10: +, -, *, /
    • with relative weight 1: abs, inv, neg, pow2, pow3, pow4, pow5, pow1_2, pow1_3, pow1_4, pow1_5, sin, cos, tan, asin, acos, atan, exp, log, mult2, mult3, mult4, mult5, div2, div3, div4, div5

Points show bootstrapped mean and 95% confidence interval (N = 10,000). Orange points are within the 95% confidence interval of the shortest simplified length for the respective original length. Using patterns beyond a length of 4 tokens does not yield significant improvements and comes at a cost of increased simplification time.

Development

Setup

To set up the development environment, run the following commands:

pip install -e .[dev]
pre-commit install

Tests

Test the package with pytest:

pytest tests --cov src --cov-report html

or to skip integration tests,

pytest tests --cov src --cov-report html -m "not integration"

Citation

@software{simplipy-2025,
    author = {Paul Saegert},
    title = {Efficient Simplification of Mathematical Expressions},
    year = 2025,
    publisher = {GitHub},
    version = {0.2.12},
    url = {https://github.com/psaegert/simplipy}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

simplipy-0.2.12.tar.gz (52.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

simplipy-0.2.12-py3-none-any.whl (43.5 kB view details)

Uploaded Python 3

File details

Details for the file simplipy-0.2.12.tar.gz.

File metadata

  • Download URL: simplipy-0.2.12.tar.gz
  • Upload date:
  • Size: 52.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for simplipy-0.2.12.tar.gz
Algorithm Hash digest
SHA256 731605aeb3bf3d42d65ce5c5a8456573fdd7eb9cca586dae78de48723e29d5aa
MD5 181462f15fd5e9867f4868e9862a3c4d
BLAKE2b-256 df5c6eef1263f18ca7d41a43a9e2a687b34ca409b6818fe06058a769f136c999

See more details on using hashes here.

Provenance

The following attestation bundles were made for simplipy-0.2.12.tar.gz:

Publisher: publish.yml on psaegert/simplipy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file simplipy-0.2.12-py3-none-any.whl.

File metadata

  • Download URL: simplipy-0.2.12-py3-none-any.whl
  • Upload date:
  • Size: 43.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for simplipy-0.2.12-py3-none-any.whl
Algorithm Hash digest
SHA256 837193b13af0b5c160a5d7cec560129e50b07f93dd27b4836d9725fd20ea292d
MD5 19985829510a6a18ff0bcb52fd92d816
BLAKE2b-256 58bb286b91c2ce5d55cdc8bddaa5aae2c5aa90bbde6c3c01701e3d99cfe61d9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for simplipy-0.2.12-py3-none-any.whl:

Publisher: publish.yml on psaegert/simplipy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page