10 #ifndef EIGEN_ALLANDANY_H
11 #define EIGEN_ALLANDANY_H
17 template<
typename Derived,
int UnrollCount,
int Rows>
21 col = (UnrollCount-1) / Rows,
22 row = (UnrollCount-1) % Rows
25 EIGEN_DEVICE_FUNC
static inline bool run(
const Derived &mat)
27 return all_unroller<Derived, UnrollCount-1, Rows>::run(mat) && mat.coeff(row, col);
31 template<
typename Derived,
int Rows>
32 struct all_unroller<Derived, 0, Rows>
34 EIGEN_DEVICE_FUNC
static inline bool run(
const Derived &) {
return true; }
37 template<
typename Derived,
int Rows>
38 struct all_unroller<Derived,
Dynamic, Rows>
40 EIGEN_DEVICE_FUNC
static inline bool run(
const Derived &) {
return false; }
43 template<
typename Derived,
int UnrollCount,
int Rows>
47 col = (UnrollCount-1) / Rows,
48 row = (UnrollCount-1) % Rows
51 EIGEN_DEVICE_FUNC
static inline bool run(
const Derived &mat)
53 return any_unroller<Derived, UnrollCount-1, Rows>::run(mat) || mat.coeff(row, col);
57 template<
typename Derived,
int Rows>
58 struct any_unroller<Derived, 0, Rows>
60 EIGEN_DEVICE_FUNC
static inline bool run(
const Derived & ) {
return false; }
63 template<
typename Derived,
int Rows>
64 struct any_unroller<Derived,
Dynamic, Rows>
66 EIGEN_DEVICE_FUNC
static inline bool run(
const Derived &) {
return false; }
78 template<
typename Derived>
81 typedef internal::evaluator<Derived> Evaluator;
83 unroll = SizeAtCompileTime !=
Dynamic
86 Evaluator evaluator(derived());
88 return internal::all_unroller<Evaluator, unroll ? int(SizeAtCompileTime) :
Dynamic, internal::traits<Derived>::RowsAtCompileTime>::run(evaluator);
91 for(
Index j = 0; j < cols(); ++j)
92 for(
Index i = 0; i < rows(); ++i)
93 if (!evaluator.coeff(i, j))
return false;
102 template<
typename Derived>
105 typedef internal::evaluator<Derived> Evaluator;
107 unroll = SizeAtCompileTime !=
Dynamic
110 Evaluator evaluator(derived());
112 return internal::any_unroller<Evaluator, unroll ? int(SizeAtCompileTime) :
Dynamic, internal::traits<Derived>::RowsAtCompileTime>::run(evaluator);
115 for(
Index j = 0; j < cols(); ++j)
116 for(
Index i = 0; i < rows(); ++i)
117 if (evaluator.coeff(i, j))
return true;
126 template<
typename Derived>
129 return derived().template cast<bool>().template cast<Index>().sum();
136 template<
typename Derived>
139 #if EIGEN_COMP_MSVC || (defined __FAST_MATH__)
140 return derived().array().isNaN().any();
142 return !((derived().array()==derived().array()).
all());
150 template<
typename Derived>
153 #if EIGEN_COMP_MSVC || (defined __FAST_MATH__)
154 return derived().array().isFinite().all();
156 return !((derived()-derived()).hasNaN());
Index count() const
Definition: BooleanRedux.h:127
bool hasNaN() const
Definition: BooleanRedux.h:137
bool any() const
Definition: BooleanRedux.h:103
bool all() const
Definition: BooleanRedux.h:79
bool allFinite() const
Definition: BooleanRedux.h:151
static const Eigen::internal::all_t all
Definition: IndexedViewHelper.h:171
Namespace containing all symbols from the Eigen library.
Definition: Core:134
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:74
const int Dynamic
Definition: Constants.h:22
Eigen::Index Index
The interface type of indices.
Definition: EigenBase.h:39
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition: NumTraits.h:213