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![]andmulti_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§
- Graph
Builder - Builder for constructing multi-variable computation graphs.
Enums§
- Autodiff
Error - 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.