Stan Math Library  2.20.0
reverse mode automatic differentiation
operator_division.hpp
Go to the documentation of this file.
1 #ifndef STAN_MATH_FWD_CORE_OPERATOR_DIVISION_HPP
2 #define STAN_MATH_FWD_CORE_OPERATOR_DIVISION_HPP
3 
5 
6 namespace stan {
7 namespace math {
8 
17 template <typename T>
18 inline fvar<T> operator/(const fvar<T>& x1, const fvar<T>& x2) {
19  return fvar<T>(x1.val_ / x2.val_,
20  (x1.d_ * x2.val_ - x1.val_ * x2.d_) / (x2.val_ * x2.val_));
21 }
22 
31 template <typename T>
32 inline fvar<T> operator/(const fvar<T>& x1, double x2) {
33  return fvar<T>(x1.val_ / x2, x1.d_ / x2);
34 }
35 
44 template <typename T>
45 inline fvar<T> operator/(double x1, const fvar<T>& x2) {
46  // TODO(carpenter): store x1 / x2.val_ and reuse
47  return fvar<T>(x1 / x2.val_, -x1 * x2.d_ / (x2.val_ * x2.val_));
48 }
49 } // namespace math
50 } // namespace stan
51 #endif
fvar< T > operator/(const fvar< T > &x1, const fvar< T > &x2)
Return the result of dividing the first argument by the second.
T d_
The tangent (derivative) of this variable.
Definition: fvar.hpp:50
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.