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

You can install the python package either from pypi:

pip install num_dual

or from source (you need a rust compiler for that):

pip install git+https://github.com/itt-ustutt/num-dual

Rust

Add this to your Cargo.toml:

[dependencies]
num-dual = "0.3"

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

Uploaded CPython 3.6+Windows x86-64

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

Uploaded CPython 3.6+Windows x86

num_dual-0.3.0-cp36-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl (2.4 MB view details)

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

num_dual-0.3.0-cp36-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (3.0 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.3.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.3.0-cp36-abi3-win_amd64.whl.

File metadata

  • Download URL: num_dual-0.3.0-cp36-abi3-win_amd64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: CPython 3.6+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.6

File hashes

Hashes for num_dual-0.3.0-cp36-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 bc446bec8194042de4799c1e35213c120a5af77b8c5e21f98ecb365ec17790e9
MD5 54c0696985cf47d0cb9e53abeceb6b0c
BLAKE2b-256 a6185ea076330d0b57a1cf0b5bced3c54c1dc8b67bc52381f44829fc5adf5ff3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: num_dual-0.3.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.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.6

File hashes

Hashes for num_dual-0.3.0-cp36-abi3-win32.whl
Algorithm Hash digest
SHA256 f9bfde08db0e059c6d0b97921ae66d4c7a61e5f38657791689cf0c7d65514d86
MD5 e264c95e18dadfb4097fadbdb3de6eaa
BLAKE2b-256 042aab72f0ba6f97df2021531d29d34e4b26872ffb7cd88f27c2fbd603666210

See more details on using hashes here.

File details

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

File metadata

  • Download URL: num_dual-0.3.0-cp36-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.6+, manylinux: glibc 2.5+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.6

File hashes

Hashes for num_dual-0.3.0-cp36-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b17a35e3f2533a4e02b5c23f53de31c0dc971b96693afe64c6902006d65966f5
MD5 6f54ea90c8b57d449aa29c169effec9e
BLAKE2b-256 52b7168d34f7b03a3ee169d5df82f3c996782426e074cd130143dd1a98fa85bd

See more details on using hashes here.

File details

Details for the file num_dual-0.3.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.3.0-cp36-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 34d92f513ce7f733c57ac452fcd80119246b6000694d1fd0c8a3fa7c4103587e
MD5 de41130103bf4ff5e194b15bb7f6c8f0
BLAKE2b-256 221c81664ed1239809c6c526a8395250b1e639e164dc5f5aa0893d580c8ea968

See more details on using hashes here.

File details

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

File metadata

  • Download URL: num_dual-0.3.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.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.6

File hashes

Hashes for num_dual-0.3.0-cp36-abi3-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 76ed0829b88c976ba27194bf073180d1dd88f97853fba0d8e8d52a53c10ee835
MD5 fd50f612912fe51e9aa89cbec8cb7262
BLAKE2b-256 28bc286d67f9b8f3e96224f461abcca147a2d8843ae7254d8d574a85a758b56f

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

0.4.0

5 files

This release

0.3.0 This release

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