mod autodiff

module autodiff

Forward-mode automatic differentiation via num-dual. Forward-mode automatic differentiation via num-dual.

Write the scalar field once, generic over num_dual::DualNum. This module lifts it to Objective + Gradient + DifferentiableObjective with a fused value_and_gradient (one dual evaluation, exact partials). Central differences stay available as crate::FiniteDiffGradient when the function cannot be instantiated at a dual type.

Traits

trait DualField

A scalar field R^n -> R written generically over dual numbers.

Functions

fn eval_dual<D: DualNum<f64> + Clone>(&self, x: &[D]) -> D

Evaluates f at x. Instantiated at f64 for values and at DualDVec64 for an exact gradient in one sweep.

Structs and Unions

struct ForwardAd<S: DualField>

Forward-mode AD wrapper around a DualField.

Implementations

impl<S: DualField> ForwardAd<S>

Functions

fn new(field: S, bounds: Bounds<f64>) -> Self

Wraps field on the given box.

fn value_and_grad(&self, x: ArrayView1<f64>) -> (f64, Array1<f64>)

Exact (f, ∇f) at x from one dual evaluation.

Traits implemented

impl<S: DualField> Objective<f64> for ForwardAd<S>
impl<S: DualField> Gradient<f64> for ForwardAd<S>
impl<S: DualField> DifferentiableObjective<f64> for ForwardAd<S>