10#ifndef EIGEN_ARCH_GENERIC_PACKET_MATH_FUNCTIONS_FWD_H
11#define EIGEN_ARCH_GENERIC_PACKET_MATH_FUNCTIONS_FWD_H
14#include "../../InternalHeaderCheck.h"
30template <
typename Packet>
31EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Packet pfrexp_generic(
const Packet& a, Packet& exponent);
36template <
typename Packet>
37EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Packet pfrexp_generic_get_biased_exponent(
const Packet& p);
42template <
typename Packet>
43EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Packet pldexp_generic(
const Packet& a,
const Packet& exponent);
46template <
typename Packet>
47EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet plog_float(
const Packet _x);
50template <
typename Packet>
51EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet plog2_float(
const Packet _x);
54template <
typename Packet>
55EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet plog_double(
const Packet _x);
58template <
typename Packet>
59EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet plog2_double(
const Packet _x);
62template <
typename Packet>
63Packet generic_plog1p(
const Packet& x);
66template <
typename Packet>
67Packet generic_expm1(
const Packet& x);
70template <
typename Packet>
71EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pexp_float(
const Packet _x);
74template <
typename Packet>
75EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pexp_double(
const Packet _x);
78template <
typename Packet>
79EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet psin_float(
const Packet& x);
82template <
typename Packet>
83EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pcos_float(
const Packet& x);
86template <
typename Packet>
87EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet psin_double(
const Packet& x);
90template <
typename Packet>
91EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pcos_double(
const Packet& x);
94template <
typename Packet>
95EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pasin_float(
const Packet& x);
98template <
typename Packet>
99EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pacos_float(
const Packet& x);
102template <
typename Packet>
103EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet patan_float(
const Packet& x);
106template <
typename Packet>
107EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet patan_double(
const Packet& x);
110template <
typename Packet>
111EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet ptanh_float(
const Packet& x);
114template <
typename Packet>
115EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet patanh_float(
const Packet& x);
118template <
typename Packet>
119EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet psqrt_complex(
const Packet& a);
122template <
typename Packet>
123EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pdiv_complex(
const Packet& x,
const Packet& y);
125template <
typename Packet,
int N>
129template <
typename Packet>
130EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet plog_complex(
const Packet& x);
133template <
typename Packet>
134EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pexp_complex(
const Packet& x);
136template <
typename Packet>
137EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet generic_rint(
const Packet& a);
139template <
typename Packet>
140EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet generic_floor(
const Packet& a);
142template <
typename Packet>
143EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet generic_ceil(
const Packet& a);
145template <
typename Packet>
146EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet generic_trunc(
const Packet& a);
148template <
typename Packet>
149EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet generic_round(
const Packet& a);
152#define EIGEN_PACKET_FUNCTION(METHOD, SCALAR, PACKET) \
154 EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC EIGEN_UNUSED PACKET p##METHOD<PACKET>(const PACKET& _x) { \
155 return p##METHOD##_##SCALAR(_x); \
158#define EIGEN_FLOAT_PACKET_FUNCTION(METHOD, PACKET) EIGEN_PACKET_FUNCTION(METHOD, float, PACKET)
159#define EIGEN_DOUBLE_PACKET_FUNCTION(METHOD, PACKET) EIGEN_PACKET_FUNCTION(METHOD, double, PACKET)
161#define EIGEN_INSTANTIATE_GENERIC_MATH_FUNCS_FLOAT(PACKET) \
162 EIGEN_FLOAT_PACKET_FUNCTION(sin, PACKET) \
163 EIGEN_FLOAT_PACKET_FUNCTION(cos, PACKET) \
164 EIGEN_FLOAT_PACKET_FUNCTION(asin, PACKET) \
165 EIGEN_FLOAT_PACKET_FUNCTION(acos, PACKET) \
166 EIGEN_FLOAT_PACKET_FUNCTION(atan, PACKET) \
167 EIGEN_FLOAT_PACKET_FUNCTION(tanh, PACKET) \
168 EIGEN_FLOAT_PACKET_FUNCTION(atanh, PACKET) \
169 EIGEN_FLOAT_PACKET_FUNCTION(log, PACKET) \
170 EIGEN_FLOAT_PACKET_FUNCTION(log2, PACKET) \
171 EIGEN_FLOAT_PACKET_FUNCTION(exp, PACKET) \
173 EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC EIGEN_UNUSED PACKET pexpm1<PACKET>(const PACKET& _x) { \
174 return internal::generic_expm1(_x); \
177 EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC EIGEN_UNUSED PACKET plog1p<PACKET>(const PACKET& _x) { \
178 return internal::generic_plog1p(_x); \
181#define EIGEN_INSTANTIATE_GENERIC_MATH_FUNCS_DOUBLE(PACKET) \
182 EIGEN_DOUBLE_PACKET_FUNCTION(atan, PACKET) \
183 EIGEN_DOUBLE_PACKET_FUNCTION(log, PACKET) \
184 EIGEN_DOUBLE_PACKET_FUNCTION(sin, PACKET) \
185 EIGEN_DOUBLE_PACKET_FUNCTION(cos, PACKET) \
186 EIGEN_DOUBLE_PACKET_FUNCTION(log2, PACKET) \
187 EIGEN_DOUBLE_PACKET_FUNCTION(exp, PACKET)
Namespace containing all symbols from the Eigen library.
Definition Core:137