1 #ifndef STAN_MATH_FWD_SCAL_FUN_ABS_HPP 2 #define STAN_MATH_FWD_SCAL_FUN_ABS_HPP 3 4 #include <stan/math/fwd/core.hpp> 5 #include <stan/math/fwd/scal/fun/value_of.hpp> 6 #include <stan/math/prim/scal/fun/constants.hpp> 7 #include <stan/math/prim/scal/fun/abs.hpp> 8 #include <stan/math/prim/scal/fun/value_of.hpp> 9 #include <stan/math/prim/scal/meta/likely.hpp> 10 11 namespace stan { 12 namespace math { 13 14 template <typename T> abs(const fvar<T> & x)15inline fvar<T> abs(const fvar<T>& x) { 16 if (x.val_ > 0.0) 17 return x; 18 else if (x.val_ < 0.0) 19 return fvar<T>(-x.val_, -x.d_); 20 else if (x.val_ == 0.0) 21 return fvar<T>(0, 0); 22 else 23 return fvar<T>(abs(x.val_), NOT_A_NUMBER); 24 } 25 26 } // namespace math 27 } // namespace stan 28 #endif 29