#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

#736 in Science

Download history 606/week @ 2023-11-20 418/week @ 2023-11-27 448/week @ 2023-12-04 554/week @ 2023-12-11 442/week @ 2023-12-18 225/week @ 2023-12-25 240/week @ 2024-01-01 469/week @ 2024-01-08 602/week @ 2024-01-15 531/week @ 2024-01-22 446/week @ 2024-01-29 547/week @ 2024-02-05 687/week @ 2024-02-12 482/week @ 2024-02-19 538/week @ 2024-02-26 492/week @ 2024-03-04

2,230 downloads per month
Used in 14 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