#numerical #automatic #macro #proc #syntax #peroxide #automatic-derivative

macro peroxide-ad

Proc macro for automatic differenitation of Peroxide

8 releases

0.3.0 Jan 25, 2021
0.2.1 Jan 12, 2021
0.1.4 Aug 1, 2020
0.1.3 Jul 31, 2020

#42 in #numerical

Download history 520/week @ 2023-12-14 292/week @ 2023-12-21 247/week @ 2023-12-28 337/week @ 2024-01-04 629/week @ 2024-01-11 537/week @ 2024-01-18 480/week @ 2024-01-25 534/week @ 2024-02-01 647/week @ 2024-02-08 501/week @ 2024-02-15 529/week @ 2024-02-22 514/week @ 2024-02-29 693/week @ 2024-03-07 743/week @ 2024-03-14 732/week @ 2024-03-21 855/week @ 2024-03-28

3,095 downloads per month
Used in 16 crates (via peroxide)

MIT/Apache

42KB
138 lines

Peroxide-ad

Automatic differentiation toolbox for Peroxide

Usage

Modify your Cargo.toml as follows.

[dependencies]
peroxide = "0.30"

Useful macros

  • #[ad_function] macro generates {}_grad, {}_hess from Fn(f64) -> f64 automatically.
    • {}_grad : gradient of function {}
    • {}_hess : hessian of function {}
#[macro_use]
extern crate peroxide;
use peroxide::fuga::*;

fn main() {
    f(2f64).print();        // x^3     = 8
    f_grad(2f64).print();   // 3 * x^2 = 12
    f_hess(2f64).print();   // 6 * x   = 12
}

#[ad_function]              // generates f_grad, f_hess
fn f(x: f64) -> f64 {
    x.powi(3)               // x^3
}

Dependencies

~1.5MB
~33K SLoC