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

Uploaded CPython 3.6+Windows x86-64

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

Uploaded CPython 3.6+Windows x86

num_dual-0.4.1-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.1-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.1-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.1-cp36-abi3-win_amd64.whl.

File metadata

  • Download URL: num_dual-0.4.1-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.10.0 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.1-cp36-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 a00749c34872f6d618d0a288731d05cd577cb8489569a42d3ece2367e64e1fa0
MD5 cd8b273ff64ab0176d29ba761e73eeda
BLAKE2b-256 c1612c6292605e65855ba69fc61e8bc45076a487846720e8b6133d767a208161

See more details on using hashes here.

File details

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

File metadata

  • Download URL: num_dual-0.4.1-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.10.0 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.1-cp36-abi3-win32.whl
Algorithm Hash digest
SHA256 597e8dea1132b3f513c6a23fb23c0b0bd510a744f912bc9d03a359270a5cfb42
MD5 4c62671ea792bb6cf6b82f196a1c6306
BLAKE2b-256 a296a8465e75e0e4a4ac44fb1e9dba85b95b37dc02c2498018359db820bd31fd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: num_dual-0.4.1-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.10.0 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.1-cp36-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 ac49d93bf52ec7cbec358b8027ec6a59955c2bed2dd5c6cf6b7a444a5296f377
MD5 0ea69e7634a189d816cb3fdce9b80a5f
BLAKE2b-256 bfab31c76593ebf215b682741e6f476cdaf11468eb8ba7f5fe151fd7ad6b92a8

See more details on using hashes here.

File details

Details for the file num_dual-0.4.1-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.1-cp36-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 36236f0a5fb53ada51ef9d6420d1490ca0abb4a4fc79bb7ea9d15239dfeb6493
MD5 f7350d4355c69fb342a73391edfd0de4
BLAKE2b-256 0d7d0e179e8a30105c1baa3d2a5bce111c56f67a285ba97c8ae738163c7ca936

See more details on using hashes here.

File details

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

File metadata

  • Download URL: num_dual-0.4.1-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.10.0 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.1-cp36-abi3-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 51d7d711fe5f67ea5488a60030c525b1fbb764a54e51682960ef957164cef4a5
MD5 f786548175b0a7ac24ad572376939245
BLAKE2b-256 2a44ed1c2dfe92a1673d38c7907411068392acc4939a9c092acfb97975ec9246

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

This release

0.4.1 This release

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