* use transpose() instead of row vectors (more common use case)

* add a word about noalias and performance for BLAS users
This commit is contained in:
Gael Guennebaud
2010-06-28 00:42:57 +02:00
parent aae5994b9e
commit 75da254fc3
3 changed files with 17 additions and 8 deletions

View File

@@ -124,8 +124,14 @@ introducing a temporary here, so it will compile \c m=m*m as:
tmp = m*m;
m = tmp;
\endcode
If you know your matrix product can be safely evluated into the destination matrix without aliasing issue, then you can use the \c nolias() function to avoid the temporary, e.g.:
\code
c.noalias() += a * b;
\endcode
For more details on this topic, see \ref TopicEigenExpressionTemplates "this page".
\b Note: for BLAS users worried about performance, expressions such as <tt>c.noalias() -= 2 * a.adjoint() * b;</tt> are fully optimized and trigger a single gemm-like function call.
\section TutorialArithmeticDotAndCross Dot product and cross product
The above-discussed \c operator* does not allow to compute dot and cross products. For that, you need the dot() and cross() methods.