Attribute Macro rust_ad::forward_autodiff[][src]

#[forward_autodiff]
Expand description

Generates the forward auto-differentiation function for a given function.

E.g.

#[rust_ad::forward_autodiff]
fn function_name(x:f32, y:f32) -> f32 {
    let p = 7. * x;
    let r = 10. - y;
    let q = p * x * 5.;
    let v = 2. * p * q + 3. * r;
    return v;
}

Expands to:

fn __for_function_name(x: f32, y: f32, der_x: f32, der_y: f32) -> (f32, f32) {
    let a = 7. * x;
    let der_a = x * 0f32 + 7. * der_x;
    let b = 3. * x;
    let der_b = x * 0f32 + 3. * der_x;
    let c = x + b;
    let der_c = der_x + der_b;
    let _d = y + b;
    let der__d = der_y + der_b;
    let d = _d + c;
    let der_d = der__d + der_c;
    return (d, der_d);
}

Much like a derive macro, this is appended to your code, the original function_name function remains unedited.