Eigen::internal::minmax_coeff_visitor< Derived, is_min, NaNPropagation, isInt > Struct Template Reference

#include <Visitor.h>

+ Inheritance diagram for Eigen::internal::minmax_coeff_visitor< Derived, is_min, NaNPropagation, isInt >:

Public Types

using Scalar = typename Derived::Scalar
 
using Packet = typename packet_traits< Scalar >::type
 
using Comparator = minmax_compare< Scalar, NaNPropagation, is_min >
 
- Public Types inherited from Eigen::internal::coeff_visitor< Derived >
typedef Derived::Scalar Scalar
 

Public Member Functions

EIGEN_DEVICE_FUNC void operator() (const Scalar &value, Index i, Index j)
 
EIGEN_DEVICE_FUNC void packet (const Packet &p, Index i, Index j)
 
EIGEN_DEVICE_FUNC void initpacket (const Packet &p, Index i, Index j)
 
- Public Member Functions inherited from Eigen::internal::coeff_visitor< Derived >
EIGEN_DEVICE_FUNC coeff_visitor ()
 
EIGEN_DEVICE_FUNC void init (const Scalar &value, Index i, Index j)
 

Static Public Attributes

static constexpr Index PacketSize = packet_traits<Scalar>::size
 

Additional Inherited Members

- Public Attributes inherited from Eigen::internal::coeff_visitor< Derived >
Index row
 
Index col
 
Scalar res
 

Member Typedef Documentation

◆ Comparator

template<typename Derived , bool is_min, int NaNPropagation, bool isInt = NumTraits<typename Derived::Scalar>::IsInteger>
using Eigen::internal::minmax_coeff_visitor< Derived, is_min, NaNPropagation, isInt >::Comparator = minmax_compare<Scalar, NaNPropagation, is_min>

◆ Packet

template<typename Derived , bool is_min, int NaNPropagation, bool isInt = NumTraits<typename Derived::Scalar>::IsInteger>
using Eigen::internal::minmax_coeff_visitor< Derived, is_min, NaNPropagation, isInt >::Packet = typename packet_traits<Scalar>::type

◆ Scalar

template<typename Derived , bool is_min, int NaNPropagation, bool isInt = NumTraits<typename Derived::Scalar>::IsInteger>
using Eigen::internal::minmax_coeff_visitor< Derived, is_min, NaNPropagation, isInt >::Scalar = typename Derived::Scalar

Member Function Documentation

◆ initpacket()

template<typename Derived , bool is_min, int NaNPropagation, bool isInt = NumTraits<typename Derived::Scalar>::IsInteger>
EIGEN_DEVICE_FUNC void Eigen::internal::minmax_coeff_visitor< Derived, is_min, NaNPropagation, isInt >::initpacket ( const Packet p,
Index  i,
Index  j 
)
inline
448  {
450  const Packet range = preverse(plset<Packet>(Scalar(1)));
451  Packet mask = pcmp_eq(pset1<Packet>(value), p);
452  Index max_idx = PacketSize - static_cast<Index>(predux_max(pand(range, mask)));
453  this->res = value;
454  this->row = Derived::IsRowMajor ? i : i + max_idx;
455  this->col = Derived::IsRowMajor ? j + max_idx : j;
456  }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
float * p
Definition: Tutorial_Map_using.cpp:9
SCALAR Scalar
Definition: bench_gemm.cpp:45
EIGEN_DEVICE_FUNC unpacket_traits< Packet >::type predux_max(const Packet &a)
Definition: GenericPacketMath.h:1258
EIGEN_STRONG_INLINE Packet2cf preverse(const Packet2cf &a)
Definition: AltiVec/Complex.h:303
EIGEN_STRONG_INLINE Packet2cf pcmp_eq(const Packet2cf &a, const Packet2cf &b)
Definition: AltiVec/Complex.h:353
EIGEN_STRONG_INLINE Packet8h pand(const Packet8h &a, const Packet8h &b)
Definition: AVX/PacketMath.h:2319
squared absolute value
Definition: GlobalFunctions.h:87
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
Scalar res
Definition: Visitor.h:398
Index col
Definition: Visitor.h:397
Index row
Definition: Visitor.h:397
typename Derived::Scalar Scalar
Definition: Visitor.h:425
static constexpr Index PacketSize
Definition: Visitor.h:428
static EIGEN_DEVICE_FUNC Scalar predux(const Packet &p)
Definition: Visitor.h:410
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References Eigen::internal::coeff_visitor< Derived >::col, i, j, p, Eigen::internal::minmax_coeff_visitor< Derived, is_min, NaNPropagation, isInt >::PacketSize, Eigen::internal::pand(), Eigen::internal::pcmp_eq(), Eigen::internal::minmax_compare< Scalar, NaNPropagation, is_min >::predux(), Eigen::internal::predux_max(), Eigen::internal::preverse(), Eigen::internal::coeff_visitor< Derived >::res, Eigen::internal::coeff_visitor< Derived >::row, and Eigen::value.

◆ operator()()

template<typename Derived , bool is_min, int NaNPropagation, bool isInt = NumTraits<typename Derived::Scalar>::IsInteger>
EIGEN_DEVICE_FUNC void Eigen::internal::minmax_coeff_visitor< Derived, is_min, NaNPropagation, isInt >::operator() ( const Scalar value,
Index  i,
Index  j 
)
inline
430  {
431  if (Comparator::compare(value, this->res)) {
432  this->res = value;
433  this->row = i;
434  this->col = j;
435  }
436  }
static EIGEN_DEVICE_FUNC bool compare(Scalar a, Scalar b)
Definition: Visitor.h:409

References Eigen::internal::coeff_visitor< Derived >::col, Eigen::internal::minmax_compare< Scalar, NaNPropagation, is_min >::compare(), i, j, Eigen::internal::coeff_visitor< Derived >::res, Eigen::internal::coeff_visitor< Derived >::row, and Eigen::value.

◆ packet()

template<typename Derived , bool is_min, int NaNPropagation, bool isInt = NumTraits<typename Derived::Scalar>::IsInteger>
EIGEN_DEVICE_FUNC void Eigen::internal::minmax_coeff_visitor< Derived, is_min, NaNPropagation, isInt >::packet ( const Packet p,
Index  i,
Index  j 
)
inline
437  {
439  if (Comparator::compare(value, this->res)) {
440  const Packet range = preverse(plset<Packet>(Scalar(1)));
441  Packet mask = pcmp_eq(pset1<Packet>(value), p);
442  Index max_idx = PacketSize - static_cast<Index>(predux_max(pand(range, mask)));
443  this->res = value;
444  this->row = Derived::IsRowMajor ? i : i + max_idx;
445  this->col = Derived::IsRowMajor ? j + max_idx : j;
446  }
447  }

References p, Eigen::internal::minmax_compare< Scalar, NaNPropagation, is_min >::predux(), and Eigen::value.

Member Data Documentation

◆ PacketSize


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