| //@ compile-flags: -Zautodiff=Enable -Zautodiff=NoPostopt -C opt-level=3 -Clto=fat | 
 | //@ no-prefer-dynamic | 
 | //@ needs-enzyme | 
 |  | 
 | // Just check it does not crash for now | 
 | // CHECK: ; | 
 | #![feature(autodiff)] | 
 |  | 
 | use std::autodiff::autodiff_reverse; | 
 |  | 
 | struct Foo { | 
 |     a: f64, | 
 | } | 
 |  | 
 | trait MyTrait { | 
 |     fn f(&self, x: f64) -> f64; | 
 |     fn df(&self, x: f64, seed: f64) -> (f64, f64); | 
 | } | 
 |  | 
 | impl MyTrait for Foo { | 
 |     #[autodiff_reverse(df, Const, Active, Active)] | 
 |     fn f(&self, x: f64) -> f64 { | 
 |         self.a * 0.25 * (x * x - 1.0 - 2.0 * x.ln()) | 
 |     } | 
 | } | 
 |  | 
 | fn main() { | 
 |     let foo = Foo { a: 3.0f64 }; | 
 |     dbg!(foo.df(1.0, 1.0)); | 
 | } |