Automatic Differentiation
 
Loading...
Searching...
No Matches
log1p.hpp
Go to the documentation of this file.
1#ifndef STAN_MATH_PRIM_FUN_LOG1P_HPP
2#define STAN_MATH_PRIM_FUN_LOG1P_HPP
3
9#include <cmath>
10
11namespace stan {
12namespace math {
13
29inline double log1p(double x) {
30 if (is_nan(x)) {
31 return x;
32 } else {
33 check_greater_or_equal("log1p", "x", x, -1.0);
34 return std::log1p(x);
35 }
36}
37
47inline double log1p(int x) {
48 check_greater_or_equal("log1p", "x", x, -1);
49 return std::log1p(x);
50}
51
55struct log1p_fun {
63 template <typename T>
64 static inline auto fun(const T& x) {
65 return log1p(x);
66 }
67};
68
79template <typename T,
82inline auto log1p(const T& x) {
84}
85
86} // namespace math
87} // namespace stan
88
89#endif
require_not_t< is_nonscalar_prim_or_rev_kernel_expression< std::decay_t< T > > > require_not_nonscalar_prim_or_rev_kernel_expression_t
Require type does not 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.
bool is_nan(T &&x)
Returns 1 if the input's value is NaN and 0 otherwise.
Definition is_nan.hpp:22
void check_greater_or_equal(const char *function, const char *name, const T_y &y, const T_low &low, Idxs... idxs)
Throw an exception if y is not greater or equal than low.
fvar< T > log1p(const fvar< T > &x)
Definition log1p.hpp:12
The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation ...
Base template class for vectorization of unary scalar functions defined by a template class F to a sc...
static auto fun(const T &x)
Return the natural logarithm of one plus the specified value.
Definition log1p.hpp:64
Structure to wrap log1p() so it can be vectorized.
Definition log1p.hpp:55