10#ifndef EIGEN_BINARY_FUNCTORS_H
11#define EIGEN_BINARY_FUNCTORS_H
28 template<
typename Packet>
29 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Packet packetOp(
const Packet& a,
const Packet& b)
const
30 {
return internal::padd(a,b); }
31 template<
typename Packet>
33 {
return internal::predux(a); }
35template<
typename Scalar>
67 template<
typename Packet>
68 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Packet packetOp(
const Packet& a,
const Packet& b)
const
69 {
return internal::pmul(a,b); }
70 template<
typename Packet>
71 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const result_type predux(
const Packet& a)
const
72 {
return internal::predux_mul(a); }
74template<
typename LhsScalar,
typename RhsScalar>
99 template<
typename Packet>
100 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Packet packetOp(
const Packet& a,
const Packet& b)
const
103template<
typename LhsScalar,
typename RhsScalar>
118 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar
operator() (
const Scalar& a,
const Scalar& b)
const {
return numext::mini(a, b); }
119 template<
typename Packet>
120 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Packet packetOp(
const Packet& a,
const Packet& b)
const
121 {
return internal::pmin(a,b); }
122 template<
typename Packet>
124 {
return internal::predux_min(a); }
126template<
typename Scalar>
141 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar
operator() (
const Scalar& a,
const Scalar& b)
const {
return numext::maxi(a, b); }
142 template<
typename Packet>
143 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Packet packetOp(
const Packet& a,
const Packet& b)
const
144 {
return internal::pmax(a,b); }
145 template<
typename Packet>
147 {
return internal::predux_max(a); }
149template<
typename Scalar>
163template<
typename Scalar, ComparisonName cmp>
171template<ComparisonName Cmp,
typename Scalar>
178 typedef bool result_type;
180 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
bool operator()(
const Scalar& a,
const Scalar& b)
const {
return a==b;}
183 typedef bool result_type;
185 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
bool operator()(
const Scalar& a,
const Scalar& b)
const {
return a<b;}
188 typedef bool result_type;
190 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
bool operator()(
const Scalar& a,
const Scalar& b)
const {
return a<=b;}
193 typedef bool result_type;
195 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
bool operator()(
const Scalar& a,
const Scalar& b)
const {
return a>b;}
198 typedef bool result_type;
200 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
bool operator()(
const Scalar& a,
const Scalar& b)
const {
return a>=b;}
203 typedef bool result_type;
205 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
bool operator()(
const Scalar& a,
const Scalar& b)
const {
return !(a<=b || b<=a);}
208 typedef bool result_type;
210 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
bool operator()(
const Scalar& a,
const Scalar& b)
const {
return a!=b;}
236 return p * sqrt(Scalar(1) +
qp*
qp);
239template<
typename Scalar>
252template<
typename Scalar,
typename OtherScalar>
269 template<
typename Packet>
270 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Packet packetOp(
const Packet& a,
const Packet& b)
const
271 {
return internal::psub(a,b); }
273template<
typename Scalar>
293 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const result_type
operator() (
const LhsScalar& a,
const RhsScalar& b)
const {
return a / b; }
294 template<
typename Packet>
295 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Packet packetOp(
const Packet& a,
const Packet& b)
const
296 {
return internal::pdiv(a,b); }
298template<
typename LhsScalar,
typename RhsScalar>
357template<
typename Scalar>
365 EIGEN_STRONG_INLINE Scalar
operator() (
const Scalar& a)
const {
return a * m_other; }
366 template <
typename Packet>
367 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Packet packetOp(
const Packet& a)
const
371template<
typename Scalar>
375template<
typename Scalar1,
typename Scalar2>
383template<
typename Scalar1,
typename Scalar2>
395template<
typename Scalar>
401 template <
typename Packet>
402 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Packet packetOp(
const Packet& a)
const
406template<
typename Scalar>
410template<
typename Scalar1,
typename Scalar2>
418template<
typename Scalar1,
typename Scalar2>
437template<
typename Scalar>
443 template <
typename Packet>
444 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Packet packetOp(
const Packet& a)
const
446 const Scalar m_other;
448template<
typename Scalar>
456template<
typename Scalar>
461 template <
typename Packet>
464 const Scalar m_other;
466template<
typename Scalar>
474template<
typename Scalar>
479 template <
typename Packet>
482 const Scalar m_other;
484template<
typename Scalar>
492template<
typename Scalar>
498 inline Scalar
operator() (
const Scalar& a)
const {
return numext::pow(a, m_exponent); }
499 const Scalar m_exponent;
501template<
typename Scalar>
509template<
typename Scalar>
513 template<
typename Packet>
Pseudo expression representing a solving operation.
Definition Solve.h:63
Holds information about the various numeric (i.e.
Definition NumTraits.h:108
Definition BinaryFunctors.h:426
Definition XprHelper.h:107
Definition GenericPacketMath.h:90
Definition BinaryFunctors.h:438
Definition BinaryFunctors.h:247
Definition BinaryFunctors.h:313
Definition BinaryFunctors.h:329
Definition BinaryFunctors.h:161
Definition BinaryFunctors.h:87
Definition BinaryFunctors.h:266
Definition BinaryFunctors.h:219
Definition BinaryFunctors.h:510
Definition BinaryFunctors.h:139
Definition BinaryFunctors.h:116
Definition BinaryFunctors.h:376
Definition BinaryFunctors.h:358
Definition BinaryFunctors.h:493
Definition BinaryFunctors.h:59
Definition BinaryFunctors.h:396
Definition BinaryFunctors.h:411
Definition BinaryFunctors.h:286
Definition BinaryFunctors.h:475
Definition BinaryFunctors.h:457
Definition BinaryFunctors.h:24