inducer / pymbolic

A simple package to do symbolic math (focus on code gen and DSLs)
http://mathema.tician.de/software/pymbolic
Other
106 stars 24 forks source link
code-generation computer-algebra expression-tree python symbolic-computation term-rewriting

Pymbolic: Easy Expression Trees and Term Rewriting

.. image:: https://gitlab.tiker.net/inducer/pymbolic/badges/main/pipeline.svg :alt: Gitlab Build Status :target: https://gitlab.tiker.net/inducer/pymbolic/commits/main .. image:: https://github.com/inducer/pymbolic/workflows/CI/badge.svg?branch=main&event=push :alt: Github Build Status :target: https://github.com/inducer/pymbolic/actions?query=branch%3Amain+workflow%3ACI+event%3Apush .. image:: https://badge.fury.io/py/pymbolic.png :alt: Python Package Index Release Page :target: https://pypi.org/project/pymbolic/ .. image:: https://zenodo.org/badge/2016193.svg :alt: Zenodo DOI for latest release :target: https://zenodo.org/badge/latestdoi/2016193

Pymbolic is a small expression tree and symbolic manipulation library. Two things set it apart from other libraries of its kind:

Pymbolic currently understands regular arithmetic expressions, derivatives, sparse polynomials, fractions, term substitution, expansion. It automatically performs constant folding, and it can compile its expressions into Python bytecode for fast(er) execution.

If you are looking for a full-blown Computer Algebra System, look at sympy <http://pypi.python.org/pypi/sympy> or PyGinac <http://pyginac.sourceforge.net/>. If you are looking for a basic, small and extensible set of symbolic operations, pymbolic may well be for you.

Resources: