1 #ifndef __STAN__AGRAD__REV__POW_HPP__
2 #define __STAN__AGRAD__REV__POW_HPP__
16 class pow_vv_vari :
public op_vv_vari {
18 pow_vv_vari(vari* avi, vari* bvi) :
19 op_vv_vari(std::
pow(avi->val_,bvi->val_),avi,bvi) {
22 if (
avi_->val_ == 0.0)
return;
28 class pow_vd_vari :
public op_vd_vari {
30 pow_vd_vari(vari* avi,
double b) :
31 op_vd_vari(std::
pow(avi->val_,b),avi,b) {
34 if (
avi_->val_ == 0.0)
return;
39 class pow_dv_vari :
public op_dv_vari {
41 pow_dv_vari(
double a, vari* bvi) :
42 op_dv_vari(std::
pow(a,bvi->val_),a,bvi) {
45 if (
ad_ == 0.0)
return;
64 inline var
pow(
const var& base,
const var& exponent) {
65 return var(
new pow_vv_vari(base.vi_,exponent.vi_));
80 inline var pow(
const var& base,
const double exponent) {
87 return var(
new pow_vd_vari(base.vi_,exponent));
102 inline var pow(
const double base,
const var& exponent) {
103 return var(
new pow_dv_vari(base,exponent.
vi_));