1 #ifndef __STAN__AGRAD__REV__MULTIPLY_LOG_HPP__
2 #define __STAN__AGRAD__REV__MULTIPLY_LOG_HPP__
16 class multiply_log_vv_vari :
public op_vv_vari {
18 multiply_log_vv_vari(vari* avi, vari* bvi) :
19 op_vv_vari(stan::math::
multiply_log(avi->val_,bvi->val_),avi,bvi) {
24 if (
bvi_->val_ == 0.0 &&
avi_->val_ == 0)
25 bvi_->adj_ += adj_ * std::numeric_limits<double>::infinity();
30 class multiply_log_vd_vari :
public op_vd_vari {
32 multiply_log_vd_vari(vari* avi,
double b) :
33 op_vd_vari(stan::math::
multiply_log(avi->val_,b),avi,b) {
40 class multiply_log_dv_vari :
public op_dv_vari {
42 multiply_log_dv_vari(
double a, vari* bvi) :
43 op_dv_vari(stan::math::
multiply_log(a,bvi->val_),a,bvi) {
46 if (
bvi_->val_ == 0.0 &&
ad_ == 0.0)
47 bvi_->adj_ += adj_ * std::numeric_limits<double>::infinity();
67 return var(
new multiply_log_vv_vari(a.
vi_,b.
vi_));
80 return var(
new multiply_log_vd_vari(a.
vi_,b));
96 return var(
new multiply_log_dv_vari(a,b.
vi_));