summaryrefslogtreecommitdiff
path: root/python-njet.spec
diff options
context:
space:
mode:
Diffstat (limited to 'python-njet.spec')
-rw-r--r--python-njet.spec407
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
+[![Documentation Status](https://readthedocs.org/projects/njet/badge/?version=latest)](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
+[![Documentation Status](https://readthedocs.org/projects/njet/badge/?version=latest)](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
+[![Documentation Status](https://readthedocs.org/projects/njet/badge/?version=latest)](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