10 #ifndef EIGEN_ALLANDANY_H
11 #define EIGEN_ALLANDANY_H
17 template<
typename Derived,
int UnrollCount>
21 col = (UnrollCount-1) / Derived::RowsAtCompileTime,
22 row = (UnrollCount-1) % Derived::RowsAtCompileTime
25 static inline bool run(
const Derived &mat)
27 return all_unroller<Derived, UnrollCount-1>::run(mat) && mat.coeff(row, col);
31 template<
typename Derived>
32 struct all_unroller<Derived, 1>
34 static inline bool run(
const Derived &mat) {
return mat.coeff(0, 0); }
37 template<
typename Derived>
38 struct all_unroller<Derived,
Dynamic>
40 static inline bool run(
const Derived &) {
return false; }
43 template<
typename Derived,
int UnrollCount>
47 col = (UnrollCount-1) / Derived::RowsAtCompileTime,
48 row = (UnrollCount-1) % Derived::RowsAtCompileTime
51 static inline bool run(
const Derived &mat)
53 return any_unroller<Derived, UnrollCount-1>::run(mat) || mat.coeff(row, col);
57 template<
typename Derived>
58 struct any_unroller<Derived, 1>
60 static inline bool run(
const Derived &mat) {
return mat.coeff(0, 0); }
63 template<
typename Derived>
64 struct any_unroller<Derived,
Dynamic>
66 static inline bool run(
const Derived &) {
return false; }
78 template<
typename Derived>
82 unroll = SizeAtCompileTime !=
Dynamic
88 return internal::all_unroller<Derived,
89 unroll ? int(SizeAtCompileTime) :
Dynamic
93 for(
Index j = 0; j < cols(); ++j)
94 for(
Index i = 0; i < rows(); ++i)
95 if (!coeff(i, j))
return false;
104 template<
typename Derived>
108 unroll = SizeAtCompileTime !=
Dynamic
114 return internal::any_unroller<Derived,
115 unroll ? int(SizeAtCompileTime) :
Dynamic
119 for(
Index j = 0; j < cols(); ++j)
120 for(
Index i = 0; i < rows(); ++i)
121 if (coeff(i, j))
return true;
130 template<
typename Derived>
133 return derived().template cast<bool>().
template cast<Index>().sum();
138 #endif // EIGEN_ALLANDANY_H