From fcee1903be17a07fa07019d21162a8d5797dc6a9 Mon Sep 17 00:00:00 2001 From: Benoit Jacob Date: Fri, 15 Oct 2010 08:48:44 -0400 Subject: [PATCH] update the porting guide --- doc/A05_PortingFrom2To3.dox | 58 ++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/doc/A05_PortingFrom2To3.dox b/doc/A05_PortingFrom2To3.dox index 783b99576..99eac75fc 100644 --- a/doc/A05_PortingFrom2To3.dox +++ b/doc/A05_PortingFrom2To3.dox @@ -8,12 +8,16 @@ and to help porting an application from Eigen2 to Eigen3. \b Table \b of \b contents - \ref CompatibilitySupport - \ref VectorBlocks + - \ref Corners - \ref CoefficientWiseOperations - \ref PartAndExtract - \ref TriangularSolveInPlace + - \ref Decompositions + - \ref LinearSolvers - \ref Using - - \ref Corners - \ref LazyVsNoalias + - \ref AlignMacros + - \ref AlignedMap \section CompatibilitySupport Eigen2 compatibility support @@ -150,6 +154,39 @@ StrictlyLower \code A.triangularSolveInPlace(Y);\endcode\code A.triangularView().solveInPlace(Y);\endcode + +\section Decompositions Matrix decompositions + +Some of Eigen 2's matrix decompositions have been renamed in Eigen 3, while some others have been removed and are replaced by other decompositions in Eigen 3. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \section LinearSolvers Linear solvers
Eigen 2Eigen 3Notes
LUFullPivLUSee also the new PartialPivLU, it's much faster
QRHouseholderQRSee also the new ColPivHouseholderQR, it's more reliable
SVDJacobiSVDWe currently don't have a bidiagonalizing SVD; of course this is planned.
EigenSolver and friends\code #include \endcode Moved to separate module
@@ -206,6 +243,25 @@ it might be useful to explicit request for a lay product, i.e., for a product wh just like any other expressions. To this end you can use the MatrixBase::lazyProduct() function, however we strongly discourage you to use it unless you are sure of what you are doing, i.e., you have rigourosly measured a speed improvement. +\section AlignMacros Alignment-related macros + +The EIGEN_ALIGN_128 macro has been renamed to EIGEN_ALIGN16. Don't be surprised, it's just that we switched to counting in bytes ;-) + +The EIGEN_DONT_ALIGN option still exists in Eigen 3, but it has a new cousin: EIGEN_DONT_ALIGN_STATICALLY. It allows to get rid of all static alignment issues while keeping alignment of dynamic-size heap-allocated arrays, thus keeping vectorization for dynamic-size objects. + +\section AlignedMap Aligned Map objects + +A common issue with Eigen 2 was that when mapping an array with Map, there was no way to tell Eigen that your array was aligned. There was a ForceAligned option but it didn't mean that; it was just confusing and has been removed. + +New in Eigen3 is the Aligned option. See the documentation of class Map. Use it like this: +\code +Map myMappedVector(some_aligned_array); +\endcode +There also are related convenience static methods: +\code +result = Vector4f::MapAligned(some_aligned_array); +\endcode + */ }