10 #ifndef EIGEN_ARCH_GENERIC_PACKET_MATH_FUNCTIONS_FWD_H 11 #define EIGEN_ARCH_GENERIC_PACKET_MATH_FUNCTIONS_FWD_H 14 #include "../../InternalHeaderCheck.h" 30 template <
typename Packet>
31 EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Packet pfrexp_generic(
const Packet& a, Packet& exponent);
36 template <
typename Packet>
37 EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Packet pfrexp_generic_get_biased_exponent(
const Packet& p);
42 template <
typename Packet>
43 EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Packet pldexp_generic(
const Packet& a,
const Packet& exponent);
54 template <
typename Packet>
55 EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Packet pldexp_fast(
const Packet& a,
const Packet& exponent);
58 template <
typename Packet>
59 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pcbrt_float(
const Packet& x_in);
62 template <
typename Packet>
63 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pcbrt_double(
const Packet& x_in);
66 template <
typename Packet>
67 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet plog_float(
const Packet _x);
70 template <
typename Packet>
71 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet plog2_float(
const Packet _x);
74 template <
typename Packet>
75 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet plog_double(
const Packet _x);
78 template <
typename Packet>
79 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet plog2_double(
const Packet _x);
82 template <
typename Packet>
83 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet generic_log1p(
const Packet& x);
86 template <
typename Packet>
87 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet generic_expm1(
const Packet& x);
90 template <
typename Packet>
91 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet generic_atan(
const Packet& x);
94 template <
typename Packet>
95 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet generic_exp2(
const Packet& x);
98 template <
typename Packet>
99 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pexp_float(
const Packet _x);
102 template <
typename Packet>
103 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pexp_double(
const Packet _x);
106 template <
typename Packet>
107 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet psin_float(
const Packet& x);
110 template <
typename Packet>
111 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pcos_float(
const Packet& x);
114 template <
typename Packet>
115 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet psin_double(
const Packet& x);
118 template <
typename Packet>
119 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pcos_double(
const Packet& x);
122 template <
typename Packet>
123 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pasin_float(
const Packet& x);
126 template <
typename Packet>
127 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pacos_float(
const Packet& x);
130 template <
typename Packet>
131 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet ptanh_float(
const Packet& x);
134 template <
typename Packet>
135 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet ptanh_double(
const Packet& x);
138 template <
typename Packet>
139 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet patanh_float(
const Packet& x);
142 template <
typename Packet>
143 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet patanh_double(
const Packet& x);
146 template <
typename Packet>
147 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet psqrt_complex(
const Packet& a);
150 template <
typename Packet>
151 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pdiv_complex(
const Packet& x,
const Packet& y);
153 template <
typename Packet,
int N>
157 template <
typename Packet>
158 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet plog_complex(
const Packet& x);
161 template <
typename Packet>
162 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pexp_complex(
const Packet& x);
164 template <
typename Packet>
165 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet generic_rint(
const Packet& a);
167 template <
typename Packet>
168 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet generic_floor(
const Packet& a);
170 template <
typename Packet>
171 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet generic_ceil(
const Packet& a);
173 template <
typename Packet>
174 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet generic_trunc(
const Packet& a);
176 template <
typename Packet>
177 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet generic_round(
const Packet& a);
180 #define EIGEN_PACKET_FUNCTION(METHOD, SCALAR, PACKET) \ 182 EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC EIGEN_UNUSED PACKET p##METHOD<PACKET>(const PACKET& _x) { \ 183 return p##METHOD##_##SCALAR(_x); \ 187 #define EIGEN_GENERIC_PACKET_FUNCTION(METHOD, PACKET) \ 189 EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC EIGEN_UNUSED PACKET p##METHOD<PACKET>(const PACKET& _x) { \ 190 return generic_##METHOD(_x); \ 193 #define EIGEN_FLOAT_PACKET_FUNCTION(METHOD, PACKET) EIGEN_PACKET_FUNCTION(METHOD, float, PACKET) 194 #define EIGEN_DOUBLE_PACKET_FUNCTION(METHOD, PACKET) EIGEN_PACKET_FUNCTION(METHOD, double, PACKET) 196 #define EIGEN_INSTANTIATE_GENERIC_MATH_FUNCS_FLOAT(PACKET) \ 197 EIGEN_FLOAT_PACKET_FUNCTION(sin, PACKET) \ 198 EIGEN_FLOAT_PACKET_FUNCTION(cos, PACKET) \ 199 EIGEN_FLOAT_PACKET_FUNCTION(asin, PACKET) \ 200 EIGEN_FLOAT_PACKET_FUNCTION(acos, PACKET) \ 201 EIGEN_FLOAT_PACKET_FUNCTION(tanh, PACKET) \ 202 EIGEN_FLOAT_PACKET_FUNCTION(atanh, PACKET) \ 203 EIGEN_FLOAT_PACKET_FUNCTION(log, PACKET) \ 204 EIGEN_FLOAT_PACKET_FUNCTION(log2, PACKET) \ 205 EIGEN_FLOAT_PACKET_FUNCTION(exp, PACKET) \ 206 EIGEN_FLOAT_PACKET_FUNCTION(cbrt, PACKET) \ 207 EIGEN_GENERIC_PACKET_FUNCTION(expm1, PACKET) \ 208 EIGEN_GENERIC_PACKET_FUNCTION(exp2, PACKET) \ 209 EIGEN_GENERIC_PACKET_FUNCTION(log1p, PACKET) \ 210 EIGEN_GENERIC_PACKET_FUNCTION(atan, PACKET) 212 #define EIGEN_INSTANTIATE_GENERIC_MATH_FUNCS_DOUBLE(PACKET) \ 213 EIGEN_DOUBLE_PACKET_FUNCTION(atanh, PACKET) \ 214 EIGEN_DOUBLE_PACKET_FUNCTION(log, PACKET) \ 215 EIGEN_DOUBLE_PACKET_FUNCTION(sin, PACKET) \ 216 EIGEN_DOUBLE_PACKET_FUNCTION(cos, PACKET) \ 217 EIGEN_DOUBLE_PACKET_FUNCTION(log2, PACKET) \ 218 EIGEN_DOUBLE_PACKET_FUNCTION(exp, PACKET) \ 219 EIGEN_DOUBLE_PACKET_FUNCTION(tanh, PACKET) \ 220 EIGEN_DOUBLE_PACKET_FUNCTION(cbrt, PACKET) \ 221 EIGEN_GENERIC_PACKET_FUNCTION(atan, PACKET) \ 222 EIGEN_GENERIC_PACKET_FUNCTION(exp2, PACKET) 227 #endif // EIGEN_ARCH_GENERIC_PACKET_MATH_FUNCTIONS_FWD_H Namespace containing all symbols from the Eigen library.
Definition: B01_Experimental.dox:1