Skip to main content

Arbitrary-precision formula parser and solver.

Project description

formula - Arbitrary-precision formula parser and solver

PyPI

Development status

Status: Production/Stable

Development plan:

  • Complex numbers support. (Character i are reserved for this by default.)

This project built with pybind11.

Installation

On Unix (Linux, OS X)

  • pip install formula

On Windows (Requires Visual Studio 2015)

  • For Python 3.5+:

    • clone this repository
    • pip install ./formula
  • For earlier versions of Python, including Python 2.7:

    Pybind11 requires a C++11 compliant compiler (i.e. Visual Studio 2015 on Windows). Running a regular pip install command will detect the version of the compiler used to build Python and attempt to build the extension with it. We must force the use of Visual Studio 2015.

    • clone this repository
    • "%VS140COMNTOOLS%\..\..\VC\vcvarsall.bat" x64
    • set DISTUTILS_USE_SDK=1
    • set MSSdk=1
    • pip install ./formula

    Note that this requires the user building formula to have registry edition rights on the machine, to be able to run the vcvarsall.bat script.

Windows runtime requirements

On Windows, the Visual C++ 2015 redistributable packages are a runtime requirement for this project. It can be found here.

If you use the Anaconda python distribution, you may require the Visual Studio runtime as a platform-dependent runtime requirement for you package:

requirements:
  build:
    - python
    - setuptools
    - pybind11

  run:
   - python
   - vs2015_runtime  # [win]

Documentation

formula contains case sensitive (by default) string parser. Let's imagine that we have a string expression, e.g. "(x^2+y)/sin(a*z)". We want to calculate the value of this function in the following point:

x=0.001, y=0.0000000000000000000000555, z=-2, a=-1,

So we pass the expression to the formula constructor.

from formula import Formula
f5a = Formula("(x^2+y)/sin(a*z)")

And it is enough to call the get(...) method or the get_derivative(...) to calculate the value of the expression or the derivative of the expression at this point.

variables = {
  "x": "0.001",
  "y": "0.0000000000000000000000555",
  "z": "-2",
  "a": "-1",
}
value = f5a.get(variables)
x_derivative = f5a.get_derivative("x", variables)
z_derivative = f5a.get_derivative("z", variables)

License

formula is provided under Apache license that can be found in the LICENSE file. By using, distributing, or contributing to this project, you agree to the terms and conditions of this license.

Test call

from formula import Formula
pi = Formula("2*asin(x)", 64).get({"x": "1"})

Project details


Download files

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

Files for formula, version 1.1.4
Filename, size File type Python version Upload date Hashes
Filename, size formula-1.1.4-cp36-cp36m-win_amd64.whl (953.2 kB) File type Wheel Python version cp36 Upload date Hashes View
Filename, size formula-1.1.4-cp37-cp37m-win_amd64.whl (949.3 kB) File type Wheel Python version cp37 Upload date Hashes View
Filename, size formula-1.1.4-py3.6-win-amd64.egg (1.1 MB) File type Egg Python version 3.6 Upload date Hashes View
Filename, size formula-1.1.4-py3.7-win-amd64.egg (1.1 MB) File type Egg Python version 3.7 Upload date Hashes View
Filename, size formula-1.1.4.tar.gz (24.4 MB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page