use autofloat::{AutoFloat, AutoFloat2};
use num_traits::One;
fn quadratic_func(x: AutoFloat2<f64>, y: AutoFloat2<f64>) -> AutoFloat2<f64> {
(x - AutoFloat::one()) * (AutoFloat::constant(2.0) * y - AutoFloat::one())
}
fn main() {
let x = AutoFloat2::variable(2.25, 0);
let y = AutoFloat2::variable(-1.75, 1);
let result = quadratic_func(x, y);
println!(
"result={} gradient_x={} gradient_y={}",
result.x, result.dx[0], result.dx[1]
);
}