CPPAD_INLINE_FRIEND_TEMPLATE_FUNCTION AD<Base> Var2Par(const VecAD_reference<Base> &x) { AD<Base> y(x.ADBase()); y.id_ = 0; }
inline AD<Base> sign(const VecAD_reference<Base> &x) { return sign( x.ADBase() ); }
inline AD<Base> erf(const VecAD_reference<Base> &x) { return erf( x.ADBase() ); }
inline AD<Base> log10(const VecAD_reference<Base> &x) { return CppAD::log(x.ADBase()) / CppAD::log( Base(10) ); }
inline AD<Base>& AD<Base>::operator=(const VecAD_reference<Base> &x) { return *this = x.ADBase(); }
CPPAD_INLINE_FRIEND_TEMPLATE_FUNCTION bool NearEqual(const Base &x, const VecAD_reference<Base> &y, const Base &r, const Base &a) { return NearEqual(x, y.ADBase(), r, a); }
inline AD<Base> abs(const VecAD_reference<Base> &x) { return abs( x.ADBase() ); }
inline AD<Base> operator + (const VecAD_reference<Base> &right) { return right.ADBase(); }
inline AD<double> pow(const VecAD_reference<double> &x, const double &y) { return pow(x.ADBase(), AD<double>(y)); }
// ========================================================================= // Fold operations for the cases where x is an int, // but let cppad/pow_int.hpp handle the cases where y is an int. // ------------------------------------------------------------------------- template <class Base> AD<Base> pow (const int &x, const VecAD_reference<Base> &y) { return pow(AD<Base>(x), y.ADBase()); }
inline AD<double> pow(const double &x, const VecAD_reference<double> &y) { return pow(AD<double>(x), y.ADBase()); }
template <class Base> AD<Base> pow(const VecAD_reference<Base> &x, const double &y) { return pow(x.ADBase(), AD<Base>(y)); }
template <class Base> AD<Base> pow(const VecAD_reference<Base> &x, const AD<Base> &y) { return pow(x.ADBase(), y); }
CPPAD_INLINE_FRIEND_TEMPLATE_FUNCTION int Integer(const VecAD_reference<Base> &x) { return Integer( x.ADBase() ); }
inline AD<Base> log1p(const VecAD_reference<Base> &x) { return log1p_template( x.ADBase() ); }
inline AD<Base> atan2 (const VecAD_reference<Base> &y, const VecAD_reference<Base> &x) { return atan2( y.ADBase() , x.ADBase() ); }
template <class Base> AD<Base> azmul(const Base& x, const VecAD_reference<Base>& y) { return azmul(AD<Base>(x), y.ADBase()); }
inline AD<Base>::AD(const VecAD_reference<Base> &x) { *this = x.ADBase(); }
template <class Base> AD<Base> azmul(const VecAD_reference<Base>& x, const Base& y) { return azmul(x.ADBase(), AD<Base>(y)); }
AD<Base> expm1(const VecAD_reference<Base> &x) { return expm1_template( x.ADBase() ); }
inline AD<Base> atanh(const VecAD_reference<Base> &x) { return atanh_template( x.ADBase() ); }