A module for evaluating math expressions without eval()
Project description
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
mathmodule and some builtins
Planned for Future
- custom functions registration
- correct
-operator as neg (eg.50+-30) - mathematical constants (i.e. PI)
Principle
- Tokenize expression (split it into operators and numbers)
- Apply operations order
- Build evaluation binary tree
- Evaluate the tree
License
This repository is licensed under MIT license. See LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4435842e18475798353675c9c431d849b770fde7d86e68801bda96c07ba20e5
|
|
| MD5 |
077ef669da2848c4a2f20c736f91e3c7
|
|
| BLAKE2b-256 |
14f4fb15906eb1ba0de5c57da6a408641c6144cc0589d1a5469ad505b7a770ae
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa6d231db0d9bb6814d0dc83589a855dedf03020054d45b48c8511cc1143e661
|
|
| MD5 |
952fb585798e2955b8168dc25c0bb89e
|
|
| BLAKE2b-256 |
132456578747a28770bb04911f5a33a5306c25b4853bed4d75d9887d5b1c7c30
|