64 class Jacobian :
public virtual Handle,
public virtual EnableSharedFromThisVirtual<Jacobian>
66 friend detail::FreshEvalSelector<dbl>;
67 friend detail::FreshEvalSelector<mpfr_complex>;
69 BERTINI_DEFAULT_VISITABLE()
72 template<
typename... Ts>
74 std::shared_ptr<Jacobian> Make(Ts&& ...ts){
75 return std::shared_ptr<Jacobian>(
new Jacobian(ts...) );
81 Jacobian(
const std::shared_ptr<Node> & entry);
90 T
Eval(std::shared_ptr<Variable>
const& diff_variable =
nullptr)
const =
delete;
96 T EvalJ(std::shared_ptr<Variable>
const& diff_variable)
const;
102 void EvalJInPlace(T& eval_value, std::shared_ptr<Variable>
const& diff_variable)
const;
106 virtual ~Jacobian() =
default;
115 mutable std::shared_ptr<Variable> current_diff_variable_;
118 friend class boost::serialization::access;
120 template <
typename Archive>
121 void serialize(Archive& ar,
const unsigned version) {
122 ar & boost::serialization::base_object<Handle>(*
this);