1 #ifndef STAN_MATH_REV_SCAL_FUN_GAMMA_Q_HPP
2 #define STAN_MATH_REV_SCAL_FUN_GAMMA_Q_HPP
7 #include <boost/math/special_functions/gamma.hpp>
8 #include <boost/math/special_functions/digamma.hpp>
15 class gamma_q_vv_vari :
public op_vv_vari {
17 gamma_q_vv_vari(vari* avi, vari* bvi) :
18 op_vv_vari(stan::math::
gamma_q(avi->val_, bvi->val_),
27 * boost::math::gamma_p_derivative(avi_->val_, bvi_->val_);
31 class gamma_q_vd_vari :
public op_vd_vari {
33 gamma_q_vd_vari(vari* avi,
double b) :
34 op_vd_vari(stan::math::
gamma_q(avi->val_, b),
45 class gamma_q_dv_vari :
public op_dv_vari {
47 gamma_q_dv_vari(
double a, vari* bvi) :
48 op_dv_vari(stan::math::
gamma_q(a, bvi->val_),
53 * boost::math::gamma_p_derivative(ad_, bvi_->val_);
60 return var(
new gamma_q_vv_vari(a.
vi_, b.
vi_));
65 return var(
new gamma_q_vd_vari(a.
vi_, b));
70 return var(
new gamma_q_dv_vari(a, b.
vi_));
Independent (input) and dependent (output) variables for gradients.
T grad_reg_inc_gamma(T a, T z, T g, T dig, T precision=1e-6)
vari * vi_
Pointer to the implementation of this variable.
fvar< T > tgamma(const fvar< T > &x)
fvar< T > gamma_q(const fvar< T > &x1, const fvar< T > &x2)
fvar< T > digamma(const fvar< T > &x)