Open
Description
Please see https://fwd.gymni.ch/eTJnUQ
Fail on "Attempting to call an indirect active function whose runtime value is inactive".
#![feature(autodiff)]
use std::autodiff::autodiff;
use std::fmt;
#[derive(Debug)]
struct Foo {
pub test: f64
}
pub trait Cool: fmt::Debug {
fn gen(&self) -> f64;
}
impl Cool for Foo {
fn gen(&self) -> f64 {
self.test * self.test
}
}
#[autodiff(dsquare, Reverse, Duplicated, Duplicated)]
pub fn square(num: &Foo, result: &mut f64) {
*result = num.gen()
}
#[autodiff(dsquare2, Reverse, Duplicated, Duplicated)]
pub fn square2(num: &Box<dyn Cool>, result: &mut f64) {
*result = num.gen()
}
Incidentally, generic functions fail to differentiate even without the box e.g,.,
#[autodiff(dsquare3, Reverse, Duplicated, Duplicated)]
pub fn square3<U: Cool>(num: &U, result: &mut f64) {
*result = num.gen()
}
Metadata
Metadata
Assignees
Labels
No labels