[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