diff --git a/Eigen/src/Core/products/SelfadjointProduct.h b/Eigen/src/Core/products/SelfadjointProduct.h index 5d045a921..b4ca4e786 100644 --- a/Eigen/src/Core/products/SelfadjointProduct.h +++ b/Eigen/src/Core/products/SelfadjointProduct.h @@ -45,10 +45,10 @@ struct ei_selfadjoint_product; template struct ei_selfadjoint_product { - static EIGEN_STRONG_INLINE void run(int size, const Scalar* mat, int matStride, Scalar* res, int resStride, Scalar alpha) + static EIGEN_STRONG_INLINE void run(int size, int depth, const Scalar* mat, int matStride, Scalar* res, int resStride, Scalar alpha) { ei_selfadjoint_product - ::run(size, mat, matStride, res, resStride, alpha); + ::run(size, depth, mat, matStride, res, resStride, alpha); } }; @@ -58,7 +58,7 @@ struct ei_selfadjoint_product { static EIGEN_DONT_INLINE void run( - int size, + int size, int depth, const Scalar* _mat, int matStride, Scalar* res, int resStride, Scalar alpha) @@ -70,7 +70,7 @@ struct ei_selfadjoint_product typedef ei_product_blocking_traits Blocking; - int kc = std::min(Blocking::Max_kc,size); // cache block size along the K direction + int kc = std::min(Blocking::Max_kc,depth); // cache block size along the K direction int mc = std::min(Blocking::Max_mc,size); // cache block size along the M direction Scalar* blockA = ei_aligned_stack_new(Scalar, kc*mc); @@ -84,9 +84,9 @@ struct ei_selfadjoint_product ei_gebp_kernel gebp_kernel; - for(int k2=0; k2() @@ -141,12 +141,12 @@ void SelfAdjointView ei_selfadjoint_product::Flags&RowMajorBit ? RowMajor : ColMajor, - !UBlasTraits::NeedToConjugate, - UpLo>::run(_expression().cols(), &actualU.coeff(0,0), actualU.stride(), const_cast(_expression().data()), _expression().stride(), actualAlpha); + !UBlasTraits::NeedToConjugate, UpLo> + ::run(_expression().cols(), actualU.cols(), &actualU.coeff(0,0), actualU.stride(), + const_cast(_expression().data()), _expression().stride(), actualAlpha); } - // optimized SYmmetric packed Block * packed Block product kernel // this kernel is very similar to the gebp kernel: the only differences are // the piece of code to avoid the writes off the diagonal