* added a lazyAssign overload skipping .lazy() such that c = (<xpr>).lazy() such that

lazyAssign overloads of <xpr> are automatically called (this also reduces assign instansiations)
This commit is contained in:
Gael Guennebaud
2008-07-09 13:54:21 +00:00
parent 783eb6da9b
commit 5f55ab524c
2 changed files with 15 additions and 12 deletions

View File

@@ -1,6 +1,6 @@
SET(Eigen_HEADERS Core CoreDeclarations LU Cholesky QR Geometry Sparse Array) SET(Eigen_HEADERS Core CoreDeclarations LU Cholesky QR Geometry Sparse Array)
IF(TEST_LIB) IF(BUILD_LIB)
SET(Eigen_SRCS SET(Eigen_SRCS
src/Core/CoreInstantiations.cpp src/Core/CoreInstantiations.cpp
src/Cholesky/CholeskyInstantiations.cpp src/Cholesky/CholeskyInstantiations.cpp
@@ -8,7 +8,12 @@ IF(TEST_LIB)
) )
ADD_LIBRARY(Eigen2 SHARED ${Eigen_SRCS}) ADD_LIBRARY(Eigen2 SHARED ${Eigen_SRCS})
ENDIF(TEST_LIB)
INSTALL(TARGETS Eigen2
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
ENDIF(BUILD_LIB)
IF(CMAKE_COMPILER_IS_GNUCXX) IF(CMAKE_COMPILER_IS_GNUCXX)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g1 -O2") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g1 -O2")
@@ -26,11 +31,4 @@ INSTALL(FILES
DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen
) )
IF(TEST_LIB)
INSTALL(TARGETS Eigen2
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
ENDIF(TEST_LIB)
ADD_SUBDIRECTORY(src) ADD_SUBDIRECTORY(src)

View File

@@ -212,9 +212,14 @@ template<typename Derived> class MatrixBase
return this->operator=<Derived>(other); return this->operator=<Derived>(other);
} }
/** Overloaded for optimal product evaluation */ /** Overloaded for cache friendly product evaluation */
template<typename Derived1, typename Derived2> template<typename Lhs, typename Rhs>
Derived& lazyAssign(const Product<Derived1,Derived2,CacheFriendlyProduct>& product); Derived& lazyAssign(const Product<Lhs,Rhs,CacheFriendlyProduct>& product);
/** Overloaded for cache friendly product evaluation */
template<typename OtherDerived>
Derived& lazyAssign(const Flagged<OtherDerived, 0, EvalBeforeNestingBit | EvalBeforeAssigningBit>& other)
{ lazyAssign(other._expression()); }
/** Overloaded for sparse product evaluation */ /** Overloaded for sparse product evaluation */
template<typename Derived1, typename Derived2> template<typename Derived1, typename Derived2>