@@ -1117,6 +1117,12 @@ noalias_mul_add(MatrixViewMut<T, colmajor> dst,
11171117 return ;
11181118 }
11191119
1120+ #if !EIGEN_VERSION_AT_LEAST(3, 3, 8)
1121+ #define LAZY_PRODUCT (a, b ) a.lazyProduct(b)
1122+ #else
1123+ #define LAZY_PRODUCT (a, b ) a.operator *(b)
1124+ #endif
1125+
11201126 if (dst.cols == 1 && dst.rows == 1 ) {
11211127 // dot
11221128 auto rhs_col = rhs.col (0 );
@@ -1133,7 +1139,7 @@ noalias_mul_add(MatrixViewMut<T, colmajor> dst,
11331139 auto rhs_col = rhs.col (0 );
11341140 auto dst_col = dst.col (0 );
11351141 dst_col.to_eigen ().noalias ().operator +=(
1136- factor * (lhs.to_eigen (). operator *( rhs_col.to_eigen () )));
1142+ factor * LAZY_PRODUCT (lhs.to_eigen (), rhs_col.to_eigen ()));
11371143 }
11381144
11391145#if !EIGEN_VERSION_AT_LEAST(3, 3, 8)
@@ -1151,19 +1157,20 @@ noalias_mul_add(MatrixViewMut<T, colmajor> dst,
11511157 .noalias ()
11521158 .
11531159 operator +=(
1154- Map (lhs.data , lhs.rows , lhs.cols , Stride (lhs.outer_stride ))
1155- .
1156- operator *(Map (rhs.data , rhs.rows , rhs.cols , Stride (rhs.outer_stride ))
1157- .
1158- operator *(factor)));
1160+ factor *
1161+ LAZY_PRODUCT (
1162+ Map (lhs.data , lhs.rows , lhs.cols , Stride (lhs.outer_stride )),
1163+ Map (rhs.data , rhs.rows , rhs.cols , Stride (rhs.outer_stride ))));
11591164 }
11601165#endif
11611166
11621167 else {
11631168 // gemm
11641169 dst.to_eigen ().noalias ().operator +=(
1165- lhs.to_eigen (). operator *( rhs.to_eigen (). operator *(factor )));
1170+ factor * LAZY_PRODUCT ( lhs.to_eigen (), rhs.to_eigen ()));
11661171 }
1172+
1173+ #undef LAZY_PRODUCT
11671174}
11681175
11691176template <typename T>
0 commit comments