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.5"

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.5.2-cp37-abi3-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.7+Windows x86-64

num_dual-0.5.2-cp37-abi3-win32.whl (1.5 MB view details)

Uploaded CPython 3.7+Windows x86

num_dual-0.5.2-cp37-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl (2.5 MB view details)

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

num_dual-0.5.2-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (3.1 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.5.2-cp37-abi3-macosx_10_7_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.7+macOS 10.7+ x86-64

File details

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

File metadata

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

File hashes

Hashes for num_dual-0.5.2-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 452ebf97889e744c9c5f00381eb9e71c39010fce3c93ea5db9ec62b47a0c69f5
MD5 2f03b29d9463eeafd0bef08fc64737ad
BLAKE2b-256 8237d6a92f068f2dd076fbda340da276d3e07d85e0f7bf186e202ec79ba7f66b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: num_dual-0.5.2-cp37-abi3-win32.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.7+, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.12

File hashes

Hashes for num_dual-0.5.2-cp37-abi3-win32.whl
Algorithm Hash digest
SHA256 4e46dbd2684408b9c05b8088991dfba77ba38ff95f305cdba9b027f5613f8ffb
MD5 081b21403426c5c0878580045c63fc97
BLAKE2b-256 eba7a399f3e8625a65c7e2c1973188b9af35b8b0b3df7134de98844210f89590

See more details on using hashes here.

File details

Details for the file num_dual-0.5.2-cp37-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for num_dual-0.5.2-cp37-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 f850042a8b1e06f99bc0c226fc6d30ecd5a72628390e09f9dd281f462415ca60
MD5 bc3f00af82f923802886b78e65ece471
BLAKE2b-256 6156542690dc9a13e1fd3243d1adb53e60ead90f3a40bd27474003a1c59e8494

See more details on using hashes here.

File details

Details for the file num_dual-0.5.2-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.5.2-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 b5bb7780c04c3967e886e1ef413278554d126d7372ae0d36cb397badab7f9d59
MD5 39f8ba5ea1100eab465b794f09053468
BLAKE2b-256 2c4de82fc6906e883a5e3c9959276f475da3d35e761d7289d205c64a8f6f0c96

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for num_dual-0.5.2-cp37-abi3-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 9cb82223fbda9aed852b02ba89933958e6ad0584f5dc691d12fcfecd382ca9b7
MD5 71275ff7a5c66a8e079428eb8a06a57c
BLAKE2b-256 a4260f167854cfd431c5fa9b487c20cda2edc876beccbc187dac81b93c25a08f

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

0.6.0

5 files

0.5.3

5 files

This release

0.5.2 This release

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