mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-03-01 18:26:24 +08:00
add EIGEN_INITIALIZE_MATRICES_BY_NAN
This commit is contained in:
parent
3c1ccca285
commit
5115f4c504
@ -110,7 +110,7 @@ class Array
|
|||||||
EIGEN_STRONG_INLINE explicit Array() : Base()
|
EIGEN_STRONG_INLINE explicit Array() : Base()
|
||||||
{
|
{
|
||||||
Base::_check_template_params();
|
Base::_check_template_params();
|
||||||
EIGEN_INITIALIZE_BY_ZERO_IF_THAT_OPTION_IS_ENABLED
|
EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
||||||
@ -120,7 +120,7 @@ class Array
|
|||||||
: Base(internal::constructor_without_unaligned_array_assert())
|
: Base(internal::constructor_without_unaligned_array_assert())
|
||||||
{
|
{
|
||||||
Base::_check_template_params();
|
Base::_check_template_params();
|
||||||
EIGEN_INITIALIZE_BY_ZERO_IF_THAT_OPTION_IS_ENABLED
|
EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -137,7 +137,7 @@ class Array
|
|||||||
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Array)
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Array)
|
||||||
eigen_assert(dim >= 0);
|
eigen_assert(dim >= 0);
|
||||||
eigen_assert(SizeAtCompileTime == Dynamic || SizeAtCompileTime == dim);
|
eigen_assert(SizeAtCompileTime == Dynamic || SizeAtCompileTime == dim);
|
||||||
EIGEN_INITIALIZE_BY_ZERO_IF_THAT_OPTION_IS_ENABLED
|
EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
||||||
|
@ -203,13 +203,13 @@ class Matrix
|
|||||||
EIGEN_STRONG_INLINE explicit Matrix() : Base()
|
EIGEN_STRONG_INLINE explicit Matrix() : Base()
|
||||||
{
|
{
|
||||||
Base::_check_template_params();
|
Base::_check_template_params();
|
||||||
EIGEN_INITIALIZE_BY_ZERO_IF_THAT_OPTION_IS_ENABLED
|
EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME is it still needed
|
// FIXME is it still needed
|
||||||
Matrix(internal::constructor_without_unaligned_array_assert)
|
Matrix(internal::constructor_without_unaligned_array_assert)
|
||||||
: Base(internal::constructor_without_unaligned_array_assert())
|
: Base(internal::constructor_without_unaligned_array_assert())
|
||||||
{ Base::_check_template_params(); EIGEN_INITIALIZE_BY_ZERO_IF_THAT_OPTION_IS_ENABLED }
|
{ Base::_check_template_params(); EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED }
|
||||||
|
|
||||||
/** \brief Constructs a vector or row-vector with given dimension. \only_for_vectors
|
/** \brief Constructs a vector or row-vector with given dimension. \only_for_vectors
|
||||||
*
|
*
|
||||||
@ -224,7 +224,7 @@ class Matrix
|
|||||||
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Matrix)
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Matrix)
|
||||||
eigen_assert(dim >= 0);
|
eigen_assert(dim >= 0);
|
||||||
eigen_assert(SizeAtCompileTime == Dynamic || SizeAtCompileTime == dim);
|
eigen_assert(SizeAtCompileTime == Dynamic || SizeAtCompileTime == dim);
|
||||||
EIGEN_INITIALIZE_BY_ZERO_IF_THAT_OPTION_IS_ENABLED
|
EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
||||||
|
@ -11,10 +11,12 @@
|
|||||||
#ifndef EIGEN_DENSESTORAGEBASE_H
|
#ifndef EIGEN_DENSESTORAGEBASE_H
|
||||||
#define EIGEN_DENSESTORAGEBASE_H
|
#define EIGEN_DENSESTORAGEBASE_H
|
||||||
|
|
||||||
#ifdef EIGEN_INITIALIZE_MATRICES_BY_ZERO
|
#if defined(EIGEN_INITIALIZE_MATRICES_BY_ZERO)
|
||||||
# define EIGEN_INITIALIZE_BY_ZERO_IF_THAT_OPTION_IS_ENABLED for(int i=0;i<base().size();++i) coeffRef(i)=Scalar(0);
|
# define EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED for(int i=0;i<base().size();++i) coeffRef(i)=Scalar(0);
|
||||||
|
#elif defined(EIGEN_INITIALIZE_MATRICES_BY_NAN)
|
||||||
|
# define EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED for(int i=0;i<base().size();++i) coeffRef(i)=std::numeric_limits<Scalar>::quiet_NaN();
|
||||||
#else
|
#else
|
||||||
# define EIGEN_INITIALIZE_BY_ZERO_IF_THAT_OPTION_IS_ENABLED
|
# define EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace Eigen {
|
namespace Eigen {
|
||||||
@ -236,7 +238,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|||||||
Index size = nbRows*nbCols;
|
Index size = nbRows*nbCols;
|
||||||
bool size_changed = size != this->size();
|
bool size_changed = size != this->size();
|
||||||
m_storage.resize(size, nbRows, nbCols);
|
m_storage.resize(size, nbRows, nbCols);
|
||||||
if(size_changed) EIGEN_INITIALIZE_BY_ZERO_IF_THAT_OPTION_IS_ENABLED
|
if(size_changed) EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
|
||||||
#else
|
#else
|
||||||
internal::check_rows_cols_for_overflow<MaxSizeAtCompileTime>::run(nbRows, nbCols);
|
internal::check_rows_cols_for_overflow<MaxSizeAtCompileTime>::run(nbRows, nbCols);
|
||||||
m_storage.resize(nbRows*nbCols, nbRows, nbCols);
|
m_storage.resize(nbRows*nbCols, nbRows, nbCols);
|
||||||
@ -266,7 +268,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|||||||
else
|
else
|
||||||
m_storage.resize(size, size, 1);
|
m_storage.resize(size, size, 1);
|
||||||
#ifdef EIGEN_INITIALIZE_MATRICES_BY_ZERO
|
#ifdef EIGEN_INITIALIZE_MATRICES_BY_ZERO
|
||||||
if(size_changed) EIGEN_INITIALIZE_BY_ZERO_IF_THAT_OPTION_IS_ENABLED
|
if(size_changed) EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -416,7 +418,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|||||||
EIGEN_STRONG_INLINE explicit PlainObjectBase() : m_storage()
|
EIGEN_STRONG_INLINE explicit PlainObjectBase() : m_storage()
|
||||||
{
|
{
|
||||||
// _check_template_params();
|
// _check_template_params();
|
||||||
// EIGEN_INITIALIZE_BY_ZERO_IF_THAT_OPTION_IS_ENABLED
|
// EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
||||||
@ -425,7 +427,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|||||||
PlainObjectBase(internal::constructor_without_unaligned_array_assert)
|
PlainObjectBase(internal::constructor_without_unaligned_array_assert)
|
||||||
: m_storage(internal::constructor_without_unaligned_array_assert())
|
: m_storage(internal::constructor_without_unaligned_array_assert())
|
||||||
{
|
{
|
||||||
// _check_template_params(); EIGEN_INITIALIZE_BY_ZERO_IF_THAT_OPTION_IS_ENABLED
|
// _check_template_params(); EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -433,7 +435,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|||||||
: m_storage(a_size, nbRows, nbCols)
|
: m_storage(a_size, nbRows, nbCols)
|
||||||
{
|
{
|
||||||
// _check_template_params();
|
// _check_template_params();
|
||||||
// EIGEN_INITIALIZE_BY_ZERO_IF_THAT_OPTION_IS_ENABLED
|
// EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
|
||||||
}
|
}
|
||||||
|
|
||||||
/** \copydoc MatrixBase::operator=(const EigenBase<OtherDerived>&)
|
/** \copydoc MatrixBase::operator=(const EigenBase<OtherDerived>&)
|
||||||
|
@ -27,7 +27,11 @@ are doing.
|
|||||||
- \b EIGEN_DEFAULT_IO_FORMAT - the IOFormat to use when printing a matrix if no %IOFormat is specified.
|
- \b EIGEN_DEFAULT_IO_FORMAT - the IOFormat to use when printing a matrix if no %IOFormat is specified.
|
||||||
Defaults to the %IOFormat constructed by the default constructor IOFormat::IOFormat().
|
Defaults to the %IOFormat constructed by the default constructor IOFormat::IOFormat().
|
||||||
- \b EIGEN_INITIALIZE_MATRICES_BY_ZERO - if defined, all entries of newly constructed matrices and arrays are
|
- \b EIGEN_INITIALIZE_MATRICES_BY_ZERO - if defined, all entries of newly constructed matrices and arrays are
|
||||||
initializes to zero, as are new entries in matrices and arrays after resizing. Not defined by default.
|
initialized to zero, as are new entries in matrices and arrays after resizing. Not defined by default.
|
||||||
|
- \b EIGEN_INITIALIZE_MATRICES_BY_NAN - if defined, all entries of newly constructed matrices and arrays are
|
||||||
|
initialized to NaN, as are new entries in matrices and arrays after resizing. This option is especially
|
||||||
|
useful for debugging purpose, though a memory tool like <a href="http://valgrind.org/">valgring</a> is
|
||||||
|
preferable. Not defined by default.
|
||||||
- \b EIGEN_NO_AUTOMATIC_RESIZING - if defined, the matrices (or arrays) on both sides of an assignment
|
- \b EIGEN_NO_AUTOMATIC_RESIZING - if defined, the matrices (or arrays) on both sides of an assignment
|
||||||
<tt>a = b</tt> have to be of the same size; otherwise, %Eigen automatically resizes \c a so that it is of
|
<tt>a = b</tt> have to be of the same size; otherwise, %Eigen automatically resizes \c a so that it is of
|
||||||
the correct size. Not defined by default.
|
the correct size. Not defined by default.
|
||||||
|
Loading…
Reference in New Issue
Block a user