1 #ifndef STAN_MATH_REV_FUN_MODIFIED_BESSEL_SECOND_KIND_HPP
2 #define STAN_MATH_REV_FUN_MODIFIED_BESSEL_SECOND_KIND_HPP
3 
4 #include <stan/math/rev/meta.hpp>
5 #include <stan/math/rev/core.hpp>
6 #include <stan/math/prim/fun/modified_bessel_second_kind.hpp>
7 
8 namespace stan {
9 namespace math {
10 
11 namespace internal {
12 
13 class modified_bessel_second_kind_dv_vari : public op_dv_vari {
14  public:
modified_bessel_second_kind_dv_vari(int a,vari * bvi)15   modified_bessel_second_kind_dv_vari(int a, vari* bvi)
16       : op_dv_vari(modified_bessel_second_kind(a, bvi->val_), a, bvi) {}
chain()17   void chain() {
18     bvi_->adj_
19         -= adj_
20            * (ad_ * modified_bessel_second_kind(ad_, bvi_->val_) / bvi_->val_
21               + modified_bessel_second_kind(ad_ - 1, bvi_->val_));
22   }
23 };
24 }  // namespace internal
25 
modified_bessel_second_kind(int v,const var & a)26 inline var modified_bessel_second_kind(int v, const var& a) {
27   return var(new internal::modified_bessel_second_kind_dv_vari(v, a.vi_));
28 }
29 
30 }  // namespace math
31 }  // namespace stan
32 #endif
33