diff --git a/docs/source/differentiation.rst b/docs/source/differentiation.rst
index fb7a17d..74d0fa0 100644
--- a/docs/source/differentiation.rst
+++ b/docs/source/differentiation.rst
@@ -15,8 +15,6 @@ backward or central differences for the following problems:
 - Jacobian matrix of real vector-valued multivariate functions
 - Hessian matrix of real valued multivariate functions
 
-The methods explained below are not implemented by us and instead called from the
-
 
 Functions
 ---------
@@ -31,9 +29,9 @@ The variable method "method" allows the user to call a specific finite differenc
 method. We only allow for one of the methods and therefore exclude complex step and
 other possibilities:
 
-- forward differences ("method" = "forward")
-- backward differences ("method" = "backward")
-- central differences ("method" = "central")
+- forward differences (method="forward")
+- backward differences (method="backward")
+- central differences (method="central")
 
 As the central difference method is the most accurate, it is the default for all three
 functions. The numdifftools functions use Richardson extrapolation as their standard
@@ -60,6 +58,43 @@ of the jacobian matrix:
 .. autofunction:: jacobian
 
 
+.. _step_options:
+
+Influencing the Step Size
+-------------------------
+
+As mentioned before, we use numdifftools_ for all numerical differentiations with
+Richardson extrapolations. numdifftools_ offers many ways of influencing the step
+size of the extrapolation:
+
+
+- base_step (float, array-like, optional):
+    Defines the minimum step, if None, the value is set to ``EPS**(1/scale)````
+
+- step_ratio (float , optional):
+    Ratio between sequential steps generated. Must be > 1. If None
+    then ``step_ratio`` is 2 for first order derivatives, otherwise it is 1.6
+
+- num_steps (scalar integer, optional):
+    default ``min_num_steps + num_extrap``. Defines number of steps generated.
+    It should be larger than ``min_num_steps = (n + order - 1) / fact`` where
+    ``fact`` is 1, 2 or 4 depending on differentiation method used.
+
+
+- offset (float, optional):
+    offset to the base step.
+
+- num_extrap (int):
+    number of points used for extrapolation.  Numdifftools Documentation says
+    that the default is 0 but that would be surprising.
+
+
+- scale (float, array like):
+    scale used in base step. If not None it will override the default
+    computed with the default_scale function.
+
+
+
 Methods
 -------
 
diff --git a/environment.yml b/environment.yml
index 77da094..e671178 100644
--- a/environment.yml
+++ b/environment.yml
@@ -32,3 +32,4 @@ dependencies:
     - restructuredtext_lint
     - tox-conda
     - black
+    - pdbpp
diff --git a/estimagic/differentiation/differentiation.py b/estimagic/differentiation/differentiation.py
index 5679cf8..080e397 100644
--- a/estimagic/differentiation/differentiation.py
+++ b/estimagic/differentiation/differentiation.py
@@ -6,7 +6,13 @@ from estimagic.differentiation import differentiation_auxiliary as aux
 
 
 def gradient(
-    func, params, method="central", extrapolation=True, func_args=None, func_kwargs=None
+    func,
+    params,
+    method="central",
+    extrapolation=True,
+    func_args=None,
+    func_kwargs=None,
+    step_options=None,
 ):
     """
     Calculate the gradient of *func*.
@@ -20,11 +26,16 @@ def gradient(
             richardson extrapolation.
         func_args (list): additional positional arguments for func.
         func_kwargs (dict): additional positional arguments for func.
+        step_options (dict): Options for the numdifftools step generator.
+            See :ref:`step_options`
+
 
     Returns:
         Series: The index is the index of params_sr.
 
     """
+    step_options = step_options if step_options is not None else {}
+
     if method not in ["central", "forward", "backward"]:
         raise ValueError("Method has to be in ['central', 'forward', 'backward']")
 
@@ -35,7 +46,9 @@ def gradient(
     params_value = params["value"].to_numpy()
 
     if extrapolation:
-        grad_np = nd.Gradient(internal_func, method=method)(params_value)
+        grad_np = nd.Gradient(internal_func, method=method, **step_options)(
+            params_value
+        )
     else:
         grad_np = _no_extrapolation_gradient(internal_func, params_value, method)
     return pd.Series(data=grad_np, index=params.index, name="gradient")
@@ -52,7 +65,13 @@ def _no_extrapolation_gradient(internal_func, params_value, method):
 
 
 def jacobian(
-    func, params, method="central", extrapolation=True, func_args=None, func_kwargs=None
+    func,
+    params,
+    method="central",
+    extrapolation=True,
+    func_args=None,
+    func_kwargs=None,
+    step_options=None,
 ):
     """
     Calculate the jacobian of *func*.
@@ -68,6 +87,8 @@ def jacobian(
                                 richardson extrapolation.
         func_args (list): additional positional arguments for func.
         func_kwargs (dict): additional positional arguments for func.
+        step_options (dict): Options for the numdifftools step generator.
+            See :ref:`step_options`
 
     Returns:
         DataFrame: If func returns a Series, the index is the index of this Series or
@@ -75,6 +96,8 @@ def jacobian(
         index of params_sr.
 
     """
+    step_options = step_options if step_options is not None else {}
+
     if method not in ["central", "forward", "backward"]:
         raise ValueError("Method has to be in ['central', 'forward', 'backward']")
 
@@ -87,7 +110,7 @@ def jacobian(
     params_value = params["value"].to_numpy()
 
     if extrapolation:
-        jac_np = nd.Jacobian(internal_func, method=method)(params_value)
+        jac_np = nd.Jacobian(internal_func, method=method, **step_options)(params_value)
     else:
         jac_np = _no_extrapolation_jacobian(internal_func, params_value, method)
 
@@ -110,7 +133,13 @@ def _no_extrapolation_jacobian(internal_func, params_value, method):
 
 
 def hessian(
-    func, params, method="central", extrapolation=True, func_args=None, func_kwargs=None
+    func,
+    params,
+    method="central",
+    extrapolation=True,
+    func_args=None,
+    func_kwargs=None,
+    step_options=None,
 ):
     """
     Calculate the hessian of *func*.
@@ -124,11 +153,15 @@ def hessian(
                                 richardson extrapolation.
         func_args (list): additional positional arguments for func.
         func_kwargs (dict): additional positional arguments for func.
+        step_options (dict): Options for the numdifftools step generator.
+            See :ref:`step_options`
 
     Returns:
         DataFrame: The index and columns are the index of params_sr.
 
     """
+    step_options = step_options if step_options is not None else {}
+
     if method != "central":
         raise ValueError("Only the method 'central' is supported.")
 
@@ -139,7 +172,7 @@ def hessian(
     params_value = params["value"].to_numpy()
 
     if extrapolation:
-        hess_np = nd.Hessian(internal_func, method=method)(params_value)
+        hess_np = nd.Hessian(internal_func, method=method, **step_options)(params_value)
     else:
         hess_np = _no_extrapolation_hessian(internal_func, params_value, method)
     return pd.DataFrame(data=hess_np, index=params.index, columns=params.index)
diff --git a/estimagic/optimization/optimize.py b/estimagic/optimization/optimize.py
index 98dabd7..b08f35e 100644
--- a/estimagic/optimization/optimize.py
+++ b/estimagic/optimization/optimize.py
@@ -177,7 +177,7 @@ def minimize(
         )
         outer_server_process.start()
 
-    result, timing_info = _minimize(
+    result = _minimize(
         criterion=criterion,
         criterion_args=criterion_args,
         criterion_kwargs=criterion_kwargs,
@@ -194,7 +194,7 @@ def minimize(
     if dashboard:
         stop_signal.set()
         outer_server_process.terminate()
-    return result, timing_info
+    return result
 
 
 def _minimize(
diff --git a/setup.py b/setup.py
index 52a2736..2b52d31 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
 from setuptools import find_packages
 from setuptools import setup
 
-version = "0.0.15"
+version = "0.0.16"
 
 setup(
     name="estimagic",

Allow user to specify steps for numdifftools, scaling
I set the Richardson extrapolation version running yesterday. Still running.

I would be willing to sacrifice some precision for speed here; surely for testing. So it would be great if it was possible to pass the options `step_ratio=2.0, step=1, order=1, num_terms=2` there. Although I must admit that I have not gotten my head what precisely they do yet.

I have not really verified, but it seems to me that the steps are absolute. They certainly were for the manually specified finite-differencing derivative. With large parameter values, this leads to numerical error dominating. To be on the safe side here, I would suggest dividing by the absolute value of the parameter value.
diff --git a/estimagic/tests/differentiation/test_differentiation.py b/estimagic/tests/differentiation/test_differentiation.py
index c114685..47c5d54 100644
--- a/estimagic/tests/differentiation/test_differentiation.py
+++ b/estimagic/tests/differentiation/test_differentiation.py
@@ -35,8 +35,9 @@ def test_gradient(statsmodels_fixtures, method, extrapolation):
         logit_loglike,
         fix["params"],
         method="forward",
-        extrapolation=False,
+        extrapolation=extrapolation,
         func_args=func_args,
+        step_options={"step_ratio": 2.0},
     )
     expected = fix["gradient"]
     assert_series_equal(calculated, expected)
@@ -52,6 +53,7 @@ def test_jacobian(statsmodels_fixtures, method, extrapolation):
         method=method,
         extrapolation=extrapolation,
         func_kwargs=func_kwargs,
+        step_options={"step_ratio": 2.0},
     )
 
     expected = fix["jacobian"]
@@ -70,6 +72,7 @@ def test_hessian(statsmodels_fixtures, method, extrapolation):
         method=method,
         extrapolation=extrapolation,
         func_kwargs={"y": fix["y"], "x": fix["x"]},
+        step_options={"step_ratio": 2.0},
     )
     expected = fix["hessian"]
     assert_frame_equal(calculated, expected)

environment.yml
pip install -e .[dev]
parse_log_pytest
environment.yml
pytest pytest-mock pytest-xdist restructuredtext_lint tox-conda black
3.7
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster==0.7.12
algopy==0.6.1
anaconda-client==1.11.0
anyio==3.5.0
argon2-cffi==21.3.0
argon2-cffi-bindings==21.2.0
attrs==22.1.0
Babel==2.11.0
backcall==0.2.0
backports.functools-lru-cache==1.6.4
backports.tempfile==1.0
backports.weakref==1.0.post1
beautifulsoup4==4.11.1
black==23.3.0
bleach==4.1.0
bokeh==1.1.0
brotlipy==0.7.0
certifi==2022.12.7
cffi==1.15.1
cfgv==3.3.1
chardet==4.0.0
charset-normalizer==2.0.4
click==8.0.4
cloudpickle==2.0.0
clyent==1.2.2
colorama==0.4.6
conda==23.1.0
conda-build==3.23.3
conda-package-handling==2.0.2
conda-package-streaming==0.7.0
conda-verify==3.4.2
cryptography==39.0.1
cycler==0.11.0
debugpy==1.5.1
decorator==5.1.1
defusedxml==0.7.1
distlib==0.3.9
docutils==0.18.1
entrypoints==0.4
-e git+https://github.com/OpenSourceEconomics/estimagic.git@5b602797666a7573ae34b05655885ff83659f8d6#egg=estimagic
exceptiongroup==1.2.2
execnet==2.0.2
fastjsonschema==2.16.2
filelock==3.12.2
flit-core==3.6.0
fonttools==4.25.0
future==0.18.3
fuzzywuzzy==0.18.0
glob2==0.7
identify==2.5.24
idna==3.4
imagesize==1.4.1
importlib-metadata==4.11.3
importlib-resources==5.2.0
iniconfig==2.0.0
ipykernel==6.15.2
ipyparallel==6.3.0
ipython==7.31.1
ipython-genutils==0.2.0
ipywidgets==7.6.5
jedi==0.18.1
Jinja2==3.1.2
json5==0.9.6
jsonschema==4.17.3
jupyter==1.0.0
jupyter-client==7.4.9
jupyter-console==6.4.4
jupyter-core==4.11.2
jupyter-server==1.23.4
jupyterlab==3.5.3
jupyterlab-pygments==0.1.2
jupyterlab-server==2.19.0
jupyterlab-widgets==1.0.0
kiwisolver==1.4.4
libarchive-c==5.1
lxml==4.9.1
MarkupSafe==2.1.1
matplotlib==3.4.3
matplotlib-inline==0.1.6
mistune==0.8.4
munkres==1.1.4
mypy-extensions==1.0.0
nbclassic==0.5.2
nbclient==0.5.13
nbconvert==6.5.4
nbformat==5.7.0
nbsphinx==0.9.7
nest-asyncio==1.5.6
nodeenv==1.9.1
notebook==6.5.2
notebook-shim==0.2.2
numdifftools==0.9.41
numpy==1.16.6
packaging==22.0
pandas==0.24.2
pandocfilters==1.5.0
parso==0.8.3
pathspec==0.11.2
patsy==0.5.3
pexpect==4.8.0
pickleshare==0.7.5
Pillow==9.4.0
pkginfo==1.8.3
pkgutil-resolve-name==1.3.10
platformdirs==4.0.0
pluggy==1.0.0
ply==3.11
pre-commit==2.21.0
prometheus-client==0.14.1
prompt-toolkit==3.0.43
psutil==5.9.0
ptyprocess==0.7.0
py==1.11.0
pycosat==0.6.4
pycparser==2.21
Pygments==2.11.2
pyOpenSSL==23.0.0
pyparsing==3.0.9
PyQt5-sip==12.11.0
pyrsistent==0.18.0
PySocks==1.7.1
pytest==7.4.4
pytest-mock==3.11.1
pytest-xdist==3.5.0
python-dateutil==2.8.2
python-Levenshtein==0.12.2
pytz==2022.7
PyYAML==6.0
pyzmq==23.2.0
qtconsole==5.4.0
QtPy==2.2.0
requests==2.28.1
restructuredtext-lint==1.4.0
ruamel.yaml==0.17.21
ruamel.yaml.clib==0.2.6
scipy==1.2.1
seaborn==0.11.2
Send2Trash==1.8.0
sip==6.6.2
six==1.16.0
sniffio==1.2.0
snowballstemmer==2.2.0
soupsieve==2.3.2.post1
Sphinx==5.0.2
sphinx-rtd-theme==0.4.3
sphinxcontrib-applehelp==1.0.2
sphinxcontrib-devhelp==1.0.2
sphinxcontrib-htmlhelp==2.0.0
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml==1.1.5
statsmodels==0.11.1
terminado==0.17.1
tinycss2==1.2.1
toml==0.10.2
tomli==2.0.1
toolz==0.12.0
tornado==6.2
tox==3.28.0
tox-conda==0.10.2
tqdm==4.64.1
traitlets==5.7.1
typed-ast==1.5.5
typing-extensions==4.4.0
urllib3==1.26.14
virtualenv==20.26.6
wcwidth==0.2.5
webencodings==0.5.1
websocket-client==0.58.0
widgetsnbextension==3.5.2
zipp==3.11.0
zstandard==0.19.0

name: estimagic
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - alabaster=0.7.12=pyhd3eb1b0_0
  - algopy=0.6.1=pyhd8ed1ab_0
  - ampl-mp=3.1.0=hf726d26_1005
  - anaconda-client=1.11.0=py37h06a4308_0
  - anyio=3.5.0=py37h06a4308_0
  - argon2-cffi=21.3.0=pyhd3eb1b0_0
  - argon2-cffi-bindings=21.2.0=py37h7f8727e_0
  - attrs=22.1.0=py37h06a4308_0
  - babel=2.11.0=py37h06a4308_0
  - backcall=0.2.0=pyhd3eb1b0_0
  - backports=1.1=pyhd3eb1b0_1
  - backports.functools_lru_cache=1.6.4=pyhd3eb1b0_0
  - backports.tempfile=1.0=pyhd3eb1b0_1
  - backports.weakref=1.0.post1=py_1
  - beautifulsoup4=4.11.1=py37h06a4308_0
  - blas=1.0=openblas
  - bleach=4.1.0=pyhd3eb1b0_0
  - bokeh=1.1.0=py37_0
  - boost=1.70.0=py37h9de70de_1
  - boost-cpp=1.70.0=ha2d47e9_1
  - brotli=1.0.9=h5eee18b_9
  - brotli-bin=1.0.9=h5eee18b_9
  - brotlipy=0.7.0=py37h27cfd23_1003
  - bzip2=1.0.8=h5eee18b_6
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - cffi=1.15.1=py37h5eee18b_3
  - chardet=4.0.0=py37h06a4308_1003
  - charset-normalizer=2.0.4=pyhd3eb1b0_0
  - click=8.0.4=py37h06a4308_0
  - cloudpickle=2.0.0=pyhd3eb1b0_0
  - clyent=1.2.2=py37_1
  - colorama=0.4.6=py37h06a4308_0
  - conda=23.1.0=py37h06a4308_0
  - conda-build=3.23.3=py37h06a4308_0
  - conda-package-handling=2.0.2=py37h06a4308_0
  - conda-package-streaming=0.7.0=py37h06a4308_0
  - conda-verify=3.4.2=py_1
  - cryptography=39.0.1=py37h9ce1e76_0
  - cycler=0.11.0=pyhd3eb1b0_0
  - cyrus-sasl=2.1.28=h9c0eb46_1
  - dbus=1.13.18=hb2f20db_0
  - debugpy=1.5.1=py37h295c915_0
  - decorator=5.1.1=pyhd3eb1b0_0
  - defusedxml=0.7.1=pyhd3eb1b0_0
  - docutils=0.18.1=py37h06a4308_3
  - eigen=3.4.0=hdb19cb5_0
  - entrypoints=0.4=py37h06a4308_0
  - expat=2.6.4=h6a678d5_0
  - flit-core=3.6.0=pyhd3eb1b0_0
  - fontconfig=2.14.1=h52c9d5c_1
  - fonttools=4.25.0=pyhd3eb1b0_0
  - freetype=2.12.1=h4a9f257_0
  - future=0.18.3=py37h06a4308_0
  - fuzzywuzzy=0.18.0=py37h06a4308_0
  - giflib=5.2.2=h5eee18b_0
  - glib=2.78.4=h6a678d5_0
  - glib-tools=2.78.4=h6a678d5_0
  - glob2=0.7=pyhd3eb1b0_0
  - gst-plugins-base=1.14.1=h6a678d5_1
  - gstreamer=1.14.1=h5eee18b_1
  - icu=58.2=he6710b0_3
  - idna=3.4=py37h06a4308_0
  - imagesize=1.4.1=py37h06a4308_0
  - importlib-metadata=4.11.3=py37h06a4308_0
  - importlib_metadata=4.11.3=hd3eb1b0_0
  - importlib_resources=5.2.0=pyhd3eb1b0_1
  - ipopt=3.14.6=h630875f_0
  - ipykernel=6.15.2=py37h06a4308_0
  - ipyparallel=6.3.0=py37h06a4308_0
  - ipython=7.31.1=py37h06a4308_1
  - ipython_genutils=0.2.0=pyhd3eb1b0_1
  - ipywidgets=7.6.5=pyhd3eb1b0_2
  - jedi=0.18.1=py37h06a4308_1
  - jinja2=3.1.2=py37h06a4308_0
  - jpeg=9e=h5eee18b_3
  - json5=0.9.6=pyhd3eb1b0_0
  - jsonschema=4.17.3=py37h06a4308_0
  - jupyter=1.0.0=py37h06a4308_8
  - jupyter_client=7.4.9=py37h06a4308_0
  - jupyter_console=6.4.4=py37h06a4308_0
  - jupyter_core=4.11.2=py37h06a4308_0
  - jupyter_server=1.23.4=py37h06a4308_0
  - jupyterlab=3.5.3=py37h06a4308_0
  - jupyterlab_pygments=0.1.2=py_0
  - jupyterlab_server=2.19.0=py37h06a4308_0
  - jupyterlab_widgets=1.0.0=pyhd3eb1b0_1
  - kiwisolver=1.4.4=py37h6a678d5_0
  - krb5=1.20.1=h568e23c_1
  - lcms2=2.16=hb9589c4_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - lerc=4.0.0=h6a678d5_0
  - libarchive=3.6.2=hab531cd_0
  - libblas=3.9.0=16_linux64_openblas
  - libbrotlicommon=1.0.9=h5eee18b_9
  - libbrotlidec=1.0.9=h5eee18b_9
  - libbrotlienc=1.0.9=h5eee18b_9
  - libclang=14.0.6=default_hc6dbbc7_2
  - libclang13=14.0.6=default_he11475f_2
  - libcups=2.4.2=ha637b67_0
  - libdeflate=1.22=h5eee18b_0
  - libedit=3.1.20230828=h5eee18b_0
  - libevent=2.1.12=h8f2d780_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc=14.2.0=h767d61c_2
  - libgcc-ng=14.2.0=h69a702a_2
  - libgfortran-ng=7.5.0=ha8ba4b0_17
  - libgfortran4=7.5.0=ha8ba4b0_17
  - libgfortran5=14.2.0=hf1ad2bd_2
  - libglib=2.78.4=hdc74915_0
  - libgomp=14.2.0=h767d61c_2
  - libiconv=1.16=h5eee18b_3
  - liblapack=3.9.0=16_linux64_openblas
  - liblief=0.12.3=h6a678d5_0
  - libllvm14=14.0.6=hecde1de_4
  - libopenblas=0.3.21=h043d6bf_0
  - libpng=1.6.39=h5eee18b_0
  - libpq=12.15=h37d81fd_1
  - libsodium=1.0.18=h7b6447c_0
  - libstdcxx-ng=11.2.0=h1234567_1
  - libtiff=4.5.1=hffd6297_1
  - libuuid=1.41.5=h5eee18b_0
  - libwebp=1.2.4=h11a3e52_1
  - libwebp-base=1.2.4=h5eee18b_1
  - libxcb=1.15=h7f8727e_0
  - libxkbcommon=1.0.1=hfa300c1_0
  - libxml2=2.9.14=h74e7548_0
  - libxslt=1.1.35=h4e12654_0
  - lxml=4.9.1=py37h1edc446_0
  - lz4-c=1.9.4=h6a678d5_1
  - markupsafe=2.1.1=py37h7f8727e_0
  - matplotlib=3.4.3=py37h06a4308_0
  - matplotlib-base=3.4.3=py37hbbc1b5f_0
  - matplotlib-inline=0.1.6=py37h06a4308_0
  - metis=5.1.0=hf484d3e_4
  - mistune=0.8.4=py37h14c3975_1001
  - mumps-include=5.2.1=ha770c72_14
  - mumps-seq=5.2.1=h2104b81_11
  - munkres=1.1.4=py_0
  - mysql=5.7.24=he378463_2
  - nbclassic=0.5.2=py37h06a4308_0
  - nbclient=0.5.13=py37h06a4308_0
  - nbconvert=6.5.4=py37h06a4308_0
  - nbformat=5.7.0=py37h06a4308_0
  - nbsphinx=0.9.7=pyhd8ed1ab_0
  - ncurses=6.4=h6a678d5_0
  - nest-asyncio=1.5.6=py37h06a4308_0
  - nlopt=2.6.1=py37h66931aa_2
  - notebook=6.5.2=py37h06a4308_0
  - notebook-shim=0.2.2=py37h06a4308_0
  - numdifftools=0.9.41=pyhd8ed1ab_0
  - numpy=1.16.6=py37h0708ffd_4
  - numpy-base=1.16.6=py37ha8aedfd_4
  - openssl=1.1.1w=h7f8727e_0
  - packaging=22.0=py37h06a4308_0
  - pagmo=2.10=h46e0a30_1002
  - pandas=0.24.2=py37he6710b0_0
  - pandocfilters=1.5.0=pyhd3eb1b0_0
  - parso=0.8.3=pyhd3eb1b0_0
  - patch=2.7.6=h7b6447c_1001
  - patchelf=0.17.2=h6a678d5_0
  - patsy=0.5.3=py37h06a4308_0
  - pcre2=10.42=hebb0a14_1
  - pexpect=4.8.0=pyhd3eb1b0_3
  - pickleshare=0.7.5=pyhd3eb1b0_1003
  - pillow=9.4.0=py37h6a678d5_0
  - pip=19.0.3=py37_0
  - pkginfo=1.8.3=py37h06a4308_0
  - pkgutil-resolve-name=1.3.10=py37h06a4308_0
  - pluggy=1.0.0=py37h06a4308_1
  - ply=3.11=py37_0
  - prometheus_client=0.14.1=py37h06a4308_0
  - prompt-toolkit=3.0.43=pyha770c72_0
  - prompt_toolkit=3.0.43=hd3eb1b0_0
  - psutil=5.9.0=py37h5eee18b_0
  - ptyprocess=0.7.0=pyhd3eb1b0_2
  - py-lief=0.12.3=py37h6a678d5_0
  - pycosat=0.6.4=py37h5eee18b_0
  - pycparser=2.21=pyhd3eb1b0_0
  - pygments=2.11.2=pyhd3eb1b0_0
  - pygmo=2.10=py37h86cc20e_1003
  - pyopenssl=23.0.0=py37h06a4308_0
  - pyparsing=3.0.9=py37h06a4308_0
  - pyqt=5.15.7=py37h6a678d5_1
  - pyqt5-sip=12.11.0=py37h6a678d5_1
  - pyrsistent=0.18.0=py37heee7806_0
  - pysocks=1.7.1=py37_1
  - python=3.7.16=h7a1cb2a_0
  - python-dateutil=2.8.2=pyhd3eb1b0_0
  - python-fastjsonschema=2.16.2=py37h06a4308_0
  - python-levenshtein=0.12.2=py37h27cfd23_0
  - python-libarchive-c=5.1=pyhd3eb1b0_0
  - python_abi=3.7=2_cp37m
  - pytz=2022.7=py37h06a4308_0
  - pyyaml=6.0=py37h5eee18b_1
  - pyzmq=23.2.0=py37h6a678d5_0
  - qt-main=5.15.2=h5b8104b_9
  - qt-webengine=5.15.9=hd2b0992_4
  - qtconsole=5.4.0=py37h06a4308_0
  - qtpy=2.2.0=py37h06a4308_0
  - qtwebkit=5.212=h4eab89a_4
  - readline=8.2=h5eee18b_0
  - requests=2.28.1=py37h06a4308_0
  - ripgrep=14.1.0=h594256b_0
  - ruamel.yaml=0.17.21=py37h5eee18b_0
  - ruamel.yaml.clib=0.2.6=py37h5eee18b_1
  - scipy=1.2.1=py37he2b7bc3_0
  - scotch=6.0.9=h3858553_1
  - seaborn=0.11.2=pyhd3eb1b0_0
  - send2trash=1.8.0=pyhd3eb1b0_1
  - setuptools=65.6.3=py37h06a4308_0
  - sip=6.6.2=py37h6a678d5_0
  - six=1.16.0=pyhd3eb1b0_1
  - sniffio=1.2.0=py37h06a4308_1
  - snowballstemmer=2.2.0=pyhd3eb1b0_0
  - soupsieve=2.3.2.post1=py37h06a4308_0
  - sphinx=5.0.2=py37h06a4308_0
  - sphinx_rtd_theme=0.4.3=pyhd3eb1b0_0
  - sphinxcontrib-applehelp=1.0.2=pyhd3eb1b0_0
  - sphinxcontrib-devhelp=1.0.2=pyhd3eb1b0_0
  - sphinxcontrib-htmlhelp=2.0.0=pyhd3eb1b0_0
  - sphinxcontrib-jsmath=1.0.1=pyhd3eb1b0_0
  - sphinxcontrib-qthelp=1.0.3=pyhd3eb1b0_0
  - sphinxcontrib-serializinghtml=1.1.5=pyhd3eb1b0_0
  - sqlite=3.45.3=h5eee18b_0
  - statsmodels=0.11.1=py37h7b6447c_0
  - terminado=0.17.1=py37h06a4308_0
  - tinycss2=1.2.1=py37h06a4308_0
  - tk=8.6.14=h39e8969_0
  - toml=0.10.2=pyhd3eb1b0_0
  - tomli=2.0.1=py37h06a4308_0
  - toolz=0.12.0=py37h06a4308_0
  - tornado=6.2=py37h5eee18b_0
  - tqdm=4.64.1=py37h06a4308_0
  - traitlets=5.7.1=py37h06a4308_0
  - typing-extensions=4.4.0=py37h06a4308_0
  - typing_extensions=4.4.0=py37h06a4308_0
  - urllib3=1.26.14=py37h06a4308_0
  - wcwidth=0.2.5=pyhd3eb1b0_0
  - webencodings=0.5.1=py37_1
  - websocket-client=0.58.0=py37h06a4308_4
  - wheel=0.38.4=py37h06a4308_0
  - widgetsnbextension=3.5.2=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - yaml=0.2.5=h7b6447c_0
  - zeromq=4.3.5=h6a678d5_0
  - zipp=3.11.0=py37h06a4308_0
  - zlib=1.2.13=h5eee18b_1
  - zstandard=0.19.0=py37h5eee18b_0
  - zstd=1.5.6=hc292b87_0
  - pip:
      - black==23.3.0
      - cfgv==3.3.1
      - distlib==0.3.9
      - exceptiongroup==1.2.2
      - execnet==2.0.2
      - filelock==3.12.2
      - identify==2.5.24
      - iniconfig==2.0.0
      - mypy-extensions==1.0.0
      - nodeenv==1.9.1
      - pathspec==0.11.2
      - platformdirs==4.0.0
      - pre-commit==2.21.0
      - py==1.11.0
      - pytest==7.4.4
      - pytest-mock==3.11.1
      - pytest-xdist==3.5.0
      - restructuredtext-lint==1.4.0
      - tox==3.28.0
      - tox-conda==0.10.2
      - typed-ast==1.5.5
      - virtualenv==20.26.6
prefix: /opt/conda/envs/estimagic

estimagic/tests/differentiation/test_differentiation.py::test_jacobian[central-False] estimagic/tests/differentiation/test_differentiation.py::test_gradient[central-False] estimagic/tests/differentiation/test_differentiation.py::test_hessian[central-False] estimagic/tests/differentiation/test_differentiation.py::test_jacobian[forward-False] estimagic/tests/differentiation/test_differentiation.py::test_gradient[forward-False] estimagic/tests/differentiation/test_differentiation.py::test_gradient[backward-False] estimagic/tests/differentiation/test_differentiation.py::test_gradient[central-True] estimagic/tests/differentiation/test_differentiation.py::test_gradient[backward-True] estimagic/tests/differentiation/test_differentiation.py::test_jacobian[forward-True] estimagic/tests/differentiation/test_differentiation.py::test_gradient[forward-True] estimagic/tests/differentiation/test_differentiation.py::test_jacobian[backward-True] estimagic/tests/differentiation/test_differentiation.py::test_jacobian[backward-False] estimagic/tests/differentiation/test_differentiation.py::test_jacobian[central-True] estimagic/tests/differentiation/test_differentiation.py::test_hessian[central-True]
setup.py estimagic/optimization/optimize.py estimagic/differentiation/differentiation.py environment.yml docs/source/differentiation.rst
setup.py estimagic/optimization/optimize.py estimagic/differentiation/differentiation.py environment.yml docs/source/differentiation.rst