numdifftools


Namenumdifftools JSON
Version 0.9.41 PyPI version JSON
download
home_pagehttps://github.com/pbrod/numdifftools
SummarySolves automatic numerical differentiation problems in one or more variables.
upload_time2022-11-10 17:06:22
maintainer
docs_urlNone
authorPer A. Brodtkorb
requires_python
licensenew BSD
keywords
VCS
bugtrack_url
requirements numpy scipy
Travis-CI No Travis.
coveralls test coverage
            
============
numdifftools
============



    |pkg_img| |tests_img| |docs_img| |health_img| |coverage_img| |versions_img| |downloads_img|


The numdifftools library is a suite of tools written in `_Python <http://www.python.org/>`_
to solve automatic numerical differentiation problems in one or more variables.
Finite differences are used in an adaptive manner, coupled with a Richardson
extrapolation methodology to provide a maximally accurate result.
The user can configure many options like; changing the order of the method or
the extrapolation, even allowing the user to specify whether complex-step,
central, forward or backward differences are used.

The methods provided are:

- **Derivative**: Compute the derivatives of order 1 through 10 on any scalar function.

- **directionaldiff**: Compute directional derivative of a function of n variables

- **Gradient**: Compute the gradient vector of a scalar function of one or more variables.

- **Jacobian**: Compute the Jacobian matrix of a vector valued function of one or more variables.

- **Hessian**: Compute the Hessian matrix of all 2nd partial derivatives of a scalar function of one or more variables.

- **Hessdiag**: Compute only the diagonal elements of the Hessian matrix

All of these methods also produce error estimates on the result.

Numdifftools also provide an easy to use interface to derivatives calculated
with in `_AlgoPy <https://pythonhosted.org/algopy/>`_. Algopy stands for Algorithmic
Differentiation in Python.
The purpose of AlgoPy is the evaluation of higher-order derivatives in the
`forward` and `reverse` mode of Algorithmic Differentiation (AD) of functions
that are implemented as Python programs.


Getting Started
===============


Visualize high order derivatives of the tanh function

    >>> import numpy as np
    >>> import numdifftools as nd
    >>> import matplotlib.pyplot as plt
    >>> x = np.linspace(-2, 2, 100)
    >>> for i in range(10):
    ...    df = nd.Derivative(np.tanh, n=i)
    ...    y = df(x)
    ...    h = plt.plot(x, y/np.abs(y).max())

    >>> plt.show() # doctest: +SKIP

.. image:: https://raw.githubusercontent.com/pbrod/numdifftools/master/examples/fun.png
    :target: https://github.com/pbrod/numdifftools/blob/master/examples/fun.py



Compute 1'st and 2'nd derivative of exp(x), at x == 1::

    >>> fd = nd.Derivative(np.exp)        # 1'st derivative
    >>> fdd = nd.Derivative(np.exp, n=2)  # 2'nd derivative
    >>> np.allclose(fd(1), 2.7182818284590424)
    True
    >>> np.allclose(fdd(1), 2.7182818284590424)
    True

Nonlinear least squares::

    >>> xdata = np.reshape(np.arange(0,1,0.1),(-1,1))
    >>> ydata = 1+2*np.exp(0.75*xdata)
    >>> fun = lambda c: (c[0]+c[1]*np.exp(c[2]*xdata) - ydata)**2
    >>> Jfun = nd.Jacobian(fun)
    >>> np.allclose(np.abs(Jfun([1,2,0.75])), 0) # should be numerically zero
    True

Compute gradient of sum(x**2)::

    >>> fun = lambda x: np.sum(x**2)
    >>> dfun = nd.Gradient(fun)
    >>> np.allclose(dfun([1,2,3]), [ 2.,  4.,  6.])
    True

Compute the same with the easy to use interface to AlgoPy::

    >>> import numdifftools.nd_algopy as nda
    >>> import numpy as np
    >>> fd = nda.Derivative(np.exp)        # 1'st derivative
    >>> fdd = nda.Derivative(np.exp, n=2)  # 2'nd derivative
    >>> np.allclose(fd(1), 2.7182818284590424)
    True
    >>> np.allclose(fdd(1), 2.7182818284590424)
    True

Nonlinear least squares::

    >>> xdata = np.reshape(np.arange(0,1,0.1),(-1,1))
    >>> ydata = 1+2*np.exp(0.75*xdata)
    >>> fun = lambda c: (c[0]+c[1]*np.exp(c[2]*xdata) - ydata)**2
    >>> Jfun = nda.Jacobian(fun, method='reverse')
    >>> np.allclose(np.abs(Jfun([1,2,0.75])), 0) # should be numerically zero
    True

Compute gradient of sum(x**2)::

    >>> fun = lambda x: np.sum(x**2)
    >>> dfun = nda.Gradient(fun)
    >>> np.allclose(dfun([1,2,3]), [ 2.,  4.,  6.])
    True


See also
--------
scipy.misc.derivative


Documentation and code
======================

Numdifftools works on Python 2.7+ and Python 3.0+.

Official releases available at: http://pypi.python.org/pypi/numdifftools |pkg_img|

Official documentation available at: http://numdifftools.readthedocs.io/en/latest/ |docs_img|

Bleeding edge: https://github.com/pbrod/numdifftools.


Installation
============

If you have pip installed, then simply type:

    $ pip install numdifftools

to get the lastest stable version. Using pip also has the advantage that all
requirements are automatically installed.


Unit tests
==========
To test if the toolbox is working paste the following in an interactive
python session::

   import numdifftools as nd
   nd.test('--doctest-modules', '--disable-warnings')


Acknowledgement
===============
The `numdifftools package <http://pypi.python.org/pypi/numdifftools/>`_ for
`Python <https://www.python.org/>`_ was written by Per A. Brodtkorb
based on the adaptive numerical differentiation toolbox written in
`Matlab <http://www.mathworks.com>`_  by John D'Errico [DErrico06]_.

Later the package was extended with some of the functionality
found in the statsmodels.tools.numdiff module written by Josef Perktold
[JPerktold14]_ which is based on [Rid09]_.
The implementation of bicomplex numbers is based on the matlab implementation
described in the project report of [Ver14]_ which is based on [GLD12].
For completeness the [For98]_  method for computing the weights and points in general
finite difference formulas as well as the [For81]_ method for cumputing the
taylor coefficients of complex analytic function using FFT, was added.


References
===========

.. [JPerktold14] Perktold, J (2014), numdiff package
    http://statsmodels.sourceforge.net/0.6.0/_modules/statsmodels/tools/numdiff.html

.. [Ver14] Adriaen Verheyleweghen, (2014)
    "Computation of higher-order derivatives using the multi-complex step method",
    Project report, NTNU

.. [GLD12] Gregory Lantoine, R.P. Russell, and T. Dargent (2012)
    "Using multicomplex variables for automatic computation of high-order derivatives",
    ACM Transactions on Mathematical Software,
    Vol. 38, No. 3, Article 16, April 2012, 21 pages,
    http://doi.acm.org/10.1145/2168773.2168774

.. [MELEV12] M.E. Luna-Elizarraras, M. Shapiro, D.C. Struppa1, A. Vajiac (2012),
    "Bicomplex Numbers and Their Elementary Functions",
    CUBO A Mathematical Journal,
    Vol. 14, No 2, (61-80). June 2012.

.. [Lan10] Gregory Lantoine (2010),
    "A methodology for robust optimization of low-thrust trajectories in multi-body environments",
    Phd thesis, Georgia Institute of Technology

.. [Rid09] Ridout, M.S. (2009)
    "Statistical applications of the complex-step method of numerical differentiation",
    *The American Statistician*, 63, 66-74

.. [DErrico06] D'Errico, J. R.  (2006),
    "Adaptive Robust Numerical Differentiation",
    http://www.mathworks.com/matlabcentral/fileexchange/13490-adaptive-robust-numerical-differentiation

.. [KLLK05] K.-L. Lai, J.L. Crassidis, Y. Cheng, J. Kim (2005),
    "New complex step derivative approximations with application to second-order kalman filtering",
    AIAA Guidance, *Navigation and Control Conference*,
    San Francisco, California, August 2005, AIAA-2005-5944.

.. [For98] B. Fornberg (1998)
    "Calculation of weights_and_points in finite difference formulas",
    SIAM Review 40, pp. 685-691.

.. [For81] Fornberg, B. (1981).
    "Numerical Differentiation of Analytic Functions",
    ACM Transactions on Mathematical Software (TOMS),
    7(4), 512-526. http://doi.org/10.1145/355972.355979

.. [JML69] Lyness, J. M., Moler, C. B. (1969).
    "Generalized Romberg Methods for Integrals of Derivatives", *Numerische Mathematik*.

.. [JML66] Lyness, J. M., Moler, C. B. (1966).
    "Vandermonde Systems and Numerical Differentiation", *Numerische Mathematik*.

.. [NAG] *NAG Library*. NAG Fortran Library Document: D04AAF



    .. |pkg_img| image:: https://badge.fury.io/py/numdifftools.svg
       :target: https://badge.fury.io/py/numdifftools

    .. |tests_img| image:: https://github.com/pbrod/numdifftools/actions/workflows/test.yml/badge.svg
       :target: https://github.com/pbrod/numdifftools/actions/workflows/test.yml

    .. |health_img| image:: https://api.codeclimate.com/v1/badges/698996d1ec94028ec223/maintainability.svg
       :target: https://codeclimate.com/github/pbrod/numdifftools/maintainability
       :alt: Maintainability

    .. |coverage_img| image:: https://api.codeclimate.com/v1/badges/698996d1ec94028ec223/test_coverage.svg
       :target: https://codeclimate.com/github/pbrod/numdifftools/test_coverage
       :alt: Test Coverage

    .. |versions_img| image:: https://img.shields.io/pypi/pyversions/numdifftools.svg
       :target: https://github.com/pbrod/numdifftools

    .. |downloads_img| image:: https://pepy.tech/badge/numdifftools/month
       :target: https://pepy.tech/project/numdifftools
       :alt: PyPI - Downloads

    .. |docs_img| image:: https://readthedocs.org/projects/numdifftools/badge/?svg=true
       :target: http://numdifftools.readthedocs.org/en/stable/
       :alt: Documentation


=========
Changelog
=========

Version 0.9.41 Nov 10, 2022
===========================
Fabian Joswig (5):
      * ci: execute test action only on push to master and on pull requests.
      * ci: test requirements added to ci workflow.
      * ci: first version of github actions ci added.
      * fix: import from from scipy.ndimage.filters replaced by from scipy.ndimage
      * fix: np.info(float).machar.tiny replaced by np.info(float).tiny

Jonas Eschle (6):
      * Drop Python 3.6
      * Remove Python 2.7, 3.6 from appveyor CI
      * Update .travis.yml
      * Update setup.cfg
      * Update .travis.yml
      * Update to Python310

Per A Brodtkorb (19):
      * Commented out deprecated pep8ignore and pep8maxlinelength in setup.cfg
      * Fixed issue #59: numpy deprecation warning on machar.tiny
      * Deleted obsolete travis_install.sh 
      * Replaced deprecated `np.MachAr().eps` (NumPy 1.22) with np.finfo(float).eps in test_multicomplex.py

      * Added requirements.tests.txt 
      * Updated .github/workflows/test.yml to use requirements.tests.txt
      * Removed obsolete .travis.yml and appveyor.yml. 
      * Github-actions are now used instead. 
      * Replaced appveyor badge and travis badge with github-actions badge in README.rst, info.py and index.rst
      * Removed python 2.7 from classifiers in setup.cfg
      * Updated .travis.yml
      * Fixed doctest so they don't crash on travis: Replaced "# doctest + SKIP" with "# doctest: +SKIP" in docstrings.
      * Updated download badge in README.rst and info.py
      * Updated test_img in README.rst
      * Updated tests_img path for travis.
      * Added "# doctest + SKIP" to doctest string in info.py
      * Replaced "version|" with "release|" in docs/index.rst
      * Added matplotlib to requirements.txt Removed failing python 3.8 from appveyor.yml

Per A. Brodtkorb (4):
      * Merge pull request #65 from fjosw/feat/github_actions_ci
      * Merge pull request #66 from jonas-eschle/patch-1
      * Merge pull request #60 from peendebak/performance/percentile
      * Merge pull request #63 from fjosw/feat/numpy_deprecation

Pieter Eendebak (2):
      * workaround for known issue with np.nanpercentile
      * improve performance by combining percentile calculations

Version 0.9.40 Jun 2, 2021
==========================

Per A Brodtkorb (109):
      * Replaced python 3.5 with 3.9 in .travis.yml 
      * Removed python 3.5 from appveyor.yml 
      * Added bibtex_bibfiles = ... to docs/conf.py 
      * Fixed doctest failures in   
          - docs/src/numerical/derivest.rst
          - docs/tutorials/getting_started.rst
          - numdifftools.core.py
          - numdifftools.limits.py
          - numdifftools.nd_algopy.py
          - numdifftools.nd_scipy.py 
          - numdifftools.nd_statsmodels.py
      * Insulated import of click in a if __name__ =='__main__' clause.
      * Added activate to appveyor.yml
      * Added https://mathworld.wolfram.com/WynnsEpsilonMethod.html reference for the Epsilon algorithm in extrapolation.py. 
      * Disabled the restriction that n must be one in LogJacobianRule 
      * Added complex_even and central_even methods to the JacobianDifferenceFunctions
      * Updated documentation of Derivative in core.py
      * Updated documentation of Richardson.
      * Removed obsolete tests from test_nd_scipy.py 
      * Fixed a bug in TestJacobian.test_scalar_to_vector in test_nd_scipy.py for method="complex'
      * Refactored code from core.py to finite_difference.py 
      * Added LogJacobianRule, LogHessdiagRule, LogHessianRule to finite_difference.py 
      * Fixed a bug in Richardson._estimate_error: Complex rule resulted wrongly in complex error values.
      * Added netlib.org/quadpack reference.
      * Updated Dea to conform with Quadpack 
      * Replaced reference to Brezinski with refs to Quadpack.
      * Reduced cyclomatic complexity in Dea in extrapolation.py 
      * Removed commented out code in profile_numdifftools.py
      * Updated pycodestyle ignore section in setup.cfg
      * Removed commented out code in run_benchmark.py Made get_nominal_step continous as function of x
      * Made datetime call python 2.7 compatible in run_benchmark.py
      * Simplified the Derivative._step_generator function in core.py. 
      * Made plots generated from run_benchmark.py prettier. 
      * step_ratio in the step generators by default 2 for n=1 and 1.6 otherwise in step_generators.py
      * Fixed failing doctests in core.py and nd_statsmodels.py
      * Added doctests to setup.cfg.
      * Reordered imports in test_example_functions.py
      * Fixed .travis.yml so that he file paths in coverage.xml is discoverable
        under the sonar.sources folder. The problem is that SonarQube is
        analysing the checked-out source code (in src/numdifftools) but the
        actual unit tests and coverage.py is run against the installed code (in
        build/lib/numdifftools). Thus the absolute files paths to the installed
      * Removed commented code from test_numdifftools.py
      * Run only coverage xml when python version is 3.7
      * Updated .travis.yml Removed commented out code from extrapolation.py and nd_statsmodels.py
      * Finalized the moved of XXXDifferencdFunctions from core.py to finite_difference.py
      * Added missing docstring for default_scale function in step_generators.py. 
      * Removed unused import of itertools in _find_default_scale.py.
      * Changed default scale from 1.35 to 1.06 for complex/multicomplex methods when n=1
      * Added richardson_demo to extrapolation.py Simplified EpsAlg class in extrapolation.py
      * Corrected a small error for dea3: Now dea3 and Dea(limexp=3) gives the same result!
      * Added python 3.8 to appveyor.yml Added python 3.9 to setup.cfg
      * Fixed reference to how-to/index
      * Added doctest configuration to docs.conf.py
      * Fixes issue #50 by adding function value f(x) to the info.f_value.
      * Updated README.rst
      * Added @UnusedVariable here and there.
      * Silence warnings in Hessian by adding __init__ that set the correct order given the method. 
      * Updated the Richardson._r_matrix method to generate complex matrix when step_ratio is complex. 
      * Fixed profile_hessian in profile_numdifftools.py so it works again. 
      * Added with np.errstate(all='ignore') to test_derivative_on_sinh and test_scalar_to_vector in test_nd_algopy.py to silence warnings.
      * Changed citation style to alpha.
      * Replaced bibliography.rst with refs1.bib and zreferences.rst 
      * Removed badges for latex
      * Changed sonar addon token
      * Added CC_TEST_REPORTER_ID
      * Fixed a typo in docs/numdifftools.rst
      * Added docs/make.bat 
      * Removed python 2.7 from .travis.yml
      * Moved test_requires from setup.cfg to setup.py 
      * Added Latex to setup.py
      * Changed default radius to 0.0059 which appears to cause less failures in Taylor in fornberg.py.
      * Updated MANIFEST.in
      * Fixes issue #49 : Dimension of Jacobian of vector valued function (length n) with scalar input should be n X 1
      * Updated build_package.py
      * Attempt to silence divide by zero and invalid warnings.
      * Fix issue#52: Gradient tries to apply squeeze to the output tuple containing both the result and the full_output object.
      * Made docstring a rawdocstring since it contains slashes. 
      * Added "# pylint: disable=unused-argument" in appropriate places.
      * API change: replaced "python setup.py doctests" with "python setup.py doctest"
      * Removed unused imports 
      * Fixed a bug in test_low_order_derivative_on_example_functions:  Same variable (i) was used both in the outer and inner loop.
      * Updated badge for pypi and documentation of fornberg.py
      * Fixed failing tests.
      * Updated docs + added a test
      * Added  "python -m pip install --upgrade pytest" to appveyor.yml due to a package conflict on python2.7 32 bit
      * Added - "python -m pip install --upgrade setuptools" in appveyor.yml to avoid build error.
      * Try  "python setup.py bdist_wheel" and "pip install numdifftools --find-links=dist" in appveyor.yml
      * Put qoutes on "python -m pip install --upgrade pip" in appveyor.yml
      * Changed "python setup.py install" to   
         - python setup.py bdist_wheel"
         - pip install numdifftools --find-links=dist
      * Added "pip install --upgrade pip" to appveyor.yml
      * Updated the detailed package documentation.
      * Added missing pytest-pep8 to install
      * Updated badge + appveyor.yml
      * ongoing work to harmonize the the output from approx_fprime and approx_fprime_cs
      * Added Taylor class to nd_algopy.py Fixed a bug in _get_best_taylor_coefficient in fornberg.py
      * Updated references Added test_mod_c function to test_multicomplex.py
      * Fixed a typo.
      * Removed --strict-markers
      * Fixed issue #39 TypeError: unsupported operand type(s) for /: 'float' and 'Bicomplex'
      * Fixed a typo in the documentation. Closing issue #51
      * Added separate test for nd_scipy.
      * added skip on tests if LineProfiler is not installed.
      * Removed obsolete centered argument from call to approx_hess1 + pep8
      * Move Jacobian._increment method to _JacobianDifferenceFunctions
      * step_nom was unused in CStepGenerator.__init__ Added pytest.markers.slow in to setup.cfg
      * Made two tests more forgiving in order to avoid failure on travis.
      * Renamed nominal_step and base_step to get_nominal_step and get_base_step, respectively.
      * Removed obsolete import of example from hypothesis
      * Updated testing
      * Updated coverage call: coverage run -m py.test src/numdifftools/tests
      * Delete obsolete conftest.py

Version 0.9.39 Jun 10, 2019
===========================

Robert Parini (1):
      * Fix issue #43: numpy future warning

Version 0.9.38 Jun 10, 2019
===========================

Andrew Nelson (1):
      * MAINT: special.factorial instead of misc.factorial

Dougal J. Sutherland (1):
      * include LICENSE.txt in distributions

Per A Brodtkorb (140):
      * Adjusted runtime for hypothesis tests to avoid failure and fixed pep8 failures.
      * Fixed a bug in setup.cfg
      * Replaced valarray function with numpy.full in step_generators.py 
      * Added try except on import of algopy 
      * Updated the badges used in the README.rst 
      * Replaced numpy.testing.Tester with pytest. 
      * Removed dependence on pyscaffold.
      * Simplified setup.py and setup.cfg 
      * Updated .travis.yml configuration.
      * Reorganized the documentation. 
      * Ongoing work to simplify the classes.
      * Replaced unittest with pytest.
      * Added finite_difference.py
      * replaced , with .
      * Reverted to coverage=4.3.4
      * New attempt
      * Fixed conflicting import
      * Missing import of EPS
      * Added missing FD_RULES = {}
      * Removed pinned coverage, removed dependence on pyscaffold
      * Updated .travis.yml and .appveyor.yml
      * Replaced conda channel omnia with conda-forge
      * Removed commented out code. Set pyqt=5 in appveyor.yml
      * Updated codeclimate checks
      * Dropped support for python 3.3 and 3.4. Added support for python 3.6, 3.7
      * Simplified code.
      * Pinned IPython==5.0 in order to make the testserver not crash.
      * Added line_profiler to appveyor.yml
      * Removed line_profiler from requirements.txt
      * Fix issue #37: Unable to install on Python 2.7 
      * Added method='backward' to nd_statsmodels.py 
      * Skip test_profile_numdifftools_profile_hessian and TestDoProfile
      * Added missing import of warnings
      * Added tests for the scripts from profile_numdifftools.py, _find_default_scale.py and run_benchmark.py.
      * Added reason to unittest.skipIf
      * Added line_profiler to requirements.
      * misssing import of warnings fixed.
      * Renamed test so it comes last, because I suspect this test mess up the coverage stats.
      * Reordered the tests.
      * Added more tests.
      * Cleaned up _find_default_scale.py
      * Removed link to depsy
      * Reverted: install of cython and pip install setuptools
      * Disabled sonar-scanner -X for python 3.5 because it crashes.
      * Reverted [options.packages.find] to exclude tests again
      * Added cython and reverted to pip install setuptools
      * Updated sphinx to 1.6.7
      * Try to install setuptools with conda instead.
      * Added hypothesis and pytest to requirements.readthedocs.txt
      * Set version of setuptools==37.0
      * Added algopy, statsmodels and numpy to requirements.readthedocs.txt
      * Restricted sphinx in the hope that the docs will be generated.
      * Removed exclusion of tests/ directory from test coverage.
      * Added dependencies into setup.cfg
      * Readded six as dependency
      * Refactored and removed commented out code.
      * Fixed a bug in the docstring example: Made sure the shape passed on to zeros is an integer.
      * Fixed c_abs so it works with algopy on python 3.6.
      * Fixed flaky test and made it more robust.
      * Fixed bug in .travis.yml
      * Refactored the taylor function into the Taylor class in order to simplify the code.
      * Fixed issue #35 and added tests
      * Attempt to simplify complexity
      * Made doctests more robust
      * Updated project path
      * Changed install of algopy
      * Fixed small bugs
      * Updated docstrings
      * Changed Example and Reference to Examples and References in docstrings to comply with numpydoc-style.
      * Renamed CHANGES.rst to CHANGELOG.rst
      * Renamed source path
      * Hack due to a bug in algopy or changed behaviour.
      * Small fix.
      * Try to reduce complexity
      * Reduced cognitive complexity of min_num_steps
      * Simplified  code in Jacobian
      * Merge branch 'master' of https://github.com/pbrod/numdifftools
      * Fixed issue #34 Licence clarification.
      * Locked coverage=4.3.4 due to a bug in coverage that cause code-climate test-reporter to fail.
      * Added script for finding default scale
      * updated from sonarcube to sonarcloud
      * Made sure shape is an integer.
      * Refactored make_step_generator into a step property
      * Issue warning message to the user when setting the order to something different than 1 or 2 in Hessian.
      * Updated example in Gradient.
      * Reverted --timid option to coverage because it took too long time to run.
      * Reverted --pep8 option
      * pep8 + added --timid in .travis.yml coverage run in order to to increase missed coverage.
      * Refactored taylor to reduce complexity
      * No support for python 3.3. Added python 3.6
      * Fixed a small bug and updated test.
      * Removed unneccasarry perenthesis. Reduced the complexity of do_profile
      * Made python3 compatible
      * Removed assert False
      * Made unittests more forgiving.
      * updated doctest in nd_scipy.py and profiletools.py install line_profiler on travis
      * Made python 3 compatible
      * Updated tests
      * Added test_profiletools.py and capture_stdout_and_stderr in testing.py
      * Optimized numdifftools.core.py for speed: fd_rules are now only computed once.
      * Only keeping html docs in the distribution.
      * Added doctest and updated .pylintrc and requirements.txt
      * Reduced time footprint on tests in the hope that it will pass on Travis CI.
      * Prefer static methods over instance methods
      * Better memory handling: This fixes issue #27
      * Added statsmodels to requirements.txt
      * Added nd_statsmodels.py
      * Simplified input
      * Merge branch 'master' of https://github.com/pbrod/numdifftools
      * Updated link to the documentation.

Robert Parini (4):
      * Avoid RuntimeWarning in _get_logn
      * Allow fd_derivative to take complex valued functions

solarjoe (1):
      * doc: added nd.directionaldiff example



Version 0.9.20, Jan 11, 2017
============================

Per A Brodtkorb (1):
     * Updated the author email address in order for twine to be able to upload to pypi.


Version 0.9.19, Jan 11, 2017
============================

Per A Brodtkorb (1):
      * Updated setup.py in a attempt to get upload to pypi working again.


Version 0.9.18, Jan 11, 2017
============================

Per A Brodtkorb (38):
      * Updated setup
      * Added import statements in help header examples.
      * Added more rigorous tests using hypothesis.
      * Forced to use wxagg backend
      * Moved import of matplotlib.pyplot to main in order to avoid import error on travis.
      * Added fd_derivative function
      * Updated references.
      * Attempt to automate sonarcube analysis
      * Added testcoverage to sonarqube and codeclimate
      * Simplified code
      * Added .pylintrc + pep8
      * Major change in api: class member variable self.f changed to self.fun
      * Fixes issue #25 (Jacobian broken since 0.9.15)


Version 0.9.17, Sep 8, 2016
============================

Andrew Fowlie (1):
      * Fix ReadTheDocs link as mentioned in #21

Per A Brodtkorb (79):
      * Added test for MinMaxStepgenerator
      * Removed obsolete docs from core.py
      * Updated appveyor.yml
      * Fixed sign in inverse matrix
      * Simplified code 
      * Added appveyor badge + synchronised info.py with README.rst.
      * Removed plot in help header
      * Added Programming Language :: Python :: 3.5
      * Simplified code
      * Renamed bicomplex to Bicomplex
      * Simplified example_functions.py
      * Moved MinStepGenerator, MaxStepGeneretor and MinMaxStepGenerator to step_generators.py
         - Unified the step generators
         - Moved step_generator tests to test_step_generators.py
         - Major simplification of step_generators.py
      * Removed duplicated code + pep8
      * Moved fornberg_weights to fornberg.py + added taylor and derivative
      * Fixed print statement
      * Replace xrange with range
      * Added examples + made computation more robust.
      * Made 'backward' and alias for 'reverse' in nd_algopy.py
      * Expanded the tests + added test_docstrings to testing.py
      * Replace string interpolation with format()
      * Removed obsolete parameter
      * Smaller start radius for Fornberg method
      * Simplified "n" and "order" properties
      * Simplified default_scale
      * Removed unecessary parenthesis and code.
      * Fixed a bug in Dea + small refactorings.
      * Added test for EpsAlg
      * Avoid mutable default args and prefer static methods over instance-meth.
      * Refactored to reduce cyclomatic complexity
      * Changed some instance methods to static methods
      * Renamed non-pythonic variable names
      * Turned on xvfb (X Virtual Framebuffer) to imitate a display.
      * Added extra test for Jacobian
      * Replace lambda function with a def
      * Removed unused import
      * Added test for epsalg
      * Fixed test_scalar_to_vector
      * Updated test_docstrings


Version 0.9.15, May 10, 2016
============================

Cody (2):
      * Migrated `%` string formating
      * Migrated `%` string formating

Per A Brodtkorb (28):
      * Updated README.rst + setup.cfg
      * Replaced instance methods with static methods +pep8
      * Merge branch 'master' of https://github.com/pbrod/numdifftools
      * Fixed a bug: replaced missing triple quote
      * Added depsy badge
      * added .checkignore for quantificode
      * Added .codeclimate.yml
      * Fixed failing tests
      * Changed instance methods to static methods
      * Made untyped exception handlers specific
      * Replaced local function with a static method
      * Simplified tests
      * Removed duplicated code Simplified _Derivative._get_function_name
      * exclude tests from testclimate
      * Renamed test_functions.py to example_functions.py Added test_example_functions.py

Per A. Brodtkorb (2):
      * Merge pull request #17 from pbrod/autofix/wrapped2_to3_fix
      * Merge pull request #18 from pbrod/autofix/wrapped2_to3_fix-0

pbrod (17):
      * updated conf.py
      * added numpydoc>=0.5, sphinx_rtd_theme>=0.1.7 to setup_requires if sphinx
      * updated setup.py
      * added requirements.readthedocs.txt
      * Updated README.rst with info about how to install it using conda in an anaconda package.
      * updated conda install description
      * Fixed number of arguments so it does not differs from overridden '_default_base_step' method
      * Added codecov to .travis.yml
      * Attempt to remove coverage of test-files
      * Added directionaldiff function in order to calculate directional derivatives. Fixes issue #16. Also added supporting tests and examples to the documentation.
      * Fixed isssue #19 multiple observations mishandled in Jacobian
      * Moved rosen function into numdifftools.testing.py
      * updated import of rosen function from numdifftools.testing
      * Simplified code + pep8 + added TestResidue
      * Updated readme.rst and replaced string interpolation with format()
      * Cleaned Dea class + pep8
      * Updated references for Wynn extrapolation method.



Version 0.9.14, November 10, 2015
=================================

pbrod (53):
      * Updated documentation of setup.py
      * Updated README.rst
      * updated version
      * Added more documentation
      * Updated example
      * Added .landscape.yml     updated .coveragerc, .travis.yml
      * Added coverageall to README.rst.
      * updated docs/index.rst
      * Removed unused code and added tests/test_extrapolation.py
      * updated tests
      * Added more tests
      * Readded c_abs c_atan2
      * Removed dependence on wheel, numpydoc>=0.5 and sphinx_rtd_theme>=0.1.7 (only needed for building documentation)
      * updated conda path in .travis.yml
      * added omnia channel to .travis.yml
      * Added conda_recipe files     Filtered out warnings in limits.py


Version 0.9.13, October 30, 2015
================================

pbrod (21):
      * Updated README.rst and CHANGES.rst.
      * updated Limits.
      * Made it possible to differentiate complex functions and allow zero'th order derivative.
      * BUG: added missing derivative order, n to Gradient, Hessian, Jacobian.
      * Made test more robust.
      * Updated structure in setup according to pyscaffold version 2.4.2.
      * Updated setup.cfg and deleted duplicate tests folder.
      * removed unused code.
      * Added appveyor.yml.
      * Added required appveyor install scripts
      * Fixed bug in appveyor.yml.
      * added wheel to requirements.txt.
      * updated appveyor.yml.
      * Removed import matplotlib.

Justin Lecher (1):
      * Fix min version for numpy.

kikocorreoso (1):
      * fix some prints on run_benchmark.py to make it work with py3


Version 0.9.12, August 28, 2015
===============================

pbrod (12):

      * Updated documentation.
      * Updated version in conf.py.
      * Updated CHANGES.rst.
      * Reimplemented outlier detection and made it more robust.     
      * Added limits.py with tests.
      * Updated main tests folder.        
      * Moved Richardson and dea3 to extrapolation.py.
      * Making a new release in order to upload to pypi.


Version 0.9.11, August 27, 2015
===============================

pbrod (2):
      * Fixed sphinx-build and updated docs.
      * Fixed issue #9 Backward differentiation method fails with additional parameters.


Version 0.9.10, August 26, 2015
===============================

pbrod (7):
      * Fixed sphinx-build and updated docs.
      * Added more tests to nd_algopy.
      * Dropped support for Python 2.6.


Version 0.9.4, August 26, 2015
==============================

pbrod (7):
      * Fixed sphinx-build and updated docs.


Version 0.9.3, August 23, 2015
==============================

Paul Kienzle (1):
      * more useful benchmark plots.

pbrod (7):
      * Fixed bugs and updated docs.
      * Major rewrite of the easy to use interface to Algopy.
      * Added possibility to calculate n'th order derivative not just for n=1 in nd_algopy.
      * Added tests to the easy to use interface to algopy.



Version 0.9.2, August 20, 2015
==============================

pbrod (3):
      * Updated documentation
      * Added parenthesis to a call to the print function
      * Made the test less strict in order to pass the tests on Travis for python 2.6 and 3.2.


Version 0.9.1, August 20,2015
=============================

Christoph Deil (1):
      * Fix Sphinx build

pbrod (47):
      * Total remake of numdifftools with slightly different call syntax.
         * Can compute derivatives of order up to 10-14 depending on function and method used. 
         * Updated documentation and tests accordingly.
         * Fixed a bug in dea3.
         * Added StepsGenerator as an replacement for the adaptive option.
         * Added bicomplex class for testing the complex step second derivative.
         * Added fornberg_weights_all for computing optimal finite difference rules in a stable way.
         * Added higher order complex step derivative methods.



Version 0.7.7, December 18, 2014
================================

pbrod (35):
      * Got travis-ci working in order to run the tests automatically.
      * Fixed bugs in Dea class.
      * Fixed better error estimate for the Hessian.
      * Fixed tests for python 2.6.
      * Adding tests as subpackage.
      * Restructerd folders of numdifftools.


Version 0.7.3, December 17, 2014
================================

pbrod (5):
      * Small cosmetic fixes.
      * pep8 + some refactorings.
      * Simplified code by refactoring.



Version 0.6.0, February 8, 2014
===============================

pbrod (20):
      * Update and rename README.md to README.rst.
      * Simplified call to Derivative: removed step_fix.
      * Deleted unused code.
      * Simplified and Refactored. Now possible to choose step_num=1.
      * Changed default step_nom from max(abs(x0), 0.2) to max(log2(abs(x0)), 0.2).
      * pep8ified code and made sure that all tests pass.


Version 0.5.0, January 10, 2014
===============================

pbrod (9):
      * Updated the examples in Gradient class and in info.py.
      * Added test for vec2mat and docstrings + cosmetic fixes.
      * Refactored code into private methods.
      * Fixed issue #7: Derivative(fun)(numpy.ones((10,5)) * 2) failed.
      * Made print statements compatible with python 3.



Version 0.4.0, May 5, 2012
==========================

pbrod (1)
      * Fixed a bug for inf and nan values.




Version 0.3.5, May 19, 2011
===========================

pbrod (1)
      * Fixed a bug for inf and nan values.


Version 0.3.4, Feb 24, 2011
===========================

pbrod (11)
      * Made automatic choice for the stepsize more robust.
      * Added easy to use interface to the algopy and scientificpython modules.


Version 0.3.1, May 20, 2009
===========================

pbrod (4)
      * First version of numdifftools published on google.code




Copyright (c) 2009-2022, Per A. Brodtkorb, John D'Errico
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this
  list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice,
  this list of conditions and the following disclaimer in the documentation
  and/or other materials provided with the distribution.

* Neither the name of the copyright holders nor the names of its
  contributors may be used to endorse or promote products derived from
  this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/pbrod/numdifftools",
    "name": "numdifftools",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "",
    "author": "Per A. Brodtkorb",
    "author_email": "per.andreas.brodtkorb@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/a7/3c/32bcbc96f465d5b34986d75d4eb3531f3f3e5b36099970bfbce8e9bc1712/numdifftools-0.9.41.tar.gz",
    "platform": "any",
    "description": "\n============\nnumdifftools\n============\n\n\n\n    |pkg_img| |tests_img| |docs_img| |health_img| |coverage_img| |versions_img| |downloads_img|\n\n\nThe numdifftools library is a suite of tools written in `_Python <http://www.python.org/>`_\nto solve automatic numerical differentiation problems in one or more variables.\nFinite differences are used in an adaptive manner, coupled with a Richardson\nextrapolation methodology to provide a maximally accurate result.\nThe user can configure many options like; changing the order of the method or\nthe extrapolation, even allowing the user to specify whether complex-step,\ncentral, forward or backward differences are used.\n\nThe methods provided are:\n\n- **Derivative**: Compute the derivatives of order 1 through 10 on any scalar function.\n\n- **directionaldiff**: Compute directional derivative of a function of n variables\n\n- **Gradient**: Compute the gradient vector of a scalar function of one or more variables.\n\n- **Jacobian**: Compute the Jacobian matrix of a vector valued function of one or more variables.\n\n- **Hessian**: Compute the Hessian matrix of all 2nd partial derivatives of a scalar function of one or more variables.\n\n- **Hessdiag**: Compute only the diagonal elements of the Hessian matrix\n\nAll of these methods also produce error estimates on the result.\n\nNumdifftools also provide an easy to use interface to derivatives calculated\nwith in `_AlgoPy <https://pythonhosted.org/algopy/>`_. Algopy stands for Algorithmic\nDifferentiation in Python.\nThe purpose of AlgoPy is the evaluation of higher-order derivatives in the\n`forward` and `reverse` mode of Algorithmic Differentiation (AD) of functions\nthat are implemented as Python programs.\n\n\nGetting Started\n===============\n\n\nVisualize high order derivatives of the tanh function\n\n    >>> import numpy as np\n    >>> import numdifftools as nd\n    >>> import matplotlib.pyplot as plt\n    >>> x = np.linspace(-2, 2, 100)\n    >>> for i in range(10):\n    ...    df = nd.Derivative(np.tanh, n=i)\n    ...    y = df(x)\n    ...    h = plt.plot(x, y/np.abs(y).max())\n\n    >>> plt.show() # doctest: +SKIP\n\n.. image:: https://raw.githubusercontent.com/pbrod/numdifftools/master/examples/fun.png\n    :target: https://github.com/pbrod/numdifftools/blob/master/examples/fun.py\n\n\n\nCompute 1'st and 2'nd derivative of exp(x), at x == 1::\n\n    >>> fd = nd.Derivative(np.exp)        # 1'st derivative\n    >>> fdd = nd.Derivative(np.exp, n=2)  # 2'nd derivative\n    >>> np.allclose(fd(1), 2.7182818284590424)\n    True\n    >>> np.allclose(fdd(1), 2.7182818284590424)\n    True\n\nNonlinear least squares::\n\n    >>> xdata = np.reshape(np.arange(0,1,0.1),(-1,1))\n    >>> ydata = 1+2*np.exp(0.75*xdata)\n    >>> fun = lambda c: (c[0]+c[1]*np.exp(c[2]*xdata) - ydata)**2\n    >>> Jfun = nd.Jacobian(fun)\n    >>> np.allclose(np.abs(Jfun([1,2,0.75])), 0) # should be numerically zero\n    True\n\nCompute gradient of sum(x**2)::\n\n    >>> fun = lambda x: np.sum(x**2)\n    >>> dfun = nd.Gradient(fun)\n    >>> np.allclose(dfun([1,2,3]), [ 2.,  4.,  6.])\n    True\n\nCompute the same with the easy to use interface to AlgoPy::\n\n    >>> import numdifftools.nd_algopy as nda\n    >>> import numpy as np\n    >>> fd = nda.Derivative(np.exp)        # 1'st derivative\n    >>> fdd = nda.Derivative(np.exp, n=2)  # 2'nd derivative\n    >>> np.allclose(fd(1), 2.7182818284590424)\n    True\n    >>> np.allclose(fdd(1), 2.7182818284590424)\n    True\n\nNonlinear least squares::\n\n    >>> xdata = np.reshape(np.arange(0,1,0.1),(-1,1))\n    >>> ydata = 1+2*np.exp(0.75*xdata)\n    >>> fun = lambda c: (c[0]+c[1]*np.exp(c[2]*xdata) - ydata)**2\n    >>> Jfun = nda.Jacobian(fun, method='reverse')\n    >>> np.allclose(np.abs(Jfun([1,2,0.75])), 0) # should be numerically zero\n    True\n\nCompute gradient of sum(x**2)::\n\n    >>> fun = lambda x: np.sum(x**2)\n    >>> dfun = nda.Gradient(fun)\n    >>> np.allclose(dfun([1,2,3]), [ 2.,  4.,  6.])\n    True\n\n\nSee also\n--------\nscipy.misc.derivative\n\n\nDocumentation and code\n======================\n\nNumdifftools works on Python 2.7+ and Python 3.0+.\n\nOfficial releases available at: http://pypi.python.org/pypi/numdifftools |pkg_img|\n\nOfficial documentation available at: http://numdifftools.readthedocs.io/en/latest/ |docs_img|\n\nBleeding edge: https://github.com/pbrod/numdifftools.\n\n\nInstallation\n============\n\nIf you have pip installed, then simply type:\n\n    $ pip install numdifftools\n\nto get the lastest stable version. Using pip also has the advantage that all\nrequirements are automatically installed.\n\n\nUnit tests\n==========\nTo test if the toolbox is working paste the following in an interactive\npython session::\n\n   import numdifftools as nd\n   nd.test('--doctest-modules', '--disable-warnings')\n\n\nAcknowledgement\n===============\nThe `numdifftools package <http://pypi.python.org/pypi/numdifftools/>`_ for\n`Python <https://www.python.org/>`_ was written by Per A. Brodtkorb\nbased on the adaptive numerical differentiation toolbox written in\n`Matlab <http://www.mathworks.com>`_  by John D'Errico [DErrico06]_.\n\nLater the package was extended with some of the functionality\nfound in the statsmodels.tools.numdiff module written by Josef Perktold\n[JPerktold14]_ which is based on [Rid09]_.\nThe implementation of bicomplex numbers is based on the matlab implementation\ndescribed in the project report of [Ver14]_ which is based on [GLD12].\nFor completeness the [For98]_  method for computing the weights and points in general\nfinite difference formulas as well as the [For81]_ method for cumputing the\ntaylor coefficients of complex analytic function using FFT, was added.\n\n\nReferences\n===========\n\n.. [JPerktold14] Perktold, J (2014), numdiff package\n    http://statsmodels.sourceforge.net/0.6.0/_modules/statsmodels/tools/numdiff.html\n\n.. [Ver14] Adriaen Verheyleweghen, (2014)\n    \"Computation of higher-order derivatives using the multi-complex step method\",\n    Project report, NTNU\n\n.. [GLD12] Gregory Lantoine, R.P. Russell, and T. Dargent (2012)\n    \"Using multicomplex variables for automatic computation of high-order derivatives\",\n    ACM Transactions on Mathematical Software,\n    Vol. 38, No. 3, Article 16, April 2012, 21 pages,\n    http://doi.acm.org/10.1145/2168773.2168774\n\n.. [MELEV12] M.E. Luna-Elizarraras, M. Shapiro, D.C. Struppa1, A. Vajiac (2012),\n    \"Bicomplex Numbers and Their Elementary Functions\",\n    CUBO A Mathematical Journal,\n    Vol. 14, No 2, (61-80). June 2012.\n\n.. [Lan10] Gregory Lantoine (2010),\n    \"A methodology for robust optimization of low-thrust trajectories in multi-body environments\",\n    Phd thesis, Georgia Institute of Technology\n\n.. [Rid09] Ridout, M.S. (2009)\n    \"Statistical applications of the complex-step method of numerical differentiation\",\n    *The American Statistician*, 63, 66-74\n\n.. [DErrico06] D'Errico, J. R.  (2006),\n    \"Adaptive Robust Numerical Differentiation\",\n    http://www.mathworks.com/matlabcentral/fileexchange/13490-adaptive-robust-numerical-differentiation\n\n.. [KLLK05] K.-L. Lai, J.L. Crassidis, Y. Cheng, J. Kim (2005),\n    \"New complex step derivative approximations with application to second-order kalman filtering\",\n    AIAA Guidance, *Navigation and Control Conference*,\n    San Francisco, California, August 2005, AIAA-2005-5944.\n\n.. [For98] B. Fornberg (1998)\n    \"Calculation of weights_and_points in finite difference formulas\",\n    SIAM Review 40, pp. 685-691.\n\n.. [For81] Fornberg, B. (1981).\n    \"Numerical Differentiation of Analytic Functions\",\n    ACM Transactions on Mathematical Software (TOMS),\n    7(4), 512-526. http://doi.org/10.1145/355972.355979\n\n.. [JML69] Lyness, J. M., Moler, C. B. (1969).\n    \"Generalized Romberg Methods for Integrals of Derivatives\", *Numerische Mathematik*.\n\n.. [JML66] Lyness, J. M., Moler, C. B. (1966).\n    \"Vandermonde Systems and Numerical Differentiation\", *Numerische Mathematik*.\n\n.. [NAG] *NAG Library*. NAG Fortran Library Document: D04AAF\n\n\n\n    .. |pkg_img| image:: https://badge.fury.io/py/numdifftools.svg\n       :target: https://badge.fury.io/py/numdifftools\n\n    .. |tests_img| image:: https://github.com/pbrod/numdifftools/actions/workflows/test.yml/badge.svg\n       :target: https://github.com/pbrod/numdifftools/actions/workflows/test.yml\n\n    .. |health_img| image:: https://api.codeclimate.com/v1/badges/698996d1ec94028ec223/maintainability.svg\n       :target: https://codeclimate.com/github/pbrod/numdifftools/maintainability\n       :alt: Maintainability\n\n    .. |coverage_img| image:: https://api.codeclimate.com/v1/badges/698996d1ec94028ec223/test_coverage.svg\n       :target: https://codeclimate.com/github/pbrod/numdifftools/test_coverage\n       :alt: Test Coverage\n\n    .. |versions_img| image:: https://img.shields.io/pypi/pyversions/numdifftools.svg\n       :target: https://github.com/pbrod/numdifftools\n\n    .. |downloads_img| image:: https://pepy.tech/badge/numdifftools/month\n       :target: https://pepy.tech/project/numdifftools\n       :alt: PyPI - Downloads\n\n    .. |docs_img| image:: https://readthedocs.org/projects/numdifftools/badge/?svg=true\n       :target: http://numdifftools.readthedocs.org/en/stable/\n       :alt: Documentation\n\n\n=========\nChangelog\n=========\n\nVersion 0.9.41 Nov 10, 2022\n===========================\nFabian Joswig (5):\n      * ci: execute test action only on push to master and on pull requests.\n      * ci: test requirements added to ci workflow.\n      * ci: first version of github actions ci added.\n      * fix: import from from scipy.ndimage.filters replaced by from scipy.ndimage\n      * fix: np.info(float).machar.tiny replaced by np.info(float).tiny\n\nJonas Eschle (6):\n      * Drop Python 3.6\n      * Remove Python 2.7, 3.6 from appveyor CI\n      * Update .travis.yml\n      * Update setup.cfg\n      * Update .travis.yml\n      * Update to Python310\n\nPer A Brodtkorb (19):\n      * Commented out deprecated pep8ignore and pep8maxlinelength in setup.cfg\n      * Fixed issue #59: numpy deprecation warning on machar.tiny\n      * Deleted obsolete travis_install.sh \n      * Replaced deprecated `np.MachAr().eps` (NumPy 1.22) with np.finfo(float).eps in test_multicomplex.py\n\n      * Added requirements.tests.txt \n      * Updated .github/workflows/test.yml to use requirements.tests.txt\n      * Removed obsolete .travis.yml and appveyor.yml. \n      * Github-actions are now used instead. \n      * Replaced appveyor badge and travis badge with github-actions badge in README.rst, info.py and index.rst\n      * Removed python 2.7 from classifiers in setup.cfg\n      * Updated .travis.yml\n      * Fixed doctest so they don't crash on travis: Replaced \"# doctest + SKIP\" with \"# doctest: +SKIP\" in docstrings.\n      * Updated download badge in README.rst and info.py\n      * Updated test_img in README.rst\n      * Updated tests_img path for travis.\n      * Added \"# doctest + SKIP\" to doctest string in info.py\n      * Replaced \"version|\" with \"release|\" in docs/index.rst\n      * Added matplotlib to requirements.txt Removed failing python 3.8 from appveyor.yml\n\nPer A. Brodtkorb (4):\n      * Merge pull request #65 from fjosw/feat/github_actions_ci\n      * Merge pull request #66 from jonas-eschle/patch-1\n      * Merge pull request #60 from peendebak/performance/percentile\n      * Merge pull request #63 from fjosw/feat/numpy_deprecation\n\nPieter Eendebak (2):\n      * workaround for known issue with np.nanpercentile\n      * improve performance by combining percentile calculations\n\nVersion 0.9.40 Jun 2, 2021\n==========================\n\nPer A Brodtkorb (109):\n      * Replaced python 3.5 with 3.9 in .travis.yml \n      * Removed python 3.5 from appveyor.yml \n      * Added bibtex_bibfiles = ... to docs/conf.py \n      * Fixed doctest failures in   \n          - docs/src/numerical/derivest.rst\n          - docs/tutorials/getting_started.rst\n          - numdifftools.core.py\n          - numdifftools.limits.py\n          - numdifftools.nd_algopy.py\n          - numdifftools.nd_scipy.py \n          - numdifftools.nd_statsmodels.py\n      * Insulated import of click in a if __name__ =='__main__' clause.\n      * Added activate to appveyor.yml\n      * Added https://mathworld.wolfram.com/WynnsEpsilonMethod.html reference for the Epsilon algorithm in extrapolation.py. \n      * Disabled the restriction that n must be one in LogJacobianRule \n      * Added complex_even and central_even methods to the JacobianDifferenceFunctions\n      * Updated documentation of Derivative in core.py\n      * Updated documentation of Richardson.\n      * Removed obsolete tests from test_nd_scipy.py \n      * Fixed a bug in TestJacobian.test_scalar_to_vector in test_nd_scipy.py for method=\"complex'\n      * Refactored code from core.py to finite_difference.py \n      * Added LogJacobianRule, LogHessdiagRule, LogHessianRule to finite_difference.py \n      * Fixed a bug in Richardson._estimate_error: Complex rule resulted wrongly in complex error values.\n      * Added netlib.org/quadpack reference.\n      * Updated Dea to conform with Quadpack \n      * Replaced reference to Brezinski with refs to Quadpack.\n      * Reduced cyclomatic complexity in Dea in extrapolation.py \n      * Removed commented out code in profile_numdifftools.py\n      * Updated pycodestyle ignore section in setup.cfg\n      * Removed commented out code in run_benchmark.py Made get_nominal_step continous as function of x\n      * Made datetime call python 2.7 compatible in run_benchmark.py\n      * Simplified the Derivative._step_generator function in core.py. \n      * Made plots generated from run_benchmark.py prettier. \n      * step_ratio in the step generators by default 2 for n=1 and 1.6 otherwise in step_generators.py\n      * Fixed failing doctests in core.py and nd_statsmodels.py\n      * Added doctests to setup.cfg.\n      * Reordered imports in test_example_functions.py\n      * Fixed .travis.yml so that he file paths in coverage.xml is discoverable\n        under the sonar.sources folder. The problem is that SonarQube is\n        analysing the checked-out source code (in src/numdifftools) but the\n        actual unit tests and coverage.py is run against the installed code (in\n        build/lib/numdifftools). Thus the absolute files paths to the installed\n      * Removed commented code from test_numdifftools.py\n      * Run only coverage xml when python version is 3.7\n      * Updated .travis.yml Removed commented out code from extrapolation.py and nd_statsmodels.py\n      * Finalized the moved of XXXDifferencdFunctions from core.py to finite_difference.py\n      * Added missing docstring for default_scale function in step_generators.py. \n      * Removed unused import of itertools in _find_default_scale.py.\n      * Changed default scale from 1.35 to 1.06 for complex/multicomplex methods when n=1\n      * Added richardson_demo to extrapolation.py Simplified EpsAlg class in extrapolation.py\n      * Corrected a small error for dea3: Now dea3 and Dea(limexp=3) gives the same result!\n      * Added python 3.8 to appveyor.yml Added python 3.9 to setup.cfg\n      * Fixed reference to how-to/index\n      * Added doctest configuration to docs.conf.py\n      * Fixes issue #50 by adding function value f(x) to the info.f_value.\n      * Updated README.rst\n      * Added @UnusedVariable here and there.\n      * Silence warnings in Hessian by adding __init__ that set the correct order given the method. \n      * Updated the Richardson._r_matrix method to generate complex matrix when step_ratio is complex. \n      * Fixed profile_hessian in profile_numdifftools.py so it works again. \n      * Added with np.errstate(all='ignore') to test_derivative_on_sinh and test_scalar_to_vector in test_nd_algopy.py to silence warnings.\n      * Changed citation style to alpha.\n      * Replaced bibliography.rst with refs1.bib and zreferences.rst \n      * Removed badges for latex\n      * Changed sonar addon token\n      * Added CC_TEST_REPORTER_ID\n      * Fixed a typo in docs/numdifftools.rst\n      * Added docs/make.bat \n      * Removed python 2.7 from .travis.yml\n      * Moved test_requires from setup.cfg to setup.py \n      * Added Latex to setup.py\n      * Changed default radius to 0.0059 which appears to cause less failures in Taylor in fornberg.py.\n      * Updated MANIFEST.in\n      * Fixes issue #49 : Dimension of Jacobian of vector valued function (length n) with scalar input should be n X 1\n      * Updated build_package.py\n      * Attempt to silence divide by zero and invalid warnings.\n      * Fix issue#52: Gradient tries to apply squeeze to the output tuple containing both the result and the full_output object.\n      * Made docstring a rawdocstring since it contains slashes. \n      * Added \"# pylint: disable=unused-argument\" in appropriate places.\n      * API change: replaced \"python setup.py doctests\" with \"python setup.py doctest\"\n      * Removed unused imports \n      * Fixed a bug in test_low_order_derivative_on_example_functions:  Same variable (i) was used both in the outer and inner loop.\n      * Updated badge for pypi and documentation of fornberg.py\n      * Fixed failing tests.\n      * Updated docs + added a test\n      * Added  \"python -m pip install --upgrade pytest\" to appveyor.yml due to a package conflict on python2.7 32 bit\n      * Added - \"python -m pip install --upgrade setuptools\" in appveyor.yml to avoid build error.\n      * Try  \"python setup.py bdist_wheel\" and \"pip install numdifftools --find-links=dist\" in appveyor.yml\n      * Put qoutes on \"python -m pip install --upgrade pip\" in appveyor.yml\n      * Changed \"python setup.py install\" to   \n         - python setup.py bdist_wheel\"\n         - pip install numdifftools --find-links=dist\n      * Added \"pip install --upgrade pip\" to appveyor.yml\n      * Updated the detailed package documentation.\n      * Added missing pytest-pep8 to install\n      * Updated badge + appveyor.yml\n      * ongoing work to harmonize the the output from approx_fprime and approx_fprime_cs\n      * Added Taylor class to nd_algopy.py Fixed a bug in _get_best_taylor_coefficient in fornberg.py\n      * Updated references Added test_mod_c function to test_multicomplex.py\n      * Fixed a typo.\n      * Removed --strict-markers\n      * Fixed issue #39 TypeError: unsupported operand type(s) for /: 'float' and 'Bicomplex'\n      * Fixed a typo in the documentation. Closing issue #51\n      * Added separate test for nd_scipy.\n      * added skip on tests if LineProfiler is not installed.\n      * Removed obsolete centered argument from call to approx_hess1 + pep8\n      * Move Jacobian._increment method to _JacobianDifferenceFunctions\n      * step_nom was unused in CStepGenerator.__init__ Added pytest.markers.slow in to setup.cfg\n      * Made two tests more forgiving in order to avoid failure on travis.\n      * Renamed nominal_step and base_step to get_nominal_step and get_base_step, respectively.\n      * Removed obsolete import of example from hypothesis\n      * Updated testing\n      * Updated coverage call: coverage run -m py.test src/numdifftools/tests\n      * Delete obsolete conftest.py\n\nVersion 0.9.39 Jun 10, 2019\n===========================\n\nRobert Parini (1):\n      * Fix issue #43: numpy future warning\n\nVersion 0.9.38 Jun 10, 2019\n===========================\n\nAndrew Nelson (1):\n      * MAINT: special.factorial instead of misc.factorial\n\nDougal J. Sutherland (1):\n      * include LICENSE.txt in distributions\n\nPer A Brodtkorb (140):\n      * Adjusted runtime for hypothesis tests to avoid failure and fixed pep8 failures.\n      * Fixed a bug in setup.cfg\n      * Replaced valarray function with numpy.full in step_generators.py \n      * Added try except on import of algopy \n      * Updated the badges used in the README.rst \n      * Replaced numpy.testing.Tester with pytest. \n      * Removed dependence on pyscaffold.\n      * Simplified setup.py and setup.cfg \n      * Updated .travis.yml configuration.\n      * Reorganized the documentation. \n      * Ongoing work to simplify the classes.\n      * Replaced unittest with pytest.\n      * Added finite_difference.py\n      * replaced , with .\n      * Reverted to coverage=4.3.4\n      * New attempt\n      * Fixed conflicting import\n      * Missing import of EPS\n      * Added missing FD_RULES = {}\n      * Removed pinned coverage, removed dependence on pyscaffold\n      * Updated .travis.yml and .appveyor.yml\n      * Replaced conda channel omnia with conda-forge\n      * Removed commented out code. Set pyqt=5 in appveyor.yml\n      * Updated codeclimate checks\n      * Dropped support for python 3.3 and 3.4. Added support for python 3.6, 3.7\n      * Simplified code.\n      * Pinned IPython==5.0 in order to make the testserver not crash.\n      * Added line_profiler to appveyor.yml\n      * Removed line_profiler from requirements.txt\n      * Fix issue #37: Unable to install on Python 2.7 \n      * Added method='backward' to nd_statsmodels.py \n      * Skip test_profile_numdifftools_profile_hessian and TestDoProfile\n      * Added missing import of warnings\n      * Added tests for the scripts from profile_numdifftools.py, _find_default_scale.py and run_benchmark.py.\n      * Added reason to unittest.skipIf\n      * Added line_profiler to requirements.\n      * misssing import of warnings fixed.\n      * Renamed test so it comes last, because I suspect this test mess up the coverage stats.\n      * Reordered the tests.\n      * Added more tests.\n      * Cleaned up _find_default_scale.py\n      * Removed link to depsy\n      * Reverted: install of cython and pip install setuptools\n      * Disabled sonar-scanner -X for python 3.5 because it crashes.\n      * Reverted [options.packages.find] to exclude tests again\n      * Added cython and reverted to pip install setuptools\n      * Updated sphinx to 1.6.7\n      * Try to install setuptools with conda instead.\n      * Added hypothesis and pytest to requirements.readthedocs.txt\n      * Set version of setuptools==37.0\n      * Added algopy, statsmodels and numpy to requirements.readthedocs.txt\n      * Restricted sphinx in the hope that the docs will be generated.\n      * Removed exclusion of tests/ directory from test coverage.\n      * Added dependencies into setup.cfg\n      * Readded six as dependency\n      * Refactored and removed commented out code.\n      * Fixed a bug in the docstring example: Made sure the shape passed on to zeros is an integer.\n      * Fixed c_abs so it works with algopy on python 3.6.\n      * Fixed flaky test and made it more robust.\n      * Fixed bug in .travis.yml\n      * Refactored the taylor function into the Taylor class in order to simplify the code.\n      * Fixed issue #35 and added tests\n      * Attempt to simplify complexity\n      * Made doctests more robust\n      * Updated project path\n      * Changed install of algopy\n      * Fixed small bugs\n      * Updated docstrings\n      * Changed Example and Reference to Examples and References in docstrings to comply with numpydoc-style.\n      * Renamed CHANGES.rst to CHANGELOG.rst\n      * Renamed source path\n      * Hack due to a bug in algopy or changed behaviour.\n      * Small fix.\n      * Try to reduce complexity\n      * Reduced cognitive complexity of min_num_steps\n      * Simplified  code in Jacobian\n      * Merge branch 'master' of https://github.com/pbrod/numdifftools\n      * Fixed issue #34 Licence clarification.\n      * Locked coverage=4.3.4 due to a bug in coverage that cause code-climate test-reporter to fail.\n      * Added script for finding default scale\n      * updated from sonarcube to sonarcloud\n      * Made sure shape is an integer.\n      * Refactored make_step_generator into a step property\n      * Issue warning message to the user when setting the order to something different than 1 or 2 in Hessian.\n      * Updated example in Gradient.\n      * Reverted --timid option to coverage because it took too long time to run.\n      * Reverted --pep8 option\n      * pep8 + added --timid in .travis.yml coverage run in order to to increase missed coverage.\n      * Refactored taylor to reduce complexity\n      * No support for python 3.3. Added python 3.6\n      * Fixed a small bug and updated test.\n      * Removed unneccasarry perenthesis. Reduced the complexity of do_profile\n      * Made python3 compatible\n      * Removed assert False\n      * Made unittests more forgiving.\n      * updated doctest in nd_scipy.py and profiletools.py install line_profiler on travis\n      * Made python 3 compatible\n      * Updated tests\n      * Added test_profiletools.py and capture_stdout_and_stderr in testing.py\n      * Optimized numdifftools.core.py for speed: fd_rules are now only computed once.\n      * Only keeping html docs in the distribution.\n      * Added doctest and updated .pylintrc and requirements.txt\n      * Reduced time footprint on tests in the hope that it will pass on Travis CI.\n      * Prefer static methods over instance methods\n      * Better memory handling: This fixes issue #27\n      * Added statsmodels to requirements.txt\n      * Added nd_statsmodels.py\n      * Simplified input\n      * Merge branch 'master' of https://github.com/pbrod/numdifftools\n      * Updated link to the documentation.\n\nRobert Parini (4):\n      * Avoid RuntimeWarning in _get_logn\n      * Allow fd_derivative to take complex valued functions\n\nsolarjoe (1):\n      * doc: added nd.directionaldiff example\n\n\n\nVersion 0.9.20, Jan 11, 2017\n============================\n\nPer A Brodtkorb (1):\n     * Updated the author email address in order for twine to be able to upload to pypi.\n\n\nVersion 0.9.19, Jan 11, 2017\n============================\n\nPer A Brodtkorb (1):\n      * Updated setup.py in a attempt to get upload to pypi working again.\n\n\nVersion 0.9.18, Jan 11, 2017\n============================\n\nPer A Brodtkorb (38):\n      * Updated setup\n      * Added import statements in help header examples.\n      * Added more rigorous tests using hypothesis.\n      * Forced to use wxagg backend\n      * Moved import of matplotlib.pyplot to main in order to avoid import error on travis.\n      * Added fd_derivative function\n      * Updated references.\n      * Attempt to automate sonarcube analysis\n      * Added testcoverage to sonarqube and codeclimate\n      * Simplified code\n      * Added .pylintrc + pep8\n      * Major change in api: class member variable self.f changed to self.fun\n      * Fixes issue #25 (Jacobian broken since 0.9.15)\n\n\nVersion 0.9.17, Sep 8, 2016\n============================\n\nAndrew Fowlie (1):\n      * Fix ReadTheDocs link as mentioned in #21\n\nPer A Brodtkorb (79):\n      * Added test for MinMaxStepgenerator\n      * Removed obsolete docs from core.py\n      * Updated appveyor.yml\n      * Fixed sign in inverse matrix\n      * Simplified code \n      * Added appveyor badge + synchronised info.py with README.rst.\n      * Removed plot in help header\n      * Added Programming Language :: Python :: 3.5\n      * Simplified code\n      * Renamed bicomplex to Bicomplex\n      * Simplified example_functions.py\n      * Moved MinStepGenerator, MaxStepGeneretor and MinMaxStepGenerator to step_generators.py\n         - Unified the step generators\n         - Moved step_generator tests to test_step_generators.py\n         - Major simplification of step_generators.py\n      * Removed duplicated code + pep8\n      * Moved fornberg_weights to fornberg.py + added taylor and derivative\n      * Fixed print statement\n      * Replace xrange with range\n      * Added examples + made computation more robust.\n      * Made 'backward' and alias for 'reverse' in nd_algopy.py\n      * Expanded the tests + added test_docstrings to testing.py\n      * Replace string interpolation with format()\n      * Removed obsolete parameter\n      * Smaller start radius for Fornberg method\n      * Simplified \"n\" and \"order\" properties\n      * Simplified default_scale\n      * Removed unecessary parenthesis and code.\n      * Fixed a bug in Dea + small refactorings.\n      * Added test for EpsAlg\n      * Avoid mutable default args and prefer static methods over instance-meth.\n      * Refactored to reduce cyclomatic complexity\n      * Changed some instance methods to static methods\n      * Renamed non-pythonic variable names\n      * Turned on xvfb (X Virtual Framebuffer) to imitate a display.\n      * Added extra test for Jacobian\n      * Replace lambda function with a def\n      * Removed unused import\n      * Added test for epsalg\n      * Fixed test_scalar_to_vector\n      * Updated test_docstrings\n\n\nVersion 0.9.15, May 10, 2016\n============================\n\nCody (2):\n      * Migrated `%` string formating\n      * Migrated `%` string formating\n\nPer A Brodtkorb (28):\n      * Updated README.rst + setup.cfg\n      * Replaced instance methods with static methods +pep8\n      * Merge branch 'master' of https://github.com/pbrod/numdifftools\n      * Fixed a bug: replaced missing triple quote\n      * Added depsy badge\n      * added .checkignore for quantificode\n      * Added .codeclimate.yml\n      * Fixed failing tests\n      * Changed instance methods to static methods\n      * Made untyped exception handlers specific\n      * Replaced local function with a static method\n      * Simplified tests\n      * Removed duplicated code Simplified _Derivative._get_function_name\n      * exclude tests from testclimate\n      * Renamed test_functions.py to example_functions.py Added test_example_functions.py\n\nPer A. Brodtkorb (2):\n      * Merge pull request #17 from pbrod/autofix/wrapped2_to3_fix\n      * Merge pull request #18 from pbrod/autofix/wrapped2_to3_fix-0\n\npbrod (17):\n      * updated conf.py\n      * added numpydoc>=0.5, sphinx_rtd_theme>=0.1.7 to setup_requires if sphinx\n      * updated setup.py\n      * added requirements.readthedocs.txt\n      * Updated README.rst with info about how to install it using conda in an anaconda package.\n      * updated conda install description\n      * Fixed number of arguments so it does not differs from overridden '_default_base_step' method\n      * Added codecov to .travis.yml\n      * Attempt to remove coverage of test-files\n      * Added directionaldiff function in order to calculate directional derivatives. Fixes issue #16. Also added supporting tests and examples to the documentation.\n      * Fixed isssue #19 multiple observations mishandled in Jacobian\n      * Moved rosen function into numdifftools.testing.py\n      * updated import of rosen function from numdifftools.testing\n      * Simplified code + pep8 + added TestResidue\n      * Updated readme.rst and replaced string interpolation with format()\n      * Cleaned Dea class + pep8\n      * Updated references for Wynn extrapolation method.\n\n\n\nVersion 0.9.14, November 10, 2015\n=================================\n\npbrod (53):\n      * Updated documentation of setup.py\n      * Updated README.rst\n      * updated version\n      * Added more documentation\n      * Updated example\n      * Added .landscape.yml     updated .coveragerc, .travis.yml\n      * Added coverageall to README.rst.\n      * updated docs/index.rst\n      * Removed unused code and added tests/test_extrapolation.py\n      * updated tests\n      * Added more tests\n      * Readded c_abs c_atan2\n      * Removed dependence on wheel, numpydoc>=0.5 and sphinx_rtd_theme>=0.1.7 (only needed for building documentation)\n      * updated conda path in .travis.yml\n      * added omnia channel to .travis.yml\n      * Added conda_recipe files     Filtered out warnings in limits.py\n\n\nVersion 0.9.13, October 30, 2015\n================================\n\npbrod (21):\n      * Updated README.rst and CHANGES.rst.\n      * updated Limits.\n      * Made it possible to differentiate complex functions and allow zero'th order derivative.\n      * BUG: added missing derivative order, n to Gradient, Hessian, Jacobian.\n      * Made test more robust.\n      * Updated structure in setup according to pyscaffold version 2.4.2.\n      * Updated setup.cfg and deleted duplicate tests folder.\n      * removed unused code.\n      * Added appveyor.yml.\n      * Added required appveyor install scripts\n      * Fixed bug in appveyor.yml.\n      * added wheel to requirements.txt.\n      * updated appveyor.yml.\n      * Removed import matplotlib.\n\nJustin Lecher (1):\n      * Fix min version for numpy.\n\nkikocorreoso (1):\n      * fix some prints on run_benchmark.py to make it work with py3\n\n\nVersion 0.9.12, August 28, 2015\n===============================\n\npbrod (12):\n\n      * Updated documentation.\n      * Updated version in conf.py.\n      * Updated CHANGES.rst.\n      * Reimplemented outlier detection and made it more robust.     \n      * Added limits.py with tests.\n      * Updated main tests folder.        \n      * Moved Richardson and dea3 to extrapolation.py.\n      * Making a new release in order to upload to pypi.\n\n\nVersion 0.9.11, August 27, 2015\n===============================\n\npbrod (2):\n      * Fixed sphinx-build and updated docs.\n      * Fixed issue #9 Backward differentiation method fails with additional parameters.\n\n\nVersion 0.9.10, August 26, 2015\n===============================\n\npbrod (7):\n      * Fixed sphinx-build and updated docs.\n      * Added more tests to nd_algopy.\n      * Dropped support for Python 2.6.\n\n\nVersion 0.9.4, August 26, 2015\n==============================\n\npbrod (7):\n      * Fixed sphinx-build and updated docs.\n\n\nVersion 0.9.3, August 23, 2015\n==============================\n\nPaul Kienzle (1):\n      * more useful benchmark plots.\n\npbrod (7):\n      * Fixed bugs and updated docs.\n      * Major rewrite of the easy to use interface to Algopy.\n      * Added possibility to calculate n'th order derivative not just for n=1 in nd_algopy.\n      * Added tests to the easy to use interface to algopy.\n\n\n\nVersion 0.9.2, August 20, 2015\n==============================\n\npbrod (3):\n      * Updated documentation\n      * Added parenthesis to a call to the print function\n      * Made the test less strict in order to pass the tests on Travis for python 2.6 and 3.2.\n\n\nVersion 0.9.1, August 20,2015\n=============================\n\nChristoph Deil (1):\n      * Fix Sphinx build\n\npbrod (47):\n      * Total remake of numdifftools with slightly different call syntax.\n         * Can compute derivatives of order up to 10-14 depending on function and method used. \n         * Updated documentation and tests accordingly.\n         * Fixed a bug in dea3.\n         * Added StepsGenerator as an replacement for the adaptive option.\n         * Added bicomplex class for testing the complex step second derivative.\n         * Added fornberg_weights_all for computing optimal finite difference rules in a stable way.\n         * Added higher order complex step derivative methods.\n\n\n\nVersion 0.7.7, December 18, 2014\n================================\n\npbrod (35):\n      * Got travis-ci working in order to run the tests automatically.\n      * Fixed bugs in Dea class.\n      * Fixed better error estimate for the Hessian.\n      * Fixed tests for python 2.6.\n      * Adding tests as subpackage.\n      * Restructerd folders of numdifftools.\n\n\nVersion 0.7.3, December 17, 2014\n================================\n\npbrod (5):\n      * Small cosmetic fixes.\n      * pep8 + some refactorings.\n      * Simplified code by refactoring.\n\n\n\nVersion 0.6.0, February 8, 2014\n===============================\n\npbrod (20):\n      * Update and rename README.md to README.rst.\n      * Simplified call to Derivative: removed step_fix.\n      * Deleted unused code.\n      * Simplified and Refactored. Now possible to choose step_num=1.\n      * Changed default step_nom from max(abs(x0), 0.2) to max(log2(abs(x0)), 0.2).\n      * pep8ified code and made sure that all tests pass.\n\n\nVersion 0.5.0, January 10, 2014\n===============================\n\npbrod (9):\n      * Updated the examples in Gradient class and in info.py.\n      * Added test for vec2mat and docstrings + cosmetic fixes.\n      * Refactored code into private methods.\n      * Fixed issue #7: Derivative(fun)(numpy.ones((10,5)) * 2) failed.\n      * Made print statements compatible with python 3.\n\n\n\nVersion 0.4.0, May 5, 2012\n==========================\n\npbrod (1)\n      * Fixed a bug for inf and nan values.\n\n\n\n\nVersion 0.3.5, May 19, 2011\n===========================\n\npbrod (1)\n      * Fixed a bug for inf and nan values.\n\n\nVersion 0.3.4, Feb 24, 2011\n===========================\n\npbrod (11)\n      * Made automatic choice for the stepsize more robust.\n      * Added easy to use interface to the algopy and scientificpython modules.\n\n\nVersion 0.3.1, May 20, 2009\n===========================\n\npbrod (4)\n      * First version of numdifftools published on google.code\n\n\n\n\nCopyright (c) 2009-2022, Per A. Brodtkorb, John D'Errico\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n  list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n  this list of conditions and the following disclaimer in the documentation\n  and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holders nor the names of its\n  contributors may be used to endorse or promote products derived from\n  this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\n",
    "bugtrack_url": null,
    "license": "new BSD",
    "summary": "Solves automatic numerical differentiation problems in one or more variables.",
    "version": "0.9.41",
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "md5": "01116e9ed1a71bd724e8de0ab6c3bcc0",
                "sha256": "a8b162e06889ea73643a47b84935a63d8214d4b4b0805d36a3c28c56379b3e51"
            },
            "downloads": -1,
            "filename": "numdifftools-0.9.41-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "01116e9ed1a71bd724e8de0ab6c3bcc0",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": null,
            "size": 100223,
            "upload_time": "2022-11-10T17:06:18",
            "upload_time_iso_8601": "2022-11-10T17:06:18.789346Z",
            "url": "https://files.pythonhosted.org/packages/a3/5c/37cd5db8c465db2664b2219410b8bc7743da6edb1b616b5d13008bd7cac2/numdifftools-0.9.41-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "42edd6b2533b9052c8c4ebd0324ab5c0",
                "sha256": "4ef705cd3c06211b3a4e9fd05ad622be916dcfda40732f0128805a2c4be389b4"
            },
            "downloads": -1,
            "filename": "numdifftools-0.9.41.tar.gz",
            "has_sig": false,
            "md5_digest": "42edd6b2533b9052c8c4ebd0324ab5c0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 6735932,
            "upload_time": "2022-11-10T17:06:22",
            "upload_time_iso_8601": "2022-11-10T17:06:22.859683Z",
            "url": "https://files.pythonhosted.org/packages/a7/3c/32bcbc96f465d5b34986d75d4eb3531f3f3e5b36099970bfbce8e9bc1712/numdifftools-0.9.41.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2022-11-10 17:06:22",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "pbrod",
    "github_project": "numdifftools",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "landscape": true,
    "requirements": [
        {
            "name": "numpy",
            "specs": [
                [
                    ">=",
                    "1.9"
                ]
            ]
        },
        {
            "name": "scipy",
            "specs": [
                [
                    ">=",
                    "0.8"
                ]
            ]
        }
    ],
    "lcname": "numdifftools"
}
        
Elapsed time: 0.01273s