Automatic Differentiation
 
Loading...
Searching...
No Matches
tgamma.hpp
Go to the documentation of this file.
1#ifndef STAN_MATH_PRIM_FUN_TGAMMA_HPP
2#define STAN_MATH_PRIM_FUN_TGAMMA_HPP
3
8#include <cmath>
9
10namespace stan {
11namespace math {
12
19inline double tgamma(double x) {
20 if (x == 0.0 || is_nonpositive_integer(x)) {
21 throw_domain_error("tgamma", "x", x, "x == 0 or negative integer");
22 }
23 return std::tgamma(x);
24}
25
34struct tgamma_fun {
35 template <typename T>
36 static inline auto fun(const T& x) {
37 return tgamma(x);
38 }
39};
40
49template <
50 typename T,
53inline auto tgamma(const T& x) {
55}
56
57} // namespace math
58} // namespace stan
59
60#endif
require_all_not_t< is_nonscalar_prim_or_rev_kernel_expression< std::decay_t< Types > >... > require_all_not_nonscalar_prim_or_rev_kernel_expression_t
Require none of the types satisfy is_nonscalar_prim_or_rev_kernel_expression.
require_not_t< is_var_matrix< std::decay_t< T > > > require_not_var_matrix_t
Require type does not satisfy is_var_matrix.
void throw_domain_error(const char *function, const char *name, const T &y, const char *msg1, const char *msg2)
Throw a domain error with a consistently formatted message.
bool is_nonpositive_integer(T x)
Returns true if the input is a nonpositive integer and false otherwise.
fvar< T > tgamma(const fvar< T > &x)
Return the result of applying the gamma function to the specified argument.
Definition tgamma.hpp:21
The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation ...
Definition fvar.hpp:9
Base template class for vectorization of unary scalar functions defined by a template class F to a sc...
static auto fun(const T &x)
Definition tgamma.hpp:36
Structure to wrap tgamma() so that it can be vectorized.
Definition tgamma.hpp:34