@@ -21,24 +21,26 @@ inline var bessel_first_kind(int v, const var& a) {
2121template <typename T, require_eigen_t <T>* = nullptr >
2222inline auto bessel_first_kind (int v, const var_value<T>& a) {
2323 auto ret_val = bessel_first_kind (v, a.val ()).array ().eval ();
24- auto precomp_bessel
25- = to_arena (v * ret_val / a. val (). array () - bessel_first_kind (v + 1 , a.val ()).array ());
26- return make_callback_var (ret_val. matrix (),
27- [precomp_bessel, a](const auto & vi) mutable {
28- a.adj ().array () += vi.adj ().array () * precomp_bessel;
29- });
24+ auto precomp_bessel = to_arena (v * ret_val / a. val (). array ()
25+ - bessel_first_kind (v + 1 , a.val ()).array ());
26+ return make_callback_var (
27+ ret_val. matrix (), [precomp_bessel, a](const auto & vi) mutable {
28+ a.adj ().array () += vi.adj ().array () * precomp_bessel;
29+ });
3030}
3131
3232template <typename T, require_eigen_t <T>* = nullptr >
33- inline auto bessel_first_kind (const std::vector<int >& v, const var_value<T>& a) {
33+ inline auto bessel_first_kind (const std::vector<int >& v,
34+ const var_value<T>& a) {
3435 auto ret_val = bessel_first_kind (v, a.val ()).array ().eval ();
3536 Eigen::Map<const Eigen::Array<int , -1 , 1 >> v_map (v.data (), v.size ());
3637 auto precomp_bessel
37- = to_arena (v_map.template cast <double >() * ret_val / a.val ().array () - bessel_first_kind (v_map + 1 , a.val ().array ()));
38- return make_callback_var (ret_val.matrix (),
39- [precomp_bessel, a](const auto & vi) mutable {
40- a.adj ().array () += vi.adj ().array () * precomp_bessel;
41- });
38+ = to_arena (v_map.template cast <double >() * ret_val / a.val ().array ()
39+ - bessel_first_kind (v_map + 1 , a.val ().array ()));
40+ return make_callback_var (
41+ ret_val.matrix (), [precomp_bessel, a](const auto & vi) mutable {
42+ a.adj ().array () += vi.adj ().array () * precomp_bessel;
43+ });
4244}
4345
4446} // namespace math
0 commit comments