Eigen::internal::scalar_boolean_or_op< Scalar > Struct Template Reference

Template functor to compute the or of two scalars as if they were booleans. More...

#include <BinaryFunctors.h>

Public Types

using result_type = Scalar
 

Public Member Functions

EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator() (const Scalar &a, const Scalar &b) const
 
template<typename Packet >
EIGEN_STRONG_INLINE Packet packetOp (const Packet &a, const Packet &b) const
 

Detailed Description

template<typename Scalar>
struct Eigen::internal::scalar_boolean_or_op< Scalar >

Template functor to compute the or of two scalars as if they were booleans.

See also
class CwiseBinaryOp, ArrayBase::operator||

Member Typedef Documentation

◆ result_type

template<typename Scalar >
using Eigen::internal::scalar_boolean_or_op< Scalar >::result_type = Scalar

Member Function Documentation

◆ operator()()

template<typename Scalar >
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar Eigen::internal::scalar_boolean_or_op< Scalar >::operator() ( const Scalar a,
const Scalar b 
) const
inline
493  {
494  return (a != Scalar(0)) || (b != Scalar(0)) ? Scalar(1) : Scalar(0);
495  }
Scalar * b
Definition: benchVecAdd.cpp:17
SCALAR Scalar
Definition: bench_gemm.cpp:45
const Scalar * a
Definition: level2_cplx_impl.h:32

References a, and b.

◆ packetOp()

template<typename Scalar >
template<typename Packet >
EIGEN_STRONG_INLINE Packet Eigen::internal::scalar_boolean_or_op< Scalar >::packetOp ( const Packet a,
const Packet b 
) const
inline
497  {
498  const Packet cst_one = pset1<Packet>(Scalar(1));
499  // if or(a,b) == 0, then a == 0 and b == 0
500  // or(a,b) == !nor(a,b)
501  Packet a_nor_b = pcmp_eq(por(a, b), pzero(a));
502  return pandnot(cst_one, a_nor_b);
503  }
EIGEN_STRONG_INLINE Packet8f pzero(const Packet8f &)
Definition: AVX/PacketMath.h:774
EIGEN_STRONG_INLINE Packet8h por(const Packet8h &a, const Packet8h &b)
Definition: AVX/PacketMath.h:2309
EIGEN_STRONG_INLINE Packet8h pandnot(const Packet8h &a, const Packet8h &b)
Definition: AVX/PacketMath.h:2323
EIGEN_STRONG_INLINE Packet2cf pcmp_eq(const Packet2cf &a, const Packet2cf &b)
Definition: AltiVec/Complex.h:353

References a, b, Eigen::internal::pandnot(), Eigen::internal::pcmp_eq(), Eigen::internal::por(), and Eigen::internal::pzero().


The documentation for this struct was generated from the following file: