Skip to main content

num-dual

crate documentation minimum rustc 1.51 documentation PyPI version

Generalized, recursive, scalar and vector (hyper) dual numbers for the automatic and exact calculation of (partial) derivatives. Including bindings for python.

Installation and Usage

Python

The python package can be installed directly from PyPI:

pip install num_dual

Rust

Add this to your Cargo.toml:

[dependencies]
num-dual = "0.6"

Example

Python

Compute the first and second derivative of a scalar-valued function.

from num_dual import derive2
import numpy as np

def f(x):
    return np.exp(x) / np.sqrt(np.sin(x)**3 + np.cos(x)**3)

x = derive2(1.5)
result = f(x)
print('f(x)    = {}'.format(result.value))
print('df/dx   = {}'.format(result.first_derivative))
print('d2f/dx2 = {}'.format(result.second_derivative))

Rust

This example defines a generic function that can be called using any (hyper) dual number and automatically calculates derivatives.

use num_dual::*;
fn f<D: DualNum<f64>>(x: D, y: D) -> D {
    x.powi(3) * y.powi(2)
}
fn main() {
    let (x, y) = (5.0, 4.0);
    // Calculate a simple derivative
    let x_dual = Dual64::from(x).derive();
    let y_dual = Dual64::from(y);
    println!("{}", f(x_dual, y_dual));                      // 2000 + [1200]ε
    // Calculate a gradient
    let xy_dual_vec = StaticVec::new_vec([x,y]).map(DualVec64::<2>::from).derive();
    println!("{}", f(xy_dual_vec[0], xy_dual_vec[1]).eps);  // [1200, 1000]
    // Calculate a Hessian
    let xy_dual2 = StaticVec::new_vec([x,y]).map(Dual2Vec64::<2>::from).derive();
    println!("{}", f(xy_dual2[0], xy_dual2[1]).v2);         // [[480, 600], [600, 250]]
    // for x=cos(t) and y=sin(t) calculate the third derivative w.r.t. t
    let t = Dual3_64::from(1.0).derive();
    println!("{}", f(t.cos(), t.sin()).v3);                 // 7.358639755305733
}

Documentation

  • You can find the documentation of the rust crate here.
  • The documentation of the python package can be found here.

Python

For the following commands to work you have to have the package installed (see: installing from source).

cd docs
make html

Open _build/html/index.html in your browser.

Further reading

If you want to learn more about the topic of dual numbers and automatic differentiation, we have listed some useful resources for you here:

Cite us

If you find num-dual useful for your own scientific studies, consider citing our publication accompanying this library.

@ARTICLE{rehner2021,
    AUTHOR={Rehner, Philipp and Bauer, Gernot},
    TITLE={Application of Generalized (Hyper-) Dual Numbers in Equation of State Modeling},
    JOURNAL={Frontiers in Chemical Engineering},
    VOLUME={3},
    YEAR={2021},
    URL={https://www.frontiersin.org/article/10.3389/fceng.2021.758090},
    DOI={10.3389/fceng.2021.758090},
    ISSN={2673-2718}
}

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

num_dual-0.6.0-cp37-abi3-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.7+Windows x86-64

num_dual-0.6.0-cp37-abi3-win32.whl (1.6 MB view details)

Uploaded CPython 3.7+Windows x86

num_dual-0.6.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.17+ x86-64

num_dual-0.6.0-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (3.6 MB view details)

Uploaded CPython 3.7+macOS 10.9+ universal2 (ARM64, x86-64)macOS 10.9+ x86-64macOS 11.0+ ARM64

num_dual-0.6.0-cp37-abi3-macosx_10_7_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.7+macOS 10.7+ x86-64

File details

Details for the file num_dual-0.6.0-cp37-abi3-win_amd64.whl.

File metadata

  • Download URL: num_dual-0.6.0-cp37-abi3-win_amd64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.7+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for num_dual-0.6.0-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 35b8296cb9c510a589ad5454e778ea930e54c262eb6b49ac6437377d4a5b5123
MD5 b02caa7e4a457e999e8655bd3523c970
BLAKE2b-256 6e6632c1ca2a32b13ab78e614107f403ed63281226fd0247c558fbbfa5a683aa

See more details on using hashes here.

File details

Details for the file num_dual-0.6.0-cp37-abi3-win32.whl.

File metadata

  • Download URL: num_dual-0.6.0-cp37-abi3-win32.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.7+, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for num_dual-0.6.0-cp37-abi3-win32.whl
Algorithm Hash digest
SHA256 d7d908e0f1c6b41850fe57c6bfba32f4a84a6254c12c816b751ae62ca82def38
MD5 b3aef14fe1988e185de3b52c00aef556
BLAKE2b-256 25cde2d98280551eff674e6d36015ee29feb90ca3292e0e197771f4fccba7a43

See more details on using hashes here.

File details

Details for the file num_dual-0.6.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for num_dual-0.6.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 59e67e3a05c48c75aa7b6cc4190a297f6a9104d3ae9f792195f4a10f519570d8
MD5 5f21084ce2bbd6a6a1341885c13d3868
BLAKE2b-256 943a2698f365aed2bc49c4135a3b183ea7a41542382024005ab185fb524275f4

See more details on using hashes here.

File details

Details for the file num_dual-0.6.0-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for num_dual-0.6.0-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 fe51a0c958524bad384bfd53a37670791a3d3336708915d9cd85faad90da6b80
MD5 2e3352fe939f681ddd6787e5af1cec6b
BLAKE2b-256 2cba79d677ef9e509fac006f3594cda9e0e8563dcaa3353ea8a8ff22b81f8bc5

See more details on using hashes here.

File details

Details for the file num_dual-0.6.0-cp37-abi3-macosx_10_7_x86_64.whl.

File metadata

File hashes

Hashes for num_dual-0.6.0-cp37-abi3-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 543d62315a896b5a33b3561db260f7bd9b548abb448377e394fb5b40112a74b7
MD5 bdc42dcf12f6e0c8abf18b4924e62a9d
BLAKE2b-256 3f6e97a56853163e1e01a4db6c01de1562a177ba53ee8d16e4e3431fc651703f

See more details on using hashes here.

Release history Release notifications | RSS feed

0.15.0

4 files

0.14.2

4 files

0.14.1

4 files

0.14.0

4 files

0.13.7

4 files

0.13.6

4 files

0.13.5

4 files

0.13.4

4 files

0.13.3

4 files

0.13.2

4 files

0.13.1

4 files

0.13.0

4 files

0.12.1

4 files

0.12.0

4 files

0.11.2

4 files

0.11.1

4 files

0.11.0

4 files

0.10.3

4 files

0.10.2

4 files

0.10.1

4 files

0.10.0

4 files

0.9.1

5 files

0.9.0

5 files

0.8.1

5 files

0.8.0

5 files

0.7.1

5 files

0.7.0

5 files

This release

0.6.0 This release

5 files

0.5.3

5 files

0.5.2

5 files

0.5.1

5 files

0.5.0

5 files

0.4.1

5 files

0.4.0

5 files

0.3.0

5 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page