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

Template functor to compute the and 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_DEVICE_FUNC EIGEN_STRONG_INLINE Packet packetOp (const Packet &a, const Packet &b) const
 

Detailed Description

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

Template functor to compute the and 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_and_op< Scalar >::result_type = Scalar

Member Function Documentation

◆ operator()()

template<typename Scalar >
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar Eigen::internal::scalar_boolean_and_op< Scalar >::operator() ( const Scalar a,
const Scalar b 
) const
inline
465  {
466  return (a != Scalar(0)) && (b != Scalar(0)) ? Scalar(1) : Scalar(0);
467  }
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_DEVICE_FUNC EIGEN_STRONG_INLINE Packet Eigen::internal::scalar_boolean_and_op< Scalar >::packetOp ( const Packet a,
const Packet b 
) const
inline
469  {
470  const Packet cst_one = pset1<Packet>(Scalar(1));
471  // and(a,b) == !or(!a,!b)
472  Packet not_a = pcmp_eq(a, pzero(a));
473  Packet not_b = pcmp_eq(b, pzero(b));
474  Packet a_nand_b = por(not_a, not_b);
475  return pandnot(cst_one, a_nand_b);
476  }
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: