* take advantage of new possibilies in LLT (mat -= product)

* fix Block::operator+= product which was not optimized
* fix some compilation issues
This commit is contained in:
Gael Guennebaud
2009-07-07 15:32:21 +02:00
parent 92a35c93b2
commit 79877a9917
5 changed files with 23 additions and 23 deletions

View File

@@ -172,8 +172,9 @@ template<typename Derived> class MapBase
}
using Base::operator=;
using Base::operator*=;
using Base::operator+=;
using Base::operator-=;
template<typename OtherDerived>
Derived& operator+=(const MatrixBase<OtherDerived>& other)

View File

@@ -176,7 +176,8 @@ struct ei_solve_triangular_selector<Lhs,Rhs,Mode,UpLo,ColMajor>
IsLowerTriangular ? size-endBlock : endBlock+1,
&(lhs.const_cast_derived().coeffRef(IsLowerTriangular ? endBlock : 0, IsLowerTriangular ? startBlock : endBlock+1)),
lhs.stride(),
btmp, &(other.coeffRef(IsLowerTriangular ? endBlock : 0, c)));
btmp, &(other.coeffRef(IsLowerTriangular ? endBlock : 0, c)),
Scalar(1));
// if (IsLowerTriangular)
// other.col(c).end(size-endBlock) += (lhs.block(endBlock, startBlock, size-endBlock, endBlock-startBlock)
// * other.col(c).block(startBlock,endBlock-startBlock)).lazy();

View File

@@ -151,7 +151,6 @@ static void ei_cache_friendly_product(
const Scalar* b3 = &rhs[(j2+3)*rhsStride + k2];
if (hasAlpha)
{
std::cerr << "* by " << alpha << "\n";
for(int k=0; k<actual_kc; k++)
{
ei_pstore(&blockB[count+0*PacketSize], ei_pset1(alpha*b0[k]));