Какое-то время я пытался придумать способ расширения класса AutoDiffScalar. Я понимаю, что для дополнительных функций достаточно наследовать от AutoDiffScalar, а затем использовать их МАКРОС для регистрации новых функций.
Назначение выглядит сложнее. Пока можно присвоить матрицу скаляра AD числовой матрице, но не наоборот:
using ADScalar = AutoDiffScalar<Matrix<double, 5, 1>>;
Matrix<ADSalar, 5, 1> ad_vec;
Matrix<double, 5, 1> vec;
ad_vec = vec; // works
vec = ad_vec; // not allowed - assignment is not defined
На данный момент мне нужно перебрать все ad_vec
коэффициенты, чтобы заполнить vec
, теряя преимущества векторизации. Есть ли у кого-нибудь идеи, как реализовать более эффективное задание?
Спасибо, Питер