10 #ifndef EIGEN_CWISE_NULLARY_OP_H 11 #define EIGEN_CWISE_NULLARY_OP_H 34 template<
typename NullaryOp,
typename PlainObjectType>
48 template<
typename NullaryOp,
typename PlainObjectType>
57 CwiseNullaryOp(Index nbRows, Index nbCols, const NullaryOp& func = NullaryOp())
58 : m_rows(nbRows), m_cols(nbCols), m_functor(func)
61 && (RowsAtCompileTime ==
Dynamic || RowsAtCompileTime == nbRows)
63 && (ColsAtCompileTime ==
Dynamic || ColsAtCompileTime == nbCols));
71 return m_functor(rowId, colId);
74 template<
int LoadMode>
77 return m_functor.packetOp(rowId, colId);
82 return m_functor(index);
85 template<
int LoadMode>
88 return m_functor.packetOp(index);
92 const NullaryOp&
functor()
const {
return m_functor; }
114 template<
typename Derived>
115 template<
typename CustomNullaryOp>
137 template<
typename Derived>
138 template<
typename CustomNullaryOp>
156 template<
typename Derived>
157 template<
typename CustomNullaryOp>
177 template<
typename Derived>
199 template<
typename Derived>
215 template<
typename Derived>
240 template<
typename Derived>
252 template<
typename Derived>
274 template<
typename Derived>
286 template<
typename Derived>
296 template<
typename Derived>
300 for(
Index j = 0; j < cols(); ++j)
301 for(
Index i = 0; i < rows(); ++i)
310 template<
typename Derived>
314 return isApproxToConstant(val, prec);
321 template<
typename Derived>
331 template<
typename Derived>
334 return derived() = Constant(rows(), cols(), val);
346 template<
typename Derived>
351 return setConstant(val);
365 template<
typename Derived>
369 resize(nbRows, nbCols);
370 return setConstant(val);
386 template<
typename Derived>
403 template<
typename Derived>
407 return setLinSpaced(size(), low, high);
426 template<
typename Derived>
430 return Constant(nbRows, nbCols,
Scalar(0));
449 template<
typename Derived>
453 return Constant(size,
Scalar(0));
466 template<
typename Derived>
470 return Constant(
Scalar(0));
481 template<
typename Derived>
484 for(
Index j = 0; j < cols(); ++j)
485 for(
Index i = 0; i < rows(); ++i)
498 template<
typename Derived>
501 return setConstant(
Scalar(0));
513 template<
typename Derived>
518 return setConstant(
Scalar(0));
531 template<
typename Derived>
535 resize(nbRows, nbCols);
536 return setConstant(
Scalar(0));
555 template<
typename Derived>
559 return Constant(nbRows, nbCols,
Scalar(1));
578 template<
typename Derived>
582 return Constant(newSize,
Scalar(1));
595 template<
typename Derived>
599 return Constant(
Scalar(1));
610 template<
typename Derived>
614 return isApproxToConstant(
Scalar(1), prec);
624 template<
typename Derived>
627 return setConstant(
Scalar(1));
639 template<
typename Derived>
644 return setConstant(
Scalar(1));
657 template<
typename Derived>
661 resize(nbRows, nbCols);
662 return setConstant(
Scalar(1));
681 template<
typename Derived>
698 template<
typename Derived>
715 template<
typename Derived>
719 for(
Index j = 0; j < cols(); ++j)
721 for(
Index i = 0; i < rows(); ++i)
740 template<
typename Derived,
bool Big = (Derived::SizeAtCompileTime>=16)>
745 return m = Derived::Identity(m.rows(), m.cols());
749 template<
typename Derived>
752 typedef typename Derived::Index
Index;
756 const Index size = (std::min)(m.rows(), m.cols());
757 for(Index i = 0; i < size; ++i) m.coeffRef(i,i) =
typename Derived::Scalar(1);
771 template<
typename Derived>
787 template<
typename Derived>
790 derived().resize(nbRows, nbCols);
791 return setIdentity();
800 template<
typename Derived>
804 return BasisReturnType(SquareMatrixType::Identity(newSize,newSize), i);
815 template<
typename Derived>
828 template<
typename Derived>
830 {
return Derived::Unit(0); }
838 template<
typename Derived>
840 {
return Derived::Unit(1); }
848 template<
typename Derived>
850 {
return Derived::Unit(2); }
858 template<
typename Derived>
860 {
return Derived::Unit(3); }
864 #endif // EIGEN_CWISE_NULLARY_OP_H Generic expression of a matrix where all coefficients are defined by a functor.
static EIGEN_STRONG_INLINE Derived & run(Derived &m)
void fill(const Scalar &value)
internal::traits< Derived >::Scalar Scalar
const internal::variable_if_dynamic< Index, ColsAtCompileTime > m_cols
static const CwiseNullaryOp< CustomNullaryOp, Derived > NullaryExpr(Index rows, Index cols, const CustomNullaryOp &func)
#define EIGEN_STRONG_INLINE
internal::traits< Derived >::Scalar Scalar
static const BasisReturnType UnitW()
Derived & setConstant(const Scalar &value)
internal::traits< Derived >::Index Index
The type of indices.
static const SequentialLinSpacedReturnType LinSpaced(Sequential_t, Index size, const Scalar &low, const Scalar &high)
Sets a linearly space vector.
EIGEN_STRONG_INLINE const Scalar coeff(Index index) const
internal::traits< Derived >::Index Index
iterative scaling algorithm to equilibrate rows and column norms in matrices
bool isMuchSmallerThan(const Scalar &x, const OtherScalar &y, typename NumTraits< Scalar >::Real precision=NumTraits< Scalar >::dummy_precision())
const internal::variable_if_dynamic< Index, RowsAtCompileTime > m_rows
static const BasisReturnType UnitY()
const unsigned int PacketAccessBit
const NullaryOp m_functor
EIGEN_STRONG_INLINE const Scalar coeff(Index rowId, Index colId) const
const unsigned int HereditaryBits
bool isZero(const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
static EIGEN_STRONG_INLINE Derived & run(Derived &m)
static const ConstantReturnType Zero()
EIGEN_STRONG_INLINE PacketScalar packet(Index rowId, Index colId) const
Derived & setLinSpaced(Index size, const Scalar &low, const Scalar &high)
Sets a linearly space vector.
EIGEN_STRONG_INLINE PacketScalar packet(Index index) const
bool isApprox(const Scalar &x, const Scalar &y, typename NumTraits< Scalar >::Real precision=NumTraits< Scalar >::dummy_precision())
EIGEN_STRONG_INLINE Index cols() const
#define EIGEN_STATIC_ASSERT_FIXED_SIZE(TYPE)
bool isOnes(const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
static const BasisReturnType UnitZ()
Derived & setZero(Index size)
bool isIdentity(const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
Derived & setConstant(Index size, const Scalar &value)
static const IdentityReturnType Identity()
const NullaryOp & functor() const
Derived & setOnes(Index size)
#define EIGEN_DENSE_PUBLIC_INTERFACE(Derived)
NumTraits< Scalar >::Real RealScalar
bool isConstant(const Scalar &value, const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
Expression of a fixed-size or dynamic-size block.
static const ConstantReturnType Ones()
bool isApproxToConstant(const Scalar &value, const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
const unsigned int EvalBeforeNestingBit
static const BasisReturnType UnitX()
static const ConstantReturnType Constant(Index rows, Index cols, const Scalar &value)
#define EIGEN_STATIC_ASSERT_VECTOR_ONLY(TYPE)
static const BasisReturnType Unit(Index size, Index i)
const unsigned int LinearAccessBit
EIGEN_STRONG_INLINE Index rows() const
internal::dense_xpr_base< CwiseNullaryOp >::type Base