Skip to main content

A module for evaluating math expressions without eval()

Project description

tests PyPI - Downloads License CodeFactor GitHub release

strmath

A module for evaluating math expressions without eval(). Currently the module supports only simple math operations (eg. multiplication, subtraction, division, %) but in the future there will be functions support.

Installation

The module is available for installation from PyPI

$ pip install strmath

Basic Usage

from strmath import evaluate


result = evaluate("(90 + 2) // 4")
print(result)

Accuracy

As tests show, the library is 100% accurate with python native evaluation:

+----------------+--------+---------+-----+-----------+-------------+
|                | Python | StrMath | PEE | Mathparse | InfixParser |
+----------------+--------+---------+-----+-----------+-------------+
| Failures       | 0      | 0       | 61  | 150       | 91          |
| Failures (%)   | 0%     | 0%      | 30% | 75%       | 45%         |
+----------------+--------+---------+-----+-----------+-------------+

In the test above, 198 randomly generated samples were submitted to Python eval() and several other parsing libraries, including strmath. As you can see, the library has 0 failures and almost same speed with native python. You can see test implementation here.

Features

Currently Supported

  • basic math operations (+, -, /, //, *, **, %) eg. "2 + 5 * 2" --> 12
  • float operations
  • braces eg. "(2 + 5) * 2" --> 20
  • functions from math module and some builtins

Planned for Future

  • custom functions registration
  • correct - operator as neg (eg. 50+-30)
  • mathematical constants (i.e. PI)

Principle

  1. Tokenize expression (split it into operators and numbers)
  2. Apply operations order
  3. Build evaluation binary tree
  4. Evaluate the tree

License

This repository is licensed under MIT license. See LICENSE for details.

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

strmath-1.1.tar.gz (6.3 kB view hashes)

Uploaded Source

Built Distribution

strmath-1.1-py3-none-any.whl (7.4 kB view hashes)

Uploaded Python 3

Supported by

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