Crate petite_ad

Crate petite_ad 

Source
Expand description

§petite AD

A pure Rust automatic differentiation library supporting both single-variable and multi-variable functions with reverse-mode differentiation (backpropagation).

§Features

  • Single-variable autodiff - Chain operations like sin, cos, exp
  • Multi-variable autodiff - Build computational graphs for multiple inputs
  • Zero-copy backward pass - Efficient gradient computation through closure chains
  • Convenient macros - Use mono_ops![] and multi_ops![] for concise notation

§Examples

§Single-variable function

use petite_ad::{MonoAD, mono_ops};

let ops = mono_ops![sin, cos, exp];
let (value, grad_fn) = MonoAD::compute_grad(&ops, 2.0);
println!("f(2.0) = {}", value);
println!("f'(2.0) = {}", grad_fn(1.0));

§Multi-variable function

use petite_ad::{MultiAD, multi_ops};

let exprs = multi_ops![
    (inp, 0),    // x₁
    (inp, 1),    // x₂
    (add, 0, 1), // x₁ + x₂
    (sin, 0),    // sin(x₁)
    (mul, 2, 3), // sin(x₁) * (x₁ + x₂)
];

let (value, grad_fn) = MultiAD::compute_grad(&exprs, &[0.6, 1.4]).unwrap();
let gradients = grad_fn(1.0);
println!("f(0.6, 1.4) = {}", value);
println!("∇f = {:?}", gradients);

Modules§

traits
Traits for implementing custom differentiable functions.
types
Type definitions for autodiff results and gradient functions.

Macros§

mono_ops
Macro to convert function names to MonoAD enum at compile time. This avoids the function pointer comparison issue across library boundaries.
multi_ops
Macro to build multi-variable computation graphs with lowercase operation names. Converts lowercase identifiers to MultiAD enum variants.

Structs§

GraphBuilder
Builder for constructing multi-variable computation graphs.

Enums§

AutodiffError
Errors that can occur during automatic differentiation computations.
MonoAD
Single-variable automatic differentiation operations.
MultiAD
Multi-variable automatic differentiation operations.

Type Aliases§

Result
Result type for automatic differentiation operations.