10 #ifndef EIGEN_UNARY_FUNCTORS_H 11 #define EIGEN_UNARY_FUNCTORS_H 24 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator() (
const Scalar& a)
const {
return -a; }
25 template<
typename Packet>
26 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Packet packetOp(
const Packet& a)
const 27 {
return internal::pnegate(a); }
29 template<
typename Scalar>
44 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const result_type operator() (
const Scalar& a)
const {
return numext::abs(a); }
45 template<
typename Packet>
46 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Packet packetOp(
const Packet& a)
const 47 {
return internal::pabs(a); }
49 template<
typename Scalar>
65 typedef void Score_is_abs;
67 template<
typename Scalar>
75 template<
typename Score>
76 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const result_type operator() (
const Scalar& a,
const Score&)
const {
return numext::abs(a); }
82 template<
typename Scal>
83 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const result_type operator() (
const Scal&,
const result_type& a)
const {
return a; }
95 EIGEN_STRONG_INLINE
const result_type operator() (
const Scalar& a)
const {
return numext::abs2(a); }
96 template<
typename Packet>
97 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Packet packetOp(
const Packet& a)
const 98 {
return internal::pmul(a,a); }
100 template<
typename Scalar>
112 EIGEN_STRONG_INLINE
const Scalar operator() (
const Scalar& a)
const {
using numext::conj;
return conj(a); }
113 template<
typename Packet>
114 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Packet packetOp(
const Packet& a)
const {
return internal::pconj(a); }
116 template<
typename Scalar>
133 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const result_type operator() (
const Scalar& a)
const {
using numext::arg;
return arg(a); }
134 template<
typename Packet>
135 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Packet packetOp(
const Packet& a)
const 136 {
return internal::parg(a); }
138 template<
typename Scalar>
151 template<
typename Scalar,
typename NewType>
154 typedef NewType result_type;
155 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const NewType operator() (
const Scalar& a)
const {
return cast<Scalar, NewType>(a); }
157 template<
typename Scalar,
typename NewType>
166 template<
typename Scalar>
171 EIGEN_STRONG_INLINE result_type operator() (
const Scalar& a)
const {
return numext::real(a); }
173 template<
typename Scalar>
175 {
enum { Cost = 0, PacketAccess =
false }; };
182 template<
typename Scalar>
187 EIGEN_STRONG_INLINE result_type operator() (
const Scalar& a)
const {
return numext::imag(a); }
189 template<
typename Scalar>
191 {
enum { Cost = 0, PacketAccess =
false }; };
198 template<
typename Scalar>
203 EIGEN_STRONG_INLINE result_type& operator() (
const Scalar& a)
const {
return numext::real_ref(*const_cast<Scalar*>(&a)); }
205 template<
typename Scalar>
207 {
enum { Cost = 0, PacketAccess =
false }; };
214 template<
typename Scalar>
219 EIGEN_STRONG_INLINE result_type& operator() (
const Scalar& a)
const {
return numext::imag_ref(*const_cast<Scalar*>(&a)); }
221 template<
typename Scalar>
223 {
enum { Cost = 0, PacketAccess =
false }; };
233 EIGEN_DEVICE_FUNC
inline const Scalar operator() (
const Scalar& a)
const {
return numext::exp(a); }
234 template <
typename Packet>
235 EIGEN_DEVICE_FUNC
inline Packet packetOp(
const Packet& a)
const {
return internal::pexp(a); }
237 template <
typename Scalar>
242 #ifdef EIGEN_VECTORIZE_FMA 273 EIGEN_DEVICE_FUNC
inline const Scalar operator() (
const Scalar& a)
const {
return numext::log(a); }
274 template <
typename Packet>
275 EIGEN_DEVICE_FUNC
inline Packet packetOp(
const Packet& a)
const {
return internal::plog(a); }
277 template <
typename Scalar>
284 #ifdef EIGEN_VECTORIZE_FMA 292 :
sizeof(Scalar)==4 ? 40 : 85)
304 EIGEN_DEVICE_FUNC
inline const Scalar operator() (
const Scalar& a)
const {
return numext::log1p(a); }
305 template <
typename Packet>
306 EIGEN_DEVICE_FUNC
inline Packet packetOp(
const Packet& a)
const {
return internal::plog1p(a); }
308 template <
typename Scalar>
324 EIGEN_DEVICE_FUNC
inline const Scalar operator() (
const Scalar& a)
const { EIGEN_USING_STD_MATH(log10)
return log10(a); }
325 template <
typename Packet>
326 EIGEN_DEVICE_FUNC
inline Packet packetOp(
const Packet& a)
const {
return internal::plog10(a); }
328 template<
typename Scalar>
338 EIGEN_DEVICE_FUNC
inline const Scalar operator() (
const Scalar& a)
const {
return numext::sqrt(a); }
339 template <
typename Packet>
340 EIGEN_DEVICE_FUNC
inline Packet packetOp(
const Packet& a)
const {
return internal::psqrt(a); }
342 template <
typename Scalar>
347 Cost = (
sizeof(Scalar) == 8 ? 28
353 Cost = (
sizeof(Scalar) == 8 ? 28 : 14),
365 EIGEN_DEVICE_FUNC
inline const Scalar operator() (
const Scalar& a)
const {
return Scalar(1)/numext::sqrt(a); }
366 template <
typename Packet>
367 EIGEN_DEVICE_FUNC
inline Packet packetOp(
const Packet& a)
const {
return internal::prsqrt(a); }
370 template<
typename Scalar>
384 EIGEN_DEVICE_FUNC
inline Scalar operator() (
const Scalar& a)
const {
return numext::cos(a); }
385 template <
typename Packet>
386 EIGEN_DEVICE_FUNC
inline Packet packetOp(
const Packet& a)
const {
return internal::pcos(a); }
388 template<
typename Scalar>
403 EIGEN_DEVICE_FUNC
inline const Scalar operator() (
const Scalar& a)
const {
return numext::sin(a); }
404 template <
typename Packet>
405 EIGEN_DEVICE_FUNC
inline Packet packetOp(
const Packet& a)
const {
return internal::psin(a); }
407 template<
typename Scalar>
423 EIGEN_DEVICE_FUNC
inline const Scalar operator() (
const Scalar& a)
const {
return numext::tan(a); }
424 template <
typename Packet>
425 EIGEN_DEVICE_FUNC
inline Packet packetOp(
const Packet& a)
const {
return internal::ptan(a); }
427 template<
typename Scalar>
442 EIGEN_DEVICE_FUNC
inline const Scalar operator() (
const Scalar& a)
const {
return numext::acos(a); }
443 template <
typename Packet>
444 EIGEN_DEVICE_FUNC
inline Packet packetOp(
const Packet& a)
const {
return internal::pacos(a); }
446 template<
typename Scalar>
461 EIGEN_DEVICE_FUNC
inline const Scalar operator() (
const Scalar& a)
const {
return numext::asin(a); }
462 template <
typename Packet>
463 EIGEN_DEVICE_FUNC
inline Packet packetOp(
const Packet& a)
const {
return internal::pasin(a); }
465 template<
typename Scalar>
481 EIGEN_DEVICE_FUNC
inline const Scalar operator() (
const Scalar& a)
const {
return numext::atan(a); }
482 template <
typename Packet>
483 EIGEN_DEVICE_FUNC
inline Packet packetOp(
const Packet& a)
const {
return internal::patan(a); }
485 template<
typename Scalar>
498 template <
typename Scalar>
501 EIGEN_DEVICE_FUNC
inline const Scalar operator()(
const Scalar& a)
const {
return numext::tanh(a); }
502 template <
typename Packet>
503 EIGEN_DEVICE_FUNC
inline Packet packetOp(
const Packet& x)
const {
return ptanh(x); }
506 template <
typename Scalar>
512 #ifdef EIGEN_VECTORIZE_FMA
537 EIGEN_DEVICE_FUNC
inline const Scalar operator() (
const Scalar& a)
const {
return numext::sinh(a); }
538 template <
typename Packet>
539 EIGEN_DEVICE_FUNC
inline Packet packetOp(
const Packet& a)
const {
return internal::psinh(a); }
541 template<
typename Scalar>
556 EIGEN_DEVICE_FUNC
inline const Scalar operator() (
const Scalar& a)
const {
return numext::cosh(a); }
557 template <
typename Packet>
558 EIGEN_DEVICE_FUNC
inline Packet packetOp(
const Packet& a)
const {
return internal::pcosh(a); }
560 template<
typename Scalar>
573 template<
typename Scalar>
576 EIGEN_DEVICE_FUNC
inline Scalar operator() (
const Scalar& a)
const {
return Scalar(1)/a; }
577 template<
typename Packet>
578 EIGEN_DEVICE_FUNC
inline const Packet packetOp(
const Packet& a)
const 579 {
return internal::pdiv(pset1<Packet>(Scalar(1)),a); }
581 template<
typename Scalar>
589 template<
typename Scalar>
592 EIGEN_DEVICE_FUNC
inline Scalar operator() (
const Scalar& a)
const {
return a*a; }
593 template<
typename Packet>
594 EIGEN_DEVICE_FUNC
inline const Packet packetOp(
const Packet& a)
const 595 {
return internal::pmul(a,a); }
597 template<
typename Scalar>
605 template<
typename Scalar>
608 EIGEN_DEVICE_FUNC
inline Scalar operator() (
const Scalar& a)
const {
return a*a*a; }
609 template<
typename Packet>
610 EIGEN_DEVICE_FUNC
inline const Packet packetOp(
const Packet& a)
const 611 {
return internal::pmul(a,pmul(a,a)); }
613 template<
typename Scalar>
623 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator() (
const Scalar& a)
const {
return numext::round(a); }
624 template <
typename Packet>
625 EIGEN_DEVICE_FUNC
inline Packet packetOp(
const Packet& a)
const {
return internal::pround(a); }
627 template<
typename Scalar>
642 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator() (
const Scalar& a)
const {
return numext::floor(a); }
643 template <
typename Packet>
644 EIGEN_DEVICE_FUNC
inline Packet packetOp(
const Packet& a)
const {
return internal::pfloor(a); }
646 template<
typename Scalar>
661 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
const Scalar operator() (
const Scalar& a)
const {
return numext::ceil(a); }
662 template <
typename Packet>
663 EIGEN_DEVICE_FUNC
inline Packet packetOp(
const Packet& a)
const {
return internal::pceil(a); }
665 template<
typename Scalar>
680 typedef bool result_type;
681 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE result_type operator() (
const Scalar& a)
const {
return (numext::isnan)(a); }
683 template<
typename Scalar>
698 typedef bool result_type;
699 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE result_type operator() (
const Scalar& a)
const {
return (numext::isinf)(a); }
701 template<
typename Scalar>
716 typedef bool result_type;
717 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE result_type operator() (
const Scalar& a)
const {
return (numext::isfinite)(a); }
719 template<
typename Scalar>
735 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
bool operator() (
const bool& a)
const {
return !a; }
737 template<
typename Scalar>
749 template<typename Scalar,bool iscpx=(NumTraits<Scalar>::IsComplex!=0) >
struct scalar_sign_op;
750 template<
typename Scalar>
753 EIGEN_DEVICE_FUNC
inline const Scalar operator() (
const Scalar& a)
const 755 return Scalar( (a>Scalar(0)) - (a<Scalar(0)) );
761 template<
typename Scalar>
764 EIGEN_DEVICE_FUNC
inline const Scalar operator() (
const Scalar& a)
const 767 real_type aa = numext::abs(a);
768 if (aa==real_type(0))
770 aa = real_type(1)/aa;
771 return Scalar(real(a)*aa, imag(a)*aa );
777 template<
typename Scalar>
792 #endif // EIGEN_FUNCTORS_H Definition: UnaryFunctors.h:109
Definition: UnaryFunctors.h:479
Definition: UnaryFunctors.h:183
Definition: UnaryFunctors.h:363
Definition: UnaryFunctors.h:271
Definition: UnaryFunctors.h:499
Definition: UnaryFunctors.h:696
Definition: UnaryFunctors.h:382
Definition: UnaryFunctors.h:606
Definition: UnaryFunctors.h:440
Definition: UnaryFunctors.h:322
Definition: UnaryFunctors.h:678
Definition: UnaryFunctors.h:22
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:85
Definition: UnaryFunctors.h:152
Holds information about the various numeric (i.e.
Definition: NumTraits.h:150
Definition: UnaryFunctors.h:231
Definition: UnaryFunctors.h:130
Definition: UnaryFunctors.h:199
Definition: UnaryFunctors.h:63
Definition: UnaryFunctors.h:336
Definition: UnaryFunctors.h:215
Definition: GenericPacketMath.h:96
Definition: UnaryFunctors.h:714
Definition: UnaryFunctors.h:749
Definition: UnaryFunctors.h:590
Definition: UnaryFunctors.h:659
Definition: UnaryFunctors.h:91
Definition: UnaryFunctors.h:167
Definition: UnaryFunctors.h:459
Definition: PacketMath.h:48
Definition: BandTriangularSolver.h:13
Definition: XprHelper.h:146
Definition: UnaryFunctors.h:535
Definition: UnaryFunctors.h:401
Definition: UnaryFunctors.h:640
Definition: UnaryFunctors.h:554
Definition: XprHelper.h:666
Definition: UnaryFunctors.h:621
Definition: UnaryFunctors.h:733
Definition: UnaryFunctors.h:574
Definition: UnaryFunctors.h:71
Definition: UnaryFunctors.h:302
Definition: UnaryFunctors.h:41
Definition: UnaryFunctors.h:421