[Bf-blender-cvs] [3411146] master: Update Eigen to version 3.2.1

Sergey Sharybin noreply at git.blender.org
Fri Mar 21 11:11:54 CET 2014


Commit: 3411146984316c97f56543333a46f47aeb7f9d35
Author: Sergey Sharybin
Date:   Fri Mar 21 16:04:53 2014 +0600
https://developer.blender.org/rB3411146984316c97f56543333a46f47aeb7f9d35

Update Eigen to version 3.2.1

Main purpose of this is to have SparseLU solver which
we can use now as a replacement to opennl library.

===================================================================

M	extern/Eigen3/Eigen/Core
M	extern/Eigen3/Eigen/Eigen2Support
M	extern/Eigen3/Eigen/Eigenvalues
M	extern/Eigen3/Eigen/IterativeLinearSolvers
A	extern/Eigen3/Eigen/MetisSupport
M	extern/Eigen3/Eigen/OrderingMethods
A	extern/Eigen3/Eigen/SPQRSupport
M	extern/Eigen3/Eigen/Sparse
M	extern/Eigen3/Eigen/SparseCholesky
M	extern/Eigen3/Eigen/SparseCore
A	extern/Eigen3/Eigen/SparseLU
A	extern/Eigen3/Eigen/SparseQR
M	extern/Eigen3/Eigen/src/Cholesky/LDLT.h
M	extern/Eigen3/Eigen/src/Cholesky/LLT.h
M	extern/Eigen3/Eigen/src/CholmodSupport/CholmodSupport.h
M	extern/Eigen3/Eigen/src/Core/Array.h
M	extern/Eigen3/Eigen/src/Core/ArrayBase.h
M	extern/Eigen3/Eigen/src/Core/ArrayWrapper.h
M	extern/Eigen3/Eigen/src/Core/Assign.h
M	extern/Eigen3/Eigen/src/Core/Assign_MKL.h
M	extern/Eigen3/Eigen/src/Core/Block.h
M	extern/Eigen3/Eigen/src/Core/BooleanRedux.h
M	extern/Eigen3/Eigen/src/Core/CommaInitializer.h
A	extern/Eigen3/Eigen/src/Core/CoreIterators.h
M	extern/Eigen3/Eigen/src/Core/CwiseBinaryOp.h
M	extern/Eigen3/Eigen/src/Core/CwiseNullaryOp.h
M	extern/Eigen3/Eigen/src/Core/CwiseUnaryOp.h
M	extern/Eigen3/Eigen/src/Core/CwiseUnaryView.h
M	extern/Eigen3/Eigen/src/Core/DenseBase.h
M	extern/Eigen3/Eigen/src/Core/DenseCoeffsBase.h
M	extern/Eigen3/Eigen/src/Core/DenseStorage.h
M	extern/Eigen3/Eigen/src/Core/Diagonal.h
M	extern/Eigen3/Eigen/src/Core/DiagonalMatrix.h
M	extern/Eigen3/Eigen/src/Core/DiagonalProduct.h
M	extern/Eigen3/Eigen/src/Core/Dot.h
M	extern/Eigen3/Eigen/src/Core/EigenBase.h
M	extern/Eigen3/Eigen/src/Core/Functors.h
M	extern/Eigen3/Eigen/src/Core/Fuzzy.h
M	extern/Eigen3/Eigen/src/Core/GeneralProduct.h
M	extern/Eigen3/Eigen/src/Core/GenericPacketMath.h
M	extern/Eigen3/Eigen/src/Core/GlobalFunctions.h
M	extern/Eigen3/Eigen/src/Core/IO.h
M	extern/Eigen3/Eigen/src/Core/Map.h
M	extern/Eigen3/Eigen/src/Core/MapBase.h
M	extern/Eigen3/Eigen/src/Core/MathFunctions.h
M	extern/Eigen3/Eigen/src/Core/Matrix.h
M	extern/Eigen3/Eigen/src/Core/MatrixBase.h
M	extern/Eigen3/Eigen/src/Core/NoAlias.h
M	extern/Eigen3/Eigen/src/Core/NumTraits.h
M	extern/Eigen3/Eigen/src/Core/PermutationMatrix.h
M	extern/Eigen3/Eigen/src/Core/PlainObjectBase.h
M	extern/Eigen3/Eigen/src/Core/ProductBase.h
M	extern/Eigen3/Eigen/src/Core/Random.h
M	extern/Eigen3/Eigen/src/Core/Redux.h
A	extern/Eigen3/Eigen/src/Core/Ref.h
M	extern/Eigen3/Eigen/src/Core/Replicate.h
M	extern/Eigen3/Eigen/src/Core/ReturnByValue.h
M	extern/Eigen3/Eigen/src/Core/Select.h
M	extern/Eigen3/Eigen/src/Core/SelfAdjointView.h
M	extern/Eigen3/Eigen/src/Core/SelfCwiseBinaryOp.h
M	extern/Eigen3/Eigen/src/Core/StableNorm.h
M	extern/Eigen3/Eigen/src/Core/Swap.h
M	extern/Eigen3/Eigen/src/Core/Transpose.h
M	extern/Eigen3/Eigen/src/Core/Transpositions.h
M	extern/Eigen3/Eigen/src/Core/TriangularMatrix.h
M	extern/Eigen3/Eigen/src/Core/VectorBlock.h
M	extern/Eigen3/Eigen/src/Core/VectorwiseOp.h
M	extern/Eigen3/Eigen/src/Core/Visitor.h
M	extern/Eigen3/Eigen/src/Core/arch/AltiVec/PacketMath.h
M	extern/Eigen3/Eigen/src/Core/arch/NEON/Complex.h
M	extern/Eigen3/Eigen/src/Core/arch/NEON/PacketMath.h
M	extern/Eigen3/Eigen/src/Core/arch/SSE/Complex.h
M	extern/Eigen3/Eigen/src/Core/arch/SSE/MathFunctions.h
M	extern/Eigen3/Eigen/src/Core/arch/SSE/PacketMath.h
M	extern/Eigen3/Eigen/src/Core/products/CoeffBasedProduct.h
M	extern/Eigen3/Eigen/src/Core/products/GeneralBlockPanelKernel.h
M	extern/Eigen3/Eigen/src/Core/products/GeneralMatrixMatrix.h
M	extern/Eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h
M	extern/Eigen3/Eigen/src/Core/products/GeneralMatrixVector.h
M	extern/Eigen3/Eigen/src/Core/products/GeneralMatrixVector_MKL.h
M	extern/Eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix.h
M	extern/Eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix_MKL.h
M	extern/Eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h
M	extern/Eigen3/Eigen/src/Core/products/SelfadjointMatrixVector_MKL.h
M	extern/Eigen3/Eigen/src/Core/products/SelfadjointProduct.h
M	extern/Eigen3/Eigen/src/Core/products/SelfadjointRank2Update.h
M	extern/Eigen3/Eigen/src/Core/products/TriangularMatrixMatrix.h
M	extern/Eigen3/Eigen/src/Core/products/TriangularMatrixMatrix_MKL.h
M	extern/Eigen3/Eigen/src/Core/products/TriangularMatrixVector.h
M	extern/Eigen3/Eigen/src/Core/products/TriangularMatrixVector_MKL.h
M	extern/Eigen3/Eigen/src/Core/products/TriangularSolverMatrix.h
M	extern/Eigen3/Eigen/src/Core/products/TriangularSolverMatrix_MKL.h
M	extern/Eigen3/Eigen/src/Core/util/BlasUtil.h
M	extern/Eigen3/Eigen/src/Core/util/Constants.h
M	extern/Eigen3/Eigen/src/Core/util/ForwardDeclarations.h
M	extern/Eigen3/Eigen/src/Core/util/Macros.h
M	extern/Eigen3/Eigen/src/Core/util/Memory.h
M	extern/Eigen3/Eigen/src/Core/util/Meta.h
M	extern/Eigen3/Eigen/src/Core/util/StaticAssert.h
M	extern/Eigen3/Eigen/src/Core/util/XprHelper.h
M	extern/Eigen3/Eigen/src/Eigen2Support/Geometry/AlignedBox.h
M	extern/Eigen3/Eigen/src/Eigen2Support/Geometry/AngleAxis.h
M	extern/Eigen3/Eigen/src/Eigen2Support/Geometry/Hyperplane.h
M	extern/Eigen3/Eigen/src/Eigen2Support/Geometry/ParametrizedLine.h
M	extern/Eigen3/Eigen/src/Eigen2Support/Geometry/Quaternion.h
M	extern/Eigen3/Eigen/src/Eigen2Support/Geometry/Rotation2D.h
M	extern/Eigen3/Eigen/src/Eigen2Support/Geometry/RotationBase.h
M	extern/Eigen3/Eigen/src/Eigen2Support/Geometry/Scaling.h
M	extern/Eigen3/Eigen/src/Eigen2Support/Geometry/Transform.h
M	extern/Eigen3/Eigen/src/Eigen2Support/Geometry/Translation.h
M	extern/Eigen3/Eigen/src/Eigen2Support/LeastSquares.h
M	extern/Eigen3/Eigen/src/Eigen2Support/MathFunctions.h
M	extern/Eigen3/Eigen/src/Eigen2Support/SVD.h
M	extern/Eigen3/Eigen/src/Eigenvalues/ComplexEigenSolver.h
M	extern/Eigen3/Eigen/src/Eigenvalues/ComplexSchur.h
M	extern/Eigen3/Eigen/src/Eigenvalues/ComplexSchur_MKL.h
M	extern/Eigen3/Eigen/src/Eigenvalues/EigenSolver.h
A	extern/Eigen3/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h
M	extern/Eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h
M	extern/Eigen3/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h
A	extern/Eigen3/Eigen/src/Eigenvalues/RealQZ.h
M	extern/Eigen3/Eigen/src/Eigenvalues/RealSchur.h
M	extern/Eigen3/Eigen/src/Eigenvalues/RealSchur_MKL.h
M	extern/Eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h
M	extern/Eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_MKL.h
M	extern/Eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h
M	extern/Eigen3/Eigen/src/Geometry/AlignedBox.h
M	extern/Eigen3/Eigen/src/Geometry/AngleAxis.h
M	extern/Eigen3/Eigen/src/Geometry/EulerAngles.h
M	extern/Eigen3/Eigen/src/Geometry/Homogeneous.h
M	extern/Eigen3/Eigen/src/Geometry/Hyperplane.h
M	extern/Eigen3/Eigen/src/Geometry/OrthoMethods.h
M	extern/Eigen3/Eigen/src/Geometry/ParametrizedLine.h
M	extern/Eigen3/Eigen/src/Geometry/Quaternion.h
M	extern/Eigen3/Eigen/src/Geometry/Rotation2D.h
M	extern/Eigen3/Eigen/src/Geometry/Scaling.h
M	extern/Eigen3/Eigen/src/Geometry/Transform.h
M	extern/Eigen3/Eigen/src/Geometry/Umeyama.h
M	extern/Eigen3/Eigen/src/Householder/Householder.h
M	extern/Eigen3/Eigen/src/Householder/HouseholderSequence.h
M	extern/Eigen3/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h
M	extern/Eigen3/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h
M	extern/Eigen3/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h
M	extern/Eigen3/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h
M	extern/Eigen3/Eigen/src/Jacobi/Jacobi.h
M	extern/Eigen3/Eigen/src/LU/Determinant.h
M	extern/Eigen3/Eigen/src/LU/FullPivLU.h
M	extern/Eigen3/Eigen/src/LU/Inverse.h
M	extern/Eigen3/Eigen/src/LU/PartialPivLU.h
A	extern/Eigen3/Eigen/src/MetisSupport/MetisSupport.h
M	extern/Eigen3/Eigen/src/OrderingMethods/Amd.h
A	extern/Eigen3/Eigen/src/OrderingMethods/Eigen_Colamd.h
A	extern/Eigen3/Eigen/src/OrderingMethods/Ordering.h
M	extern/Eigen3/Eigen/src/PaStiXSupport/PaStiXSupport.h
M	extern/Eigen3/Eigen/src/PardisoSupport/PardisoSupport.h
M	extern/Eigen3/Eigen/src/QR/ColPivHouseholderQR.h
M	extern/Eigen3/Eigen/src/QR/ColPivHouseholderQR_MKL.h
M	extern/Eigen3/Eigen/src/QR/FullPivHouseholderQR.h
M	extern/Eigen3/Eigen/src/QR/HouseholderQR.h
A	extern/Eigen3/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h
M	extern/Eigen3/Eigen/src/SVD/JacobiSVD.h
M	extern/Eigen3/Eigen/src/SVD/JacobiSVD_MKL.h
M	extern/Eigen3/Eigen/src/SVD/UpperBidiagonalization.h
M	extern/Eigen3/Eigen/src/SparseCholesky/SimplicialCholesky.h
A	extern/Eigen3/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h
M	extern/Eigen3/Eigen/src/SparseCore/AmbiVector.h
M	extern/Eigen3/Eigen/src/SparseCore/CompressedStorage.h
M	extern/Eigen3/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h
M	extern/Eigen3/Eigen/src/SparseCore/MappedSparseMatrix.h
M	extern/Eigen3/Eigen/src/SparseCore/SparseBlock.h
A	extern/Eigen3/Eigen/src/SparseCore/SparseColEtree.h
M	extern/Eigen3/Eigen/src/SparseCore/SparseCwiseBinaryOp.h
M	extern/Eigen3/Eigen/src/SparseCore/SparseDenseProduct.h
M	extern/Eigen3/Eigen/src/SparseCore/SparseDiagonalProduct.h
M	extern/Eigen3/Eigen/src/SparseCore/SparseDot.h
M	extern/Eigen3/Eigen/src/SparseCore/SparseMatrix.h
M	extern/Eigen3/Eigen/src/SparseCore/SparseMatrixBase.h
M	extern/Eigen3/Eigen/src/SparseCore/SparsePermutation.h
M	extern/Eigen3/Eigen/src/SparseCore/SparseProduct.h
M	extern/Eigen3/Eigen/src/SparseCore/SparseSelfAdjointView.h
M	extern/Eigen3/Eigen/src/SparseCore/SparseSparseProductWithPruning.h
M	extern/Eigen3/Eigen/src/SparseCore/SparseTranspose.h
M	extern/Eigen3/Eigen/src/SparseCore/SparseTriangularView.h
M	extern/Eigen3/Eigen/src/SparseCore/SparseUtil.h
M	extern/Eigen3/Eigen/src/SparseCore/SparseVector.h
M	extern/Eigen3/Eigen/src/SparseCore/SparseView.h
A	extern/Eigen3/Eigen/src/SparseLU/SparseLU.h
A	extern/Eigen3/Eigen/src/SparseLU/SparseLUImpl.h
A	extern/Eigen3/Eigen/src/SparseLU/SparseLU_Memory.h
A	extern/Eigen3/Eigen/src/SparseLU/SparseLU_Structs.h
A	extern/Eigen3/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h
A	extern/Eigen3/Eigen/src/SparseLU/SparseLU_Utils.h
A	extern/Eigen3/Eigen/src/SparseLU/SparseLU_column_bmod.h
A	extern/Eigen3/Eigen/src/SparseLU/SparseLU_column_dfs.h
A	extern/Eigen3/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h
A	extern/Eigen3/Eigen/src/SparseLU/SparseLU_gemm_kernel.h
A	extern/Eigen3/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h
A	extern/Eigen3/Eigen/src/SparseLU/SparseLU_kernel_bmod.h
A	extern/Eigen3/Eigen/src/SparseLU/SparseLU_panel_bmod.h
A	extern/Eigen3/Eigen/src/SparseLU/SparseLU_panel_dfs.h
A	extern/Eigen3/Eigen/src/SparseLU/SparseLU_pivotL.h
A	extern/Eigen3/Eigen/src/SparseLU/SparseLU_pruneL.h
A	extern/Eigen3/Eigen/src/SparseLU/SparseLU_relax_snode.h
A	extern/Eigen3/Eigen/src/SparseQR/SparseQR.h
M	extern/Eigen3/Eigen/src/SuperLUSupport/SuperLUSupport.h
M	extern/Eigen3/Eigen/src/UmfPackSupport/UmfPackSupport.h
M	extern/Eigen3/Eigen/src/misc/SparseSolve.h
M	extern/Eigen3/Eigen/src/plugins/ArrayCwiseBinaryOps.h
M	extern/Eigen3/Eigen/src/plugins/ArrayCwiseUnaryOps.h
M	extern/Eigen3/Eigen/src/plugins/BlockMethods.h
M	extern/Eigen3/Eigen/src/plugins/MatrixCwiseBinaryOps.h
M	extern/Eigen3/eigen-update.sh

===================================================================

diff --git a/extern/Eigen3/Eigen/Core b/extern/Eigen3/Eigen/Core
index d480170..9131cc3 100644
--- a/extern/Eigen3/Eigen/Core
+++ b/extern/Eigen3/Eigen/Core
@@ -19,6 +19,12 @@
 // defined e.g. EIGEN_DONT_ALIGN) so it needs to be done before we do anything with vectorization.
 #include "src/Core/util/Macros.h"
 
+// Disable the ipa-cp-clone optimization flag with MinGW 6.x or newer (enabled by default with -O3)
+// See http://eigen.tuxfamily.org/bz/show_bug.cgi?id=556 for details.
+#if defined(__MINGW32__) && EIGEN_GNUC_AT_LEAST(4,6)
+  #pragma GCC optimize ("-fno-ipa-cp-clone")
+#endif
+
 #include <complex>
 
 // this include file manages BLAS and MKL related macros
@@ -44,7 +50,7 @@
   #endif
 #else
   // Remember that usage of defined() in a #define is undefined by the standard
-  #if (defined __SSE2__) && ( (!defined __GNUC__) || EIGEN_GNUC_AT_LEAST(4,2) )
+  #if (defined __SSE2__) && ( (!defined __GNUC__) || (defined __INTEL_COMPILER) || EIGEN_GNUC_AT_LEAST(4,2) )
     #define EIGEN_SSE2_ON_NON_MSVC_BUT_NOT_OLD_GCC
   #endif
 #endif
@@ -87,19 +93,25 @@
     // so, to avoid compile errors when windows.h is included after Eigen/Core, ensure intrinsics are extern "C" here too.
     // notice that since these are C headers, the extern "C" is theoretically needed anyways.
     extern "C" {
-      #include <emmintrin.h>
-      #include <xmmintrin.h>
-      #ifdef  EIGEN_VECTORIZE_SSE3
-      #include <pmmintrin.h>
-      #endif
-      #ifdef EIGEN_VECTORIZE_SSSE3
-      #include <tmmintrin.h>
-      #endif
-      #ifdef EIGEN_VECTORIZE_SSE4_1
-      #include <smmintrin.h>
-      #endif
-      #ifdef EIGEN_VECTORIZE_SSE4_2
-      #include <nmmintrin.h>
+      // In theory we should only include immintrin.h and not the other *mmintrin.h header files directly.
+      // Doing so triggers some issues with ICC. However old gcc versions seems to not have this file, thus:
+      #ifdef __INTEL_COMPILER
+        #include <immintrin.h>
+      #else
+        #include <emmintrin.h>
+        #include <xmmintrin.h>
+        #ifdef  EIGEN_VECTORIZE_SSE3
+        #include <pmmintrin.h>
+        #endif
+        #ifdef EIGEN_VECTORIZE_SSSE3
+        #include <tmmintrin.h>
+        #endif
+        #ifdef EIGEN_VECTORIZE_SSE4_1
+        #include <smmintrin.h>
+        #endif
+        #ifdef EIGEN_VECTORIZE_SSE4_2
+        #include <nmmintrin.h>
+        #endif
       #endif
     } // end extern "C"
   #elif defined __ALTIVEC__
@@ -236,15 +248,11 @@ using std::ptrdiff_t;
   * \endcode
   */
 
-/** \defgroup Support_modules Support modules [category]
-  * Category of modules which add support for external libraries.
-  */
-
 #include "src/Core/util/Constants.h"
 #include "src/Core/util/ForwardDeclarations.h"
 #include "src/Core/util/Meta.h"
-#include "src/Core/util/XprHelper.h"
 #include "src/Core/util/StaticAssert.h"
+#include "src/Core/util/XprHelper.h"
 #include "src/Core/util/Memory.h"
 
 #include "src/Core/NumTraits.h"
@@ -297,6 +305,7 @@ using std::ptrdiff_t;
 #include "src/Core/Map.h"
 #include "src/Core/Block.h"
 #include "src/Core/VectorBlock.h"
+#include "src/Core/Ref.h"
 #include "src/Core/Transpose.h"
 #include "src/Core/DiagonalMatrix.h"
 #include "src/Core/Diagonal.h"
@@ -330,6 +339,7 @@ using std::ptrdiff_t;
 #include "src/Core/products/TriangularSolverMatrix.h"
 #include "src/Core/products/TriangularSolverVector.h"
 #include "src/Core/BandMatrix.h"
+#include "src/Core/CoreIterators.h"
 
 #include "src/Core/BooleanRedux.h"
 #include "src/Core/Select.h"
diff --git a/extern/Eigen3/Eigen/Eigen2Support b/extern/Eigen3/Eigen/Eigen2Support
index 36156d2..6aa009d 100644
--- a/extern/Eigen3/Eigen/Eigen2Support
+++ b/extern/Eigen3/Eigen/Eigen2Support
@@ -14,12 +14,25 @@
 #error Eigen2 support must be enabled by defining EIGEN2_SUPPORT before including any Eigen header
 #endif
 
+#ifndef EIGEN_NO_EIGEN2_DEPRECATED_WARNING
+
+#if defined(__GNUC__) || defined(__INTEL_COMPILER) || defined(__clang__)
+#warning "Eigen2 support is deprecated in Eigen 3.2.x and it will be removed in Eigen 3.3. (Define EIGEN_NO_EIGEN2_DEPRECATED_WARNING to disable this warning)"
+#else
+#pragma message ("Eigen2 support is deprecated in Eigen 3.2.x and it will be removed in Eigen 3.3. (Define EIGEN_NO_EIGEN2_DEPRECATED_WARNING to disable this warning)")
+#endif
+
+#endif // EIGEN_NO_EIGEN2_DEPRECATED_WARNING
+
 #include "src/Core/util/DisableStupidWarnings.h"
 
 /** \ingroup Support_modules
   * \defgroup Eigen2Support_Module Eigen2 support module
-  * This module provides a couple of deprecated functions improving the compatibility with Eigen2.
   *
+  * \warning Eigen2 support is deprecated in Eigen 3.2.x and it will be removed in Eigen 3.3.
+  *
+  * This module provides a couple of deprecated functions improving the compatibility with Eigen2.
+  * 
   * To use it, define EIGEN2_SUPPORT before including any Eigen header
   * \code
   * #define EIGEN2_SUPPORT
diff --git a/extern/Eigen3/Eigen/Eigenvalues b/extern/Eigen3/Eigen/Eigenvalues
index af99ccd..53c5a73 100644
--- a/extern/Eigen3/Eigen/Eigenvalues
+++ b/extern/Eigen3/Eigen/Eigenvalues
@@ -33,6 +33,8 @@
 #include "src/Eigenvalues/HessenbergDecomposition.h"
 #include "src/Eigenvalues/ComplexSchur.h"
 #include "src/Eigenvalues/ComplexEigenSolver.h"
+#include "src/Eigenvalues/RealQZ.h"
+#include "src/Eigenvalues/GeneralizedEigenSolver.h"
 #include "src/Eigenvalues/MatrixBaseEigenvalues.h"
 #ifdef EIGEN_USE_LAPACKE
 #include "src/Eigenvalues/RealSchur_MKL.h"
diff --git a/extern/Eigen3/Eigen/IterativeLinearSolvers b/extern/Eigen3/Eigen/IterativeLinearSolvers
index 315c2dd..0f4159d 100644
--- a/extern/Eigen3/Eigen/IterativeLinearSolvers
+++ b/extern/Eigen3/Eigen/IterativeLinearSolvers
@@ -6,7 +6,7 @@
 
 #include "src/Core/util/DisableStupidWarnings.h"
 
-/** \ingroup Sparse_modules
+/** 
   * \defgroup IterativeLinearSolvers_Module IterativeLinearSolvers module
   *
   * This module currently provides iterative methods to solve problems of the form \c A \c x = \c b, where \c A is a squared matrix, usually very large and sparse.
diff --git a/extern/Eigen3/Eigen/MetisSupport b/extern/Eigen3/Eigen/MetisSupport
new file mode 100644
index 0000000..6a113f7
--- /dev/null
+++ b/extern/Eigen3/Eigen/MetisSupport
@@ -0,0 +1,28 @@
+#ifndef EIGEN_METISSUPPORT_MODULE_H
+#define EIGEN_METISSUPPORT_MODULE_H
+
+#include "SparseCore"
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+extern "C" {
+#include <metis.h>
+}
+
+
+/** \ingroup Support_modules
+  * \defgroup MetisSupport_Module MetisSupport module
+  *
+  * \code
+  * #include <Eigen/MetisSupport>
+  * \endcode
+  * This module defines an interface to the METIS reordering package (http://glaros.dtc.umn.edu/gkhome/views/metis). 
+  * It can be used just as any other built-in method as explained in \link OrderingMethods_Module here. \endlink
+  */
+
+
+#include "src/MetisSupport/MetisSupport.h"
+
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif // EIGEN_METISSUPPORT_MODULE_H
diff --git a/extern/Eigen3/Eigen/OrderingMethods b/extern/Eigen3/Eigen/OrderingMethods
index 1e2d874..7c0f1ff 100644
--- a/extern/Eigen3/Eigen/OrderingMethods
+++ b/extern/Eigen3/Eigen/OrderingMethods
@@ -5,19 +5,62 @@
 
 #include "src/Core/util/DisableStupidWarnings.h"
 
-/** \ingroup Sparse_modules
+/** 
   * \defgroup OrderingMethods_Module OrderingMethods module
   *
-  * This module is currently for internal use only.
-  *
-  *
+  * This module is currently for internal use only
+  * 
+  * It defines various built-in and external ordering methods for sparse matrices. 
+  * They are typically used to reduce the number of elements during 
+  * the sparse matrix decomposition (LLT, LU, QR).
+  * Precisely, in a preprocessing step, a permutation matrix P is computed using 
+  * those ordering methods and applied to the columns of the matrix. 
+  * Using for instance the sparse Cholesky decomposition, it is expected that 
+  * the nonzeros elements in LLT(A*P) will be much smaller than that in LLT(A).
+  * 
+  * 
+  * Usage : 
   * \code
   * #include <Eigen/OrderingMethods>
   * \endcode
+  * 
+  * A simple usage is as a template parameter in the sparse decomposition classes : 
+  * 
+  * \code 
+  * SparseLU<MatrixType, COLAMDOrdering<int> > solver;
+  * \endcode 
+  * 
+  * \code 
+  * SparseQR<MatrixType, COLAMDOrdering<int> > solver;
+  * \endcode
+  * 
+  * It is possible as well to call directly a particular ordering method for your own purpose, 
+  * \code 
+  * AMDOrdering<int> ordering;
+  * PermutationMatrix<Dynamic, Dynamic, int> perm;
+  * SparseMatrix<double> A; 
+  * //Fill the matrix ...
+  * 
+  * ordering(A, perm); // Call AMD
+  * \endcode
+  * 
+  * \note Some of these methods (like AMD or METIS), need the sparsity pattern 
+  * of the input matrix to be symmetric. When the matrix is structurally unsymmetric, 
+  * Eigen computes internally the pattern of \f$A^T*A\f$ before calling the method.
+  * If your matrix is already symmetric (at leat in structure), you can avoid that
+  * by calling the method with a SelfAdjointView type.
+  * 
+  * \code
+  *  // Call the ordering on the pattern of the lower triangular matrix A
+  * ordering(A.selfadjointView<Lower>(), perm);
+  * \endcode
   */
 
+#ifndef EIGEN_MPL2_ONLY
 #include "src/OrderingMethods/Amd.h"
+#endif
 
+#include "src/OrderingMethods/Ordering.h"
 #include "src/Core/util/ReenableStupidWarnings.h"
 
 #endif // EIGEN_ORDERINGMETHODS_MODULE_H
diff --git a/extern/Eigen3/Eigen/SPQRSupport b/extern/Eigen3/Eigen/SPQRSupport
new file mode 100644
index 0000000..7701644
--- /dev/null
+++ b/extern/Eigen3/Eigen/SPQRSupport
@@ -0,0 +1,29 @@
+#ifndef EIGEN_SPQRSUPPORT_MODULE_H
+#define EIGEN_SPQRSUPPORT_MODULE_H
+
+#include "SparseCore"
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+#include "SuiteSparseQR.hpp"
+
+/** \ingroup Support_modules
+  * \defgroup SPQRSupport_Module SuiteSparseQR module
+  * 
+  * This module provides an interface to the SPQR library, which is part of the <a href="http://www.cise.ufl.edu/research/sparse/SuiteSparse/">suitesparse</a> package.
+  *
+  * \code
+  * #include <Eigen/SPQRSupport>
+  * \endcode
+  *
+  * In order to use this module, the SPQR headers must be accessible from the include paths, and your bi

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list