Metadata-Version: 2.1
Name: formula
Version: 1.0.0b3
Summary: Arbitrary-precision formula parser and solver.
Home-page: https://github.com/hozblok/formula
Author: Ivan Ergunov
Author-email: hozblok@gmail.com
License: UNKNOWN
Description: # formula - Arbitrary-precision formula parser and solver
        
        [![PyPI](https://img.shields.io/pypi/v/formula.svg)](https://pypi.org/project/formula/)
        
        ## Development status
        
        Status: **Beta**
        
        Development plan:
        
        + Complex numbers support. (Character `i` are reserved for this by default.)
        + Support getting all variables, numbers, functions after parsing.
        + Examples.
        + Support the LongReal from python. Auto conversion in the get method. Try ... any?
        
        This project built with [pybind11](https://github.com/pybind/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](https://www.microsoft.com/en-us/download/details.aspx?id=48145).
        
        If you use the Anaconda python distribution, you may require the Visual Studio
        runtime as a platform-dependent runtime requirement for you package:
        
        ```yaml
        requirements:
          build:
            - python
            - setuptools
            - pybind11
        
          run:
           - python
           - vs2015_runtime  # [win]
        ```
        
        ## Documentation
        
        The **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:
        
        ```text
        x=0.001, y=0.0000000000000000000000555, z=-2, a=-1,
        ```
        
        So we pass the expression to the `formula` constructor.
        
        ```python
        from formula import formula
        f5a = formula("(x^2+y)/sin(a*z)")
        ```
        
        And it is enough to call the `get(...)` method or the `getD(...)` to calculate
        the value of the expression or the derivative of the expression at this point.
        
        ```python
        variables = {
          "x": "0.001",
          "y": "0.0000000000000000000000555",
          "z": "-2",
          "a": "-1",
        }
        value = f5a.get(variables)
        x_derivative = f5a.getD("x", variables)
        z_derivative = f5a.getD("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
        
        ```python
        from formula import formula
        pi = formula("2*asin(x)", 64).get({"x": "1"})
        ```
        
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: C++
Classifier: Programming Language :: Python
Classifier: Topic :: Scientific/Engineering :: Mathematics
Classifier: Topic :: Scientific/Engineering :: Physics
Requires-Python: >2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4
Description-Content-Type: text/markdown
