Automatic Differentiation
 
Loading...
Searching...
No Matches
beta.hpp
Go to the documentation of this file.
1#ifndef STAN_MATH_FWD_FUN_BETA_HPP
2#define STAN_MATH_FWD_FUN_BETA_HPP
3
8
9namespace stan {
10namespace math {
11
50template <typename T>
51inline fvar<T> beta(const fvar<T>& x1, const fvar<T>& x2) {
52 const T beta_ab = beta(x1.val_, x2.val_);
53 return fvar<T>(beta_ab,
54 beta_ab
55 * (x1.d_ * digamma(x1.val_) + x2.d_ * digamma(x2.val_)
56 - (x1.d_ + x2.d_) * digamma(x1.val_ + x2.val_)));
57}
58
59template <typename T>
60inline fvar<T> beta(double x1, const fvar<T>& x2) {
61 const T beta_ab = beta(x1, x2.val_);
62 return fvar<T>(beta_ab,
63 x2.d_ * (digamma(x2.val_) - digamma(x1 + x2.val_)) * beta_ab);
64}
65
66template <typename T>
67inline fvar<T> beta(const fvar<T>& x1, double x2) {
68 const T beta_ab = beta(x1.val_, x2);
69 return fvar<T>(beta_ab,
70 x1.d_ * (digamma(x1.val_) - digamma(x1.val_ + x2)) * beta_ab);
71}
72
73} // namespace math
74} // namespace stan
75#endif
fvar< T > beta(const fvar< T > &x1, const fvar< T > &x2)
Return fvar with the beta function applied to the specified arguments and its gradient.
Definition beta.hpp:51
fvar< T > digamma(const fvar< T > &x)
Return the derivative of the log gamma function at the specified argument.
Definition digamma.hpp:23
The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation ...
Definition fvar.hpp:9
Scalar val_
The value of this variable.
Definition fvar.hpp:49
Scalar d_
The tangent (derivative) of this variable.
Definition fvar.hpp:61
This template class represents scalars used in forward-mode automatic differentiation,...
Definition fvar.hpp:40