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

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.

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

Uploaded CPython 3.6+Windows x86-64

num_dual-0.4.0-cp36-abi3-win32.whl (1.5 MB view details)

Uploaded CPython 3.6+Windows x86

num_dual-0.4.0-cp36-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl (2.5 MB view details)

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

num_dual-0.4.0-cp36-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (3.1 MB view details)

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

num_dual-0.4.0-cp36-abi3-macosx_10_7_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.6+macOS 10.7+ x86-64

File details

Details for the file num_dual-0.4.0-cp36-abi3-win_amd64.whl.

File metadata

  • Download URL: num_dual-0.4.0-cp36-abi3-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.6+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.3 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for num_dual-0.4.0-cp36-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 84b9e0a1b010c55f59d34e5dd7fbfba0ee2e3fbb363c5a7354ab7643a48809cf
MD5 6b41c53b7b59963832f693bc2f48fb5d
BLAKE2b-256 f5cc58843c99281e191f3a4f47db73107ff11d00c8a14b1c4c78ea2a5239e957

See more details on using hashes here.

File details

Details for the file num_dual-0.4.0-cp36-abi3-win32.whl.

File metadata

  • Download URL: num_dual-0.4.0-cp36-abi3-win32.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.6+, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.3 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for num_dual-0.4.0-cp36-abi3-win32.whl
Algorithm Hash digest
SHA256 063bef95a3b5aa75d687f651c24b884c31d784c7076ec93819c28e60fc077e78
MD5 5173965adc2df60c5fa2e4d79d3b2dea
BLAKE2b-256 f01323d7e3aafd8a1ece79b8fe6a00eae8f764c17f780e9b86d5c9bf7364fe30

See more details on using hashes here.

File details

Details for the file num_dual-0.4.0-cp36-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

  • Download URL: num_dual-0.4.0-cp36-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.6+, manylinux: glibc 2.5+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.3 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for num_dual-0.4.0-cp36-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 e1e239fc5ef1d113badeefd1b7b60eb3aedb0daf3b591732df684d4a62503991
MD5 9c6fcbb0e1856bcbd20b773049b655cd
BLAKE2b-256 bef86fe257de0ae05adb505808103cc763272a3175cc9beb900cbc65f545fb7b

See more details on using hashes here.

File details

Details for the file num_dual-0.4.0-cp36-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for num_dual-0.4.0-cp36-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 17d033a0bc7d4c0fa8233ef12a57c19f9207814140aaf47171e47f00e7fb8f47
MD5 746d7a80815f8a3fa096434b9a70e4ca
BLAKE2b-256 1ff50a7874afdb1f81421f24109af6865347e47834576e54f330a07e27ee0314

See more details on using hashes here.

File details

Details for the file num_dual-0.4.0-cp36-abi3-macosx_10_7_x86_64.whl.

File metadata

  • Download URL: num_dual-0.4.0-cp36-abi3-macosx_10_7_x86_64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: CPython 3.6+, macOS 10.7+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.3 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for num_dual-0.4.0-cp36-abi3-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 1b5c648c2527bd18f94981f8fb043183905906da033c200003ba58ead2542542
MD5 901b9bb942c9ceaaa5b872daca163e2a
BLAKE2b-256 6e056f1f365d969782a9e5710f2c3baba73df6f6e79b5606f912df4b2e6811f8

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

0.5.2

5 files

0.5.1

5 files

0.5.0

5 files

0.4.1

5 files

This release

0.4.0 This release

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