Stan Math Library  2.20.0
reverse mode automatic differentiation
log_inv_logit_diff.hpp
Go to the documentation of this file.
1 #ifndef STAN_MATH_FWD_SCAL_FUN_LOG_INV_LOGIT_DIFF_HPP
2 #define STAN_MATH_FWD_SCAL_FUN_LOG_INV_LOGIT_DIFF_HPP
3 
4 #include <stan/math/fwd/meta.hpp>
5 #include <stan/math/fwd/core.hpp>
10 
11 namespace stan {
12 namespace math {
13 
38 template <typename T>
39 inline fvar<T> log_inv_logit_diff(const fvar<T>& x, const fvar<T>& y) {
40  return fvar<T>(
42  -x.d_ * (inv(expm1(y.val_ - x.val_)) + inv_logit(x.val_))
43  - y.d_ * (inv(expm1(x.val_ - y.val_)) + inv_logit(y.val_)));
44 }
45 
46 template <typename T>
47 inline fvar<T> log_inv_logit_diff(const fvar<T>& x, double y) {
48  return fvar<T>(log_inv_logit_diff(x.val_, y),
49  -x.d_ * (inv(expm1(y - x.val_)) + inv_logit(x.val_)));
50 }
51 
52 template <typename T>
53 inline fvar<T> log_inv_logit_diff(double x, const fvar<T>& y) {
54  return fvar<T>(log_inv_logit_diff(x, y.val_),
55  -y.d_ * (inv(expm1(x - y.val_)) + inv_logit(y.val_)));
56 }
57 
58 } // namespace math
59 } // namespace stan
60 #endif
T d_
The tangent (derivative) of this variable.
Definition: fvar.hpp:50
fvar< T > inv_logit(const fvar< T > &x)
Returns the inverse logit function applied to the argument.
Definition: inv_logit.hpp:20
fvar< T > expm1(const fvar< T > &x)
Definition: expm1.hpp:13
T val_
The value of this variable.
Definition: fvar.hpp:45
fvar< T > log_inv_logit_diff(const fvar< T > &x, const fvar< T > &y)
Returns fvar with the natural logarithm of the difference of the inverse logits of the specified argu...
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
fvar< T > inv(const fvar< T > &x)
Definition: inv.hpp:12

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