#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

#55 in #numerical

Download history 13859/week @ 2024-08-29 5951/week @ 2024-09-05 8827/week @ 2024-09-12 6337/week @ 2024-09-19 7376/week @ 2024-09-26 5948/week @ 2024-10-03 7824/week @ 2024-10-10 5834/week @ 2024-10-17 4735/week @ 2024-10-24 2860/week @ 2024-10-31 4833/week @ 2024-11-07 4898/week @ 2024-11-14 7051/week @ 2024-11-21 7005/week @ 2024-11-28 8677/week @ 2024-12-05 5627/week @ 2024-12-12

29,206 downloads per month
Used in 20 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
~37K SLoC