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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file strmath-1.1.tar.gz.

File metadata

  • Download URL: strmath-1.1.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.14 CPython/3.10.5 Linux/5.15.0-1014-azure

File hashes

Hashes for strmath-1.1.tar.gz
Algorithm Hash digest
SHA256 a4435842e18475798353675c9c431d849b770fde7d86e68801bda96c07ba20e5
MD5 077ef669da2848c4a2f20c736f91e3c7
BLAKE2b-256 14f4fb15906eb1ba0de5c57da6a408641c6144cc0589d1a5469ad505b7a770ae

See more details on using hashes here.

File details

Details for the file strmath-1.1-py3-none-any.whl.

File metadata

  • Download URL: strmath-1.1-py3-none-any.whl
  • Upload date:
  • Size: 7.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.14 CPython/3.10.5 Linux/5.15.0-1014-azure

File hashes

Hashes for strmath-1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 aa6d231db0d9bb6814d0dc83589a855dedf03020054d45b48c8511cc1143e661
MD5 952fb585798e2955b8168dc25c0bb89e
BLAKE2b-256 132456578747a28770bb04911f5a33a5306c25b4853bed4d75d9887d5b1c7c30

See more details on using hashes here.

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