Automatic Differentiation
 
Loading...
Searching...
No Matches
is_autodiff.hpp
Go to the documentation of this file.
1#ifndef STAN_MATH_PRIM_META_IS_AUTODIFF_HPP
2#define STAN_MATH_PRIM_META_IS_AUTODIFF_HPP
3
14#include <complex>
15#include <type_traits>
16
17namespace stan {
18
24template <typename T>
26 : bool_constant<math::disjunction<is_var<std::decay_t<T>>,
27 is_fvar<std::decay_t<T>>>::value> {};
28
29template <typename T>
31
32namespace internal {
38template <typename T, typename = void>
39struct is_autodiff : is_autodiff_scalar<scalar_type_t<std::decay_t<T>>> {};
40
41template <typename T>
43 : bool_constant<is_autodiff<typename std::decay_t<T>::value_type>::value> {
44};
45template <typename T>
47 : bool_constant<is_autodiff<typename std::decay_t<T>::Scalar>::value> {};
48
49} // namespace internal
50
56template <typename T, typename = void>
58
59template <typename T>
61
62template <typename... Types>
63inline constexpr bool is_all_autodiff_v = (is_autodiff_v<Types> && ...);
64
65template <typename... Types>
66inline constexpr bool is_any_autodiff_v = (is_autodiff_v<Types> || ...);
67
75template <typename T>
78
81template <typename T>
84
87template <typename... Types>
90
93template <typename... Types>
96
99template <typename... Types>
102
106template <typename... Types>
117template <typename T>
120
124template <typename... Types>
127
130template <typename T>
133
136template <typename T>
139
143template <typename... Types>
148} // namespace stan
149
150#endif
require_all_not_t< is_autodiff_scalar< value_type_t< std::decay_t< Types > > >... > require_all_not_vt_autodiff_scalar
Require none of the value types satisfy is_autodiff_scalar.
require_not_t< is_autodiff_scalar< scalar_type_t< std::decay_t< T > > > > require_not_st_autodiff_scalar
Require scalar type does not satisfy is_autodiff_scalar.
require_t< is_autodiff_scalar< std::decay_t< T > > > require_autodiff_scalar_t
Require type satisfies is_autodiff_scalar.
require_all_not_t< is_autodiff_scalar< std::decay_t< Types > >... > require_all_not_autodiff_scalar_t
Require none of the types satisfy is_autodiff_scalar.
require_any_not_t< is_autodiff_scalar< std::decay_t< Types > >... > require_any_not_autodiff_scalar_t
Require at least one of the types do not satisfy is_autodiff_scalar.
require_all_t< is_autodiff_scalar< std::decay_t< Types > >... > require_all_autodiff_scalar_t
Require all of the types satisfy is_autodiff_scalar.
require_t< is_autodiff_scalar< scalar_type_t< std::decay_t< T > > > > require_st_autodiff_scalar
Require scalar type satisfies is_autodiff_scalar.
require_any_t< is_autodiff_scalar< std::decay_t< Types > >... > require_any_autodiff_scalar_t
Require any of the types satisfy is_autodiff_scalar.
require_any_t< is_autodiff_scalar< scalar_type_t< std::decay_t< Types > > >... > require_any_st_autodiff_scalar
Require any of the scalar types satisfy is_autodiff_scalar.
require_not_t< is_autodiff_scalar< std::decay_t< T > > > require_not_autodiff_scalar_t
Require type does not satisfy is_autodiff_scalar.
require_not_t< is_autodiff_scalar< value_type_t< std::decay_t< T > > > > require_not_vt_autodiff_scalar
Require value type does not satisfy is_autodiff_scalar.
require_t< is_eigen< std::decay_t< T > > > require_eigen_t
Require type satisfies is_eigen.
Definition is_eigen.hpp:113
require_t< is_std_vector< std::decay_t< T > > > require_std_vector_t
Require type satisfies is_std_vector.
std::integral_constant< bool, B > bool_constant
Alias for structs used for wraps a static constant of bool.
std::enable_if_t<!Check::value > require_not_t
If condition is false, template is disabled.
std::enable_if_t< math::disjunction< Checks... >::value > require_any_t
If any condition is true, template is enabled.
constexpr bool is_all_autodiff_v
constexpr bool is_any_autodiff_v
constexpr bool is_autodiff_v
std::enable_if_t<!math::disjunction< Checks... >::value > require_all_not_t
If all conditions are false, template is enabled.
constexpr bool is_autodiff_scalar_v
std::enable_if_t<!math::conjunction< Checks... >::value > require_any_not_t
If any condition is false, template is enabled.
std::enable_if_t< Check::value > require_t
If condition is true, template is enabled.
std::enable_if_t< math::conjunction< Checks... >::value > require_all_t
If all conditions are true, template is enabled Returns a type void if all conditions are true and ot...
The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation ...
Checks if decayed type is a var or fvar.
Checks if decayed type is a var or fvar.
Checks if decayed scalar_type_t is a var or fvar.