diff options
Diffstat (limited to 'python-njet.spec')
-rw-r--r-- | python-njet.spec | 407 |
1 files changed, 407 insertions, 0 deletions
diff --git a/python-njet.spec b/python-njet.spec new file mode 100644 index 0000000..f4d72e8 --- /dev/null +++ b/python-njet.spec @@ -0,0 +1,407 @@ +%global _empty_manifest_terminate_build 0 +Name: python-njet +Version: 0.5.2 +Release: 1 +Summary: Lightweight automatic differentiation package for higher-order differentiation. +License: GPL-3.0-or-later +URL: https://pypi.org/project/njet/ +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/82/66/142e17db802d4d66d4ec67461d96a41c4bfdfc81721505d51acd32ea2f73/njet-0.5.2.tar.gz +BuildArch: noarch + +Requires: python3-numpy +Requires: python3-sympy +Requires: python3-more-itertools +Requires: python3-tqdm +Requires: python3-ipykernel + +%description +[](https://njet.readthedocs.io/en/latest/?badge=latest) + +# njet: Lightweight automatic differentiation + +A lightweight AD package, using forward-mode automatic differentiation, in order to determine the +higher-order derivatives of a given function in several variables. + +## Features + +- Higher-order (forward-mode) automatic differentiation in several variables. +- Support for NumPy, SymPy and mpmath. +- Differentiation of expressions containing nested higher-order derivatives. +- Complex differentiation (Wirtinger calculus) possible. +- Faa di Bruno's formula for vector-valued functions implemented. +- Lightweight and easy to use. + +## Installation + +Install this module with pip + +```sh +pip install njet +``` + +## Quickstart + +An example function we want to differentiate +```python +from njet.functions import exp +f = lambda x, y, z: exp(-0.23*x**2 - 0.33*x*y - 0.11*z**2) +``` + +Generate a class to handle the derivatives of the given function (in this example up to order 3) +```python +from njet import derive +df = derive(f, order=3) +``` + +Evaluate the derivatives at a specific point +```python +df(0.4, 2.1, 1.73) + +{(0, 0, 0): 0.5255977986928584, + (0, 0, 1): -0.2000425221825019, + (1, 0, 0): -0.46094926945363685, + (0, 1, 0): -0.06937890942745731, + (0, 0, 2): -0.03949533176976862, + (0, 2, 0): 0.009158016044424365, + (1, 0, 1): 0.1754372919540542, + (0, 1, 1): 0.026405612928090252, + (2, 0, 0): 0.1624775219121247, + (1, 1, 0): -0.11260197000076322, + (2, 1, 0): 0.2827794849469999, + (1, 1, 1): 0.04285630978229049, + (0, 1, 2): 0.005213383793609458, + (0, 2, 1): -0.0034855409065079135, + (0, 3, 0): -0.0012088581178640162, + (3, 0, 0): 0.2815805411804125, + (2, 0, 1): -0.061838944839754675, + (0, 0, 3): 0.10305063303187477, + (1, 2, 0): 0.03775850015116166, + (1, 0, 2): 0.034637405962087094} +``` +The indices here correspond to the powers of the variables x, y, z +in the multivariate Taylor expansion. They can be translated to +the tensor indices of the corresponding multilinear map using a +built-in routine. Example: + +Obtain the gradient and the Hessian +```python +df.grad() + +{(2,): -0.2000425221825019, + (0,): -0.46094926945363685, + (1,): -0.06937890942745731} +``` + +```python +df.hess() + +{(2, 2): -0.03949533176976862, + (1, 1): 0.009158016044424365, + (0, 2): 0.1754372919540542, + (1, 2): 0.026405612928090252, + (0, 0): 0.1624775219121247, + (0, 1): -0.11260197000076322} +``` + +## Further reading + +https://njet.readthedocs.io/en/latest/index.html + +## License + +njet: Automatic Differentiation Library + +Copyright (C) 2021, 2022, 2023 by Malte Titze + +njet is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +njet is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with njet. If not, see <https://www.gnu.org/licenses/>. + + +%package -n python3-njet +Summary: Lightweight automatic differentiation package for higher-order differentiation. +Provides: python-njet +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-njet +[](https://njet.readthedocs.io/en/latest/?badge=latest) + +# njet: Lightweight automatic differentiation + +A lightweight AD package, using forward-mode automatic differentiation, in order to determine the +higher-order derivatives of a given function in several variables. + +## Features + +- Higher-order (forward-mode) automatic differentiation in several variables. +- Support for NumPy, SymPy and mpmath. +- Differentiation of expressions containing nested higher-order derivatives. +- Complex differentiation (Wirtinger calculus) possible. +- Faa di Bruno's formula for vector-valued functions implemented. +- Lightweight and easy to use. + +## Installation + +Install this module with pip + +```sh +pip install njet +``` + +## Quickstart + +An example function we want to differentiate +```python +from njet.functions import exp +f = lambda x, y, z: exp(-0.23*x**2 - 0.33*x*y - 0.11*z**2) +``` + +Generate a class to handle the derivatives of the given function (in this example up to order 3) +```python +from njet import derive +df = derive(f, order=3) +``` + +Evaluate the derivatives at a specific point +```python +df(0.4, 2.1, 1.73) + +{(0, 0, 0): 0.5255977986928584, + (0, 0, 1): -0.2000425221825019, + (1, 0, 0): -0.46094926945363685, + (0, 1, 0): -0.06937890942745731, + (0, 0, 2): -0.03949533176976862, + (0, 2, 0): 0.009158016044424365, + (1, 0, 1): 0.1754372919540542, + (0, 1, 1): 0.026405612928090252, + (2, 0, 0): 0.1624775219121247, + (1, 1, 0): -0.11260197000076322, + (2, 1, 0): 0.2827794849469999, + (1, 1, 1): 0.04285630978229049, + (0, 1, 2): 0.005213383793609458, + (0, 2, 1): -0.0034855409065079135, + (0, 3, 0): -0.0012088581178640162, + (3, 0, 0): 0.2815805411804125, + (2, 0, 1): -0.061838944839754675, + (0, 0, 3): 0.10305063303187477, + (1, 2, 0): 0.03775850015116166, + (1, 0, 2): 0.034637405962087094} +``` +The indices here correspond to the powers of the variables x, y, z +in the multivariate Taylor expansion. They can be translated to +the tensor indices of the corresponding multilinear map using a +built-in routine. Example: + +Obtain the gradient and the Hessian +```python +df.grad() + +{(2,): -0.2000425221825019, + (0,): -0.46094926945363685, + (1,): -0.06937890942745731} +``` + +```python +df.hess() + +{(2, 2): -0.03949533176976862, + (1, 1): 0.009158016044424365, + (0, 2): 0.1754372919540542, + (1, 2): 0.026405612928090252, + (0, 0): 0.1624775219121247, + (0, 1): -0.11260197000076322} +``` + +## Further reading + +https://njet.readthedocs.io/en/latest/index.html + +## License + +njet: Automatic Differentiation Library + +Copyright (C) 2021, 2022, 2023 by Malte Titze + +njet is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +njet is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with njet. If not, see <https://www.gnu.org/licenses/>. + + +%package help +Summary: Development documents and examples for njet +Provides: python3-njet-doc +%description help +[](https://njet.readthedocs.io/en/latest/?badge=latest) + +# njet: Lightweight automatic differentiation + +A lightweight AD package, using forward-mode automatic differentiation, in order to determine the +higher-order derivatives of a given function in several variables. + +## Features + +- Higher-order (forward-mode) automatic differentiation in several variables. +- Support for NumPy, SymPy and mpmath. +- Differentiation of expressions containing nested higher-order derivatives. +- Complex differentiation (Wirtinger calculus) possible. +- Faa di Bruno's formula for vector-valued functions implemented. +- Lightweight and easy to use. + +## Installation + +Install this module with pip + +```sh +pip install njet +``` + +## Quickstart + +An example function we want to differentiate +```python +from njet.functions import exp +f = lambda x, y, z: exp(-0.23*x**2 - 0.33*x*y - 0.11*z**2) +``` + +Generate a class to handle the derivatives of the given function (in this example up to order 3) +```python +from njet import derive +df = derive(f, order=3) +``` + +Evaluate the derivatives at a specific point +```python +df(0.4, 2.1, 1.73) + +{(0, 0, 0): 0.5255977986928584, + (0, 0, 1): -0.2000425221825019, + (1, 0, 0): -0.46094926945363685, + (0, 1, 0): -0.06937890942745731, + (0, 0, 2): -0.03949533176976862, + (0, 2, 0): 0.009158016044424365, + (1, 0, 1): 0.1754372919540542, + (0, 1, 1): 0.026405612928090252, + (2, 0, 0): 0.1624775219121247, + (1, 1, 0): -0.11260197000076322, + (2, 1, 0): 0.2827794849469999, + (1, 1, 1): 0.04285630978229049, + (0, 1, 2): 0.005213383793609458, + (0, 2, 1): -0.0034855409065079135, + (0, 3, 0): -0.0012088581178640162, + (3, 0, 0): 0.2815805411804125, + (2, 0, 1): -0.061838944839754675, + (0, 0, 3): 0.10305063303187477, + (1, 2, 0): 0.03775850015116166, + (1, 0, 2): 0.034637405962087094} +``` +The indices here correspond to the powers of the variables x, y, z +in the multivariate Taylor expansion. They can be translated to +the tensor indices of the corresponding multilinear map using a +built-in routine. Example: + +Obtain the gradient and the Hessian +```python +df.grad() + +{(2,): -0.2000425221825019, + (0,): -0.46094926945363685, + (1,): -0.06937890942745731} +``` + +```python +df.hess() + +{(2, 2): -0.03949533176976862, + (1, 1): 0.009158016044424365, + (0, 2): 0.1754372919540542, + (1, 2): 0.026405612928090252, + (0, 0): 0.1624775219121247, + (0, 1): -0.11260197000076322} +``` + +## Further reading + +https://njet.readthedocs.io/en/latest/index.html + +## License + +njet: Automatic Differentiation Library + +Copyright (C) 2021, 2022, 2023 by Malte Titze + +njet is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +njet is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with njet. If not, see <https://www.gnu.org/licenses/>. + + +%prep +%autosetup -n njet-0.5.2 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-njet -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon May 29 2023 Python_Bot <Python_Bot@openeuler.org> - 0.5.2-1 +- Package Spec generated |