Stan Math Library  2.20.0
reverse mode automatic differentiation
fdim.hpp
Go to the documentation of this file.
1 #ifndef STAN_MATH_FWD_SCAL_FUN_FDIM_HPP
2 #define STAN_MATH_FWD_SCAL_FUN_FDIM_HPP
3 
4 #include <stan/math/fwd/meta.hpp>
5 #include <stan/math/fwd/core.hpp>
7 
8 namespace stan {
9 namespace math {
10 
20 template <typename T>
21 inline fvar<T> fdim(const fvar<T>& x, const fvar<T>& y) {
22  if (x.val_ < y.val_)
23  return fvar<T>(fdim(x.val_, y.val_), 0);
24  else
25  return fvar<T>(fdim(x.val_, y.val_), x.d_ - y.d_);
26 }
27 
37 template <typename T>
38 inline fvar<T> fdim(const fvar<T>& x, double y) {
39  if (x.val_ < y)
40  return fvar<T>(fdim(x.val_, y), 0);
41  else
42  return fvar<T>(fdim(x.val_, y), x.d_);
43 }
44 
54 template <typename T>
55 inline fvar<T> fdim(double x, const fvar<T>& y) {
56  if (x < y.val_)
57  return fvar<T>(fdim(x, y.val_), 0);
58  else
59  return fvar<T>(fdim(x, y.val_), -y.d_);
60 }
61 
62 } // namespace math
63 } // namespace stan
64 #endif
T d_
The tangent (derivative) of this variable.
Definition: fvar.hpp:50
fvar< T > fdim(const fvar< T > &x, const fvar< T > &y)
Return the positive difference of the specified values (C++11).
Definition: fdim.hpp:21
T val_
The value of this variable.
Definition: fvar.hpp:45
This template class represents scalars used in forward-mode automatic differentiation, which consist of values and directional derivatives of the specified template type.
Definition: fvar.hpp:41

     [ Stan Home Page ] © 2011–2018, Stan Development Team.