Merging r39251 through r39311 from trunk into soc-2011-tomato
authorSergey Sharybin <sergey.vfx@gmail.com>
Thu, 11 Aug 2011 18:16:29 +0000 (18:16 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Thu, 11 Aug 2011 18:16:29 +0000 (18:16 +0000)
Splash screen is kept to be tomatoes.

710 files changed:
CMakeLists.txt
build_files/cmake/project_info.py
build_files/scons/config/darwin-config.py
build_files/scons/config/linuxcross-config.py
build_files/scons/config/win32-mingw-config.py
build_files/scons/config/win32-vc-config.py
build_files/scons/config/win64-vc-config.py
build_files/scons/tools/Blender.py
build_files/scons/tools/btools.py
extern/CMakeLists.txt
extern/Eigen2/Eigen/Array [deleted file]
extern/Eigen2/Eigen/Cholesky [deleted file]
extern/Eigen2/Eigen/Core [deleted file]
extern/Eigen2/Eigen/Eigen [deleted file]
extern/Eigen2/Eigen/Geometry [deleted file]
extern/Eigen2/Eigen/LeastSquares [deleted file]
extern/Eigen2/Eigen/QR [deleted file]
extern/Eigen2/Eigen/QtAlignedMalloc [deleted file]
extern/Eigen2/Eigen/Sparse [deleted file]
extern/Eigen2/Eigen/StdVector [deleted file]
extern/Eigen2/Eigen/src/Array/CwiseOperators.h [deleted file]
extern/Eigen2/Eigen/src/Array/Functors.h [deleted file]
extern/Eigen2/Eigen/src/Array/Norms.h [deleted file]
extern/Eigen2/Eigen/src/Array/PartialRedux.h [deleted file]
extern/Eigen2/Eigen/src/Cholesky/LDLT.h [deleted file]
extern/Eigen2/Eigen/src/Cholesky/LLT.h [deleted file]
extern/Eigen2/Eigen/src/Core/Assign.h [deleted file]
extern/Eigen2/Eigen/src/Core/Block.h [deleted file]
extern/Eigen2/Eigen/src/Core/CacheFriendlyProduct.h [deleted file]
extern/Eigen2/Eigen/src/Core/Coeffs.h [deleted file]
extern/Eigen2/Eigen/src/Core/CwiseBinaryOp.h [deleted file]
extern/Eigen2/Eigen/src/Core/CwiseUnaryOp.h [deleted file]
extern/Eigen2/Eigen/src/Core/DiagonalCoeffs.h [deleted file]
extern/Eigen2/Eigen/src/Core/DiagonalMatrix.h [deleted file]
extern/Eigen2/Eigen/src/Core/DiagonalProduct.h [deleted file]
extern/Eigen2/Eigen/src/Core/Dot.h [deleted file]
extern/Eigen2/Eigen/src/Core/Functors.h [deleted file]
extern/Eigen2/Eigen/src/Core/Fuzzy.h [deleted file]
extern/Eigen2/Eigen/src/Core/GenericPacketMath.h [deleted file]
extern/Eigen2/Eigen/src/Core/Map.h [deleted file]
extern/Eigen2/Eigen/src/Core/MapBase.h [deleted file]
extern/Eigen2/Eigen/src/Core/MathFunctions.h [deleted file]
extern/Eigen2/Eigen/src/Core/Matrix.h [deleted file]
extern/Eigen2/Eigen/src/Core/MatrixBase.h [deleted file]
extern/Eigen2/Eigen/src/Core/MatrixStorage.h [deleted file]
extern/Eigen2/Eigen/src/Core/NumTraits.h [deleted file]
extern/Eigen2/Eigen/src/Core/Part.h [deleted file]
extern/Eigen2/Eigen/src/Core/Product.h [deleted file]
extern/Eigen2/Eigen/src/Core/Redux.h [deleted file]
extern/Eigen2/Eigen/src/Core/SolveTriangular.h [deleted file]
extern/Eigen2/Eigen/src/Core/Sum.h [deleted file]
extern/Eigen2/Eigen/src/Core/Transpose.h [deleted file]
extern/Eigen2/Eigen/src/Core/arch/AltiVec/PacketMath.h [deleted file]
extern/Eigen2/Eigen/src/Core/arch/SSE/PacketMath.h [deleted file]
extern/Eigen2/Eigen/src/Core/util/Constants.h [deleted file]
extern/Eigen2/Eigen/src/Core/util/DisableMSVCWarnings.h [deleted file]
extern/Eigen2/Eigen/src/Core/util/EnableMSVCWarnings.h [deleted file]
extern/Eigen2/Eigen/src/Core/util/ForwardDeclarations.h [deleted file]
extern/Eigen2/Eigen/src/Core/util/Macros.h [deleted file]
extern/Eigen2/Eigen/src/Core/util/Memory.h [deleted file]
extern/Eigen2/Eigen/src/Core/util/Meta.h [deleted file]
extern/Eigen2/Eigen/src/Core/util/XprHelper.h [deleted file]
extern/Eigen2/Eigen/src/Geometry/OrthoMethods.h [deleted file]
extern/Eigen2/Eigen/src/LU/Inverse.h [deleted file]
extern/Eigen2/Eigen/src/LU/LU.h [deleted file]
extern/Eigen2/Eigen/src/QR/EigenSolver.h [deleted file]
extern/Eigen2/Eigen/src/QR/HessenbergDecomposition.h [deleted file]
extern/Eigen2/Eigen/src/QR/QR.h [deleted file]
extern/Eigen2/Eigen/src/QR/SelfAdjointEigenSolver.h [deleted file]
extern/Eigen2/Eigen/src/QR/Tridiagonalization.h [deleted file]
extern/Eigen2/Eigen/src/Sparse/CholmodSupport.h [deleted file]
extern/Eigen2/Eigen/src/Sparse/RandomSetter.h [deleted file]
extern/Eigen2/Eigen/src/Sparse/SparseCwise.h [deleted file]
extern/Eigen2/Eigen/src/Sparse/SparseCwiseBinaryOp.h [deleted file]
extern/Eigen2/Eigen/src/Sparse/SparseCwiseUnaryOp.h [deleted file]
extern/Eigen2/Eigen/src/Sparse/SparseDiagonalProduct.h [deleted file]
extern/Eigen2/Eigen/src/Sparse/SparseFlagged.h [deleted file]
extern/Eigen2/Eigen/src/Sparse/SparseLDLT.h [deleted file]
extern/Eigen2/Eigen/src/Sparse/SparseLLT.h [deleted file]
extern/Eigen2/Eigen/src/Sparse/SparseLU.h [deleted file]
extern/Eigen2/Eigen/src/Sparse/SparseMatrix.h [deleted file]
extern/Eigen2/Eigen/src/Sparse/SparseProduct.h [deleted file]
extern/Eigen2/Eigen/src/Sparse/SparseTranspose.h [deleted file]
extern/Eigen2/Eigen/src/Sparse/SparseUtil.h [deleted file]
extern/Eigen2/Eigen/src/Sparse/SuperLUSupport.h [deleted file]
extern/Eigen2/Eigen/src/Sparse/TaucsSupport.h [deleted file]
extern/Eigen2/Eigen/src/Sparse/TriangularSolver.h [deleted file]
extern/Eigen2/Eigen/src/Sparse/UmfPackSupport.h [deleted file]
extern/Eigen3/Eigen/Array [new file with mode: 0644]
extern/Eigen3/Eigen/Cholesky [new file with mode: 0644]
extern/Eigen3/Eigen/Core [new file with mode: 0644]
extern/Eigen3/Eigen/Dense [moved from extern/Eigen2/Eigen/Dense with 70% similarity]
extern/Eigen3/Eigen/Eigen [new file with mode: 0644]
extern/Eigen3/Eigen/Eigen2Support [new file with mode: 0644]
extern/Eigen3/Eigen/Eigenvalues [new file with mode: 0644]
extern/Eigen3/Eigen/Geometry [new file with mode: 0644]
extern/Eigen3/Eigen/Householder [new file with mode: 0644]
extern/Eigen3/Eigen/Jacobi [new file with mode: 0644]
extern/Eigen3/Eigen/LU [moved from extern/Eigen2/Eigen/LU with 54% similarity]
extern/Eigen3/Eigen/LeastSquares [new file with mode: 0644]
extern/Eigen3/Eigen/QR [new file with mode: 0644]
extern/Eigen3/Eigen/QtAlignedMalloc [new file with mode: 0644]
extern/Eigen3/Eigen/SVD [moved from extern/Eigen2/Eigen/SVD with 52% similarity]
extern/Eigen3/Eigen/Sparse [new file with mode: 0644]
extern/Eigen3/Eigen/StdDeque [moved from extern/Eigen2/Eigen/src/QR/QrInstantiations.cpp with 59% similarity]
extern/Eigen3/Eigen/StdList [new file with mode: 0644]
extern/Eigen3/Eigen/StdVector [moved from extern/Eigen2/Eigen/src/Core/CoreInstantiations.cpp with 59% similarity]
extern/Eigen3/Eigen/src/Cholesky/LDLT.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Cholesky/LLT.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/Array.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/ArrayBase.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/ArrayWrapper.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/Assign.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/BandMatrix.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/Block.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/BooleanRedux.h [moved from extern/Eigen2/Eigen/src/Array/BooleanRedux.h with 60% similarity]
extern/Eigen3/Eigen/src/Core/CommaInitializer.h [moved from extern/Eigen2/Eigen/src/Core/CommaInitializer.h with 67% similarity]
extern/Eigen3/Eigen/src/Core/CwiseBinaryOp.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/CwiseNullaryOp.h [moved from extern/Eigen2/Eigen/src/Core/CwiseNullaryOp.h with 57% similarity]
extern/Eigen3/Eigen/src/Core/CwiseUnaryOp.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/CwiseUnaryView.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/DenseBase.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/DenseCoeffsBase.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/DenseStorage.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/Diagonal.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/DiagonalMatrix.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/DiagonalProduct.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/Dot.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/EigenBase.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/Flagged.h [moved from extern/Eigen2/Eigen/src/Core/Flagged.h with 61% similarity]
extern/Eigen3/Eigen/src/Core/ForceAlignedAccess.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/Functors.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/Fuzzy.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/GenericPacketMath.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/GlobalFunctions.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/IO.h [moved from extern/Eigen2/Eigen/src/Core/IO.h with 58% similarity]
extern/Eigen3/Eigen/src/Core/Map.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/MapBase.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/MathFunctions.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/Matrix.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/MatrixBase.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/NestByValue.h [moved from extern/Eigen2/Eigen/src/Core/NestByValue.h with 67% similarity]
extern/Eigen3/Eigen/src/Core/NoAlias.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/NumTraits.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/PermutationMatrix.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/PlainObjectBase.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/Product.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/ProductBase.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/Random.h [moved from extern/Eigen2/Eigen/src/Array/Random.h with 52% similarity]
extern/Eigen3/Eigen/src/Core/Redux.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/Replicate.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/ReturnByValue.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/Reverse.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/Select.h [moved from extern/Eigen2/Eigen/src/Array/Select.h with 59% similarity]
extern/Eigen3/Eigen/src/Core/SelfAdjointView.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/SelfCwiseBinaryOp.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/SolveTriangular.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/StableNorm.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/Stride.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/Swap.h [moved from extern/Eigen2/Eigen/src/Core/Swap.h with 59% similarity]
extern/Eigen3/Eigen/src/Core/Transpose.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/Transpositions.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/TriangularMatrix.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/VectorBlock.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/VectorwiseOp.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/Visitor.h [moved from extern/Eigen2/Eigen/src/Core/Visitor.h with 56% similarity]
extern/Eigen3/Eigen/src/Core/arch/AltiVec/Complex.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/arch/AltiVec/PacketMath.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/arch/Default/Settings.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/arch/NEON/Complex.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/arch/NEON/PacketMath.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/arch/SSE/Complex.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/arch/SSE/MathFunctions.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/arch/SSE/PacketMath.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/products/CoeffBasedProduct.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/products/GeneralBlockPanelKernel.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/products/GeneralMatrixMatrix.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/products/GeneralMatrixVector.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/products/Parallelizer.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/products/SelfadjointProduct.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/products/SelfadjointRank2Update.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/products/TriangularMatrixMatrix.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/products/TriangularMatrixVector.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/products/TriangularSolverMatrix.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/products/TriangularSolverVector.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/util/BlasUtil.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/util/Constants.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/util/DisableStupidWarnings.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/util/ForwardDeclarations.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/util/Macros.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/util/Memory.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/util/Meta.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/util/ReenableStupidWarnings.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Core/util/StaticAssert.h [moved from extern/Eigen2/Eigen/src/Core/util/StaticAssert.h with 60% similarity]
extern/Eigen3/Eigen/src/Core/util/XprHelper.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Eigen2Support/Block.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Eigen2Support/Cwise.h [moved from extern/Eigen2/Eigen/src/Core/Cwise.h with 70% similarity]
extern/Eigen3/Eigen/src/Eigen2Support/CwiseOperators.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Eigen2Support/Geometry/AlignedBox.h [moved from extern/Eigen2/Eigen/src/Geometry/AlignedBox.h with 96% similarity]
extern/Eigen3/Eigen/src/Eigen2Support/Geometry/All.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Eigen2Support/Geometry/AngleAxis.h [moved from extern/Eigen2/Eigen/src/Geometry/AngleAxis.h with 96% similarity]
extern/Eigen3/Eigen/src/Eigen2Support/Geometry/Hyperplane.h [moved from extern/Eigen2/Eigen/src/Geometry/Hyperplane.h with 92% similarity]
extern/Eigen3/Eigen/src/Eigen2Support/Geometry/ParametrizedLine.h [moved from extern/Eigen2/Eigen/src/Geometry/ParametrizedLine.h with 92% similarity]
extern/Eigen3/Eigen/src/Eigen2Support/Geometry/Quaternion.h [moved from extern/Eigen2/Eigen/src/Geometry/Quaternion.h with 88% similarity]
extern/Eigen3/Eigen/src/Eigen2Support/Geometry/Rotation2D.h [moved from extern/Eigen2/Eigen/src/Geometry/Rotation2D.h with 94% similarity]
extern/Eigen3/Eigen/src/Eigen2Support/Geometry/RotationBase.h [moved from extern/Eigen2/Eigen/src/Geometry/RotationBase.h with 98% similarity]
extern/Eigen3/Eigen/src/Eigen2Support/Geometry/Scaling.h [moved from extern/Eigen2/Eigen/src/Geometry/Scaling.h with 95% similarity]
extern/Eigen3/Eigen/src/Eigen2Support/Geometry/Transform.h [moved from extern/Eigen2/Eigen/src/Geometry/Transform.h with 93% similarity]
extern/Eigen3/Eigen/src/Eigen2Support/Geometry/Translation.h [moved from extern/Eigen2/Eigen/src/Geometry/Translation.h with 95% similarity]
extern/Eigen3/Eigen/src/Eigen2Support/LU.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Eigen2Support/Lazy.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Eigen2Support/LeastSquares.h [moved from extern/Eigen2/Eigen/src/LeastSquares/LeastSquares.h with 98% similarity]
extern/Eigen3/Eigen/src/Eigen2Support/Macros.h [moved from extern/Eigen2/Eigen/src/Sparse/SparseRedux.h with 65% similarity]
extern/Eigen3/Eigen/src/Eigen2Support/MathFunctions.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Eigen2Support/Memory.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Eigen2Support/Meta.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Eigen2Support/Minor.h [moved from extern/Eigen2/Eigen/src/Core/Minor.h with 73% similarity]
extern/Eigen3/Eigen/src/Eigen2Support/QR.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Eigen2Support/SVD.h [moved from extern/Eigen2/Eigen/src/SVD/SVD.h with 94% similarity]
extern/Eigen3/Eigen/src/Eigen2Support/TriangularSolver.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Eigen2Support/VectorBlock.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Eigenvalues/ComplexEigenSolver.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Eigenvalues/ComplexSchur.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Eigenvalues/EigenSolver.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Eigenvalues/EigenvaluesCommon.h [moved from extern/Eigen2/Eigen/src/Cholesky/CholeskyInstantiations.cpp with 75% similarity]
extern/Eigen3/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Eigenvalues/RealSchur.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Geometry/AlignedBox.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Geometry/AngleAxis.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Geometry/EulerAngles.h [moved from extern/Eigen2/Eigen/src/Geometry/EulerAngles.h with 75% similarity]
extern/Eigen3/Eigen/src/Geometry/Homogeneous.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Geometry/Hyperplane.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Geometry/OrthoMethods.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Geometry/ParametrizedLine.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Geometry/Quaternion.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Geometry/Rotation2D.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Geometry/RotationBase.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Geometry/Scaling.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Geometry/Transform.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Geometry/Translation.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Geometry/Umeyama.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Geometry/arch/Geometry_SSE.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Householder/BlockHouseholder.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Householder/Householder.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Householder/HouseholderSequence.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Jacobi/Jacobi.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/LU/Determinant.h [moved from extern/Eigen2/Eigen/src/LU/Determinant.h with 50% similarity]
extern/Eigen3/Eigen/src/LU/FullPivLU.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/LU/Inverse.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/LU/PartialPivLU.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/LU/arch/Inverse_SSE.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/QR/ColPivHouseholderQR.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/QR/FullPivHouseholderQR.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/QR/HouseholderQR.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/SVD/JacobiSVD.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/SVD/UpperBidiagonalization.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Sparse/AmbiVector.h [moved from extern/Eigen2/Eigen/src/Sparse/AmbiVector.h with 71% similarity]
extern/Eigen3/Eigen/src/Sparse/CompressedStorage.h [moved from extern/Eigen2/Eigen/src/Sparse/CompressedStorage.h with 81% similarity]
extern/Eigen3/Eigen/src/Sparse/CoreIterators.h [moved from extern/Eigen2/Eigen/src/Sparse/CoreIterators.h with 77% similarity]
extern/Eigen3/Eigen/src/Sparse/DynamicSparseMatrix.h [moved from extern/Eigen2/Eigen/src/Sparse/DynamicSparseMatrix.h with 53% similarity]
extern/Eigen3/Eigen/src/Sparse/MappedSparseMatrix.h [moved from extern/Eigen2/Eigen/src/Sparse/MappedSparseMatrix.h with 51% similarity]
extern/Eigen3/Eigen/src/Sparse/SparseAssign.h [moved from extern/Eigen2/Eigen/src/Sparse/SparseAssign.h with 100% similarity]
extern/Eigen3/Eigen/src/Sparse/SparseBlock.h [moved from extern/Eigen2/Eigen/src/Sparse/SparseBlock.h with 50% similarity]
extern/Eigen3/Eigen/src/Sparse/SparseCwiseBinaryOp.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Sparse/SparseCwiseUnaryOp.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Sparse/SparseDenseProduct.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Sparse/SparseDiagonalProduct.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Sparse/SparseDot.h [moved from extern/Eigen2/Eigen/src/Sparse/SparseDot.h with 74% similarity]
extern/Eigen3/Eigen/src/Sparse/SparseFuzzy.h [moved from extern/Eigen2/Eigen/src/Sparse/SparseFuzzy.h with 84% similarity]
extern/Eigen3/Eigen/src/Sparse/SparseMatrix.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Sparse/SparseMatrixBase.h [moved from extern/Eigen2/Eigen/src/Sparse/SparseMatrixBase.h with 56% similarity]
extern/Eigen3/Eigen/src/Sparse/SparseProduct.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Sparse/SparseRedux.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Sparse/SparseSelfAdjointView.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Sparse/SparseSparseProduct.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Sparse/SparseTranspose.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Sparse/SparseTriangularView.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Sparse/SparseUtil.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Sparse/SparseVector.h [moved from extern/Eigen2/Eigen/src/Sparse/SparseVector.h with 55% similarity]
extern/Eigen3/Eigen/src/Sparse/SparseView.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/Sparse/TriangularSolver.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/StlSupport/StdDeque.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/StlSupport/StdList.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/StlSupport/StdVector.h [moved from extern/Eigen2/Eigen/NewStdVector with 58% similarity]
extern/Eigen3/Eigen/src/StlSupport/details.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/misc/Image.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/misc/Kernel.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/misc/Solve.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/plugins/ArrayCwiseBinaryOps.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/plugins/ArrayCwiseUnaryOps.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/plugins/BlockMethods.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/plugins/CommonCwiseUnaryOps.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/plugins/MatrixCwiseBinaryOps.h [new file with mode: 0644]
extern/Eigen3/Eigen/src/plugins/MatrixCwiseUnaryOps.h [new file with mode: 0644]
extern/Eigen3/eigen-update.sh [moved from extern/Eigen2/eigen-update.sh with 71% similarity]
extern/SConscript
extern/colamd/CMakeLists.txt [new file with mode: 0644]
extern/colamd/Doc/ChangeLog [new file with mode: 0644]
extern/colamd/Doc/lesser.txt [new file with mode: 0644]
extern/colamd/Include/UFconfig.h [new file with mode: 0644]
extern/colamd/Include/colamd.h [new file with mode: 0644]
extern/colamd/README.txt [new file with mode: 0644]
extern/colamd/SConscript [new file with mode: 0644]
extern/colamd/Source/colamd.c [new file with mode: 0644]
extern/colamd/Source/colamd_global.c [new file with mode: 0644]
extern/libmv/CMakeLists.txt [new file with mode: 0644]
extern/libmv/ChangeLog [new file with mode: 0644]
extern/libmv/SConscript [new file with mode: 0644]
extern/libmv/bundle.sh [new file with mode: 0755]
extern/libmv/files.txt [new file with mode: 0644]
extern/libmv/libmv-capi.cpp [new file with mode: 0644]
extern/libmv/libmv-capi.h [new file with mode: 0644]
extern/libmv/libmv/base/id_generator.h [new file with mode: 0644]
extern/libmv/libmv/base/scoped_ptr.h [new file with mode: 0644]
extern/libmv/libmv/base/vector.h [new file with mode: 0644]
extern/libmv/libmv/base/vector_utils.h [new file with mode: 0644]
extern/libmv/libmv/image/array_nd.cc [new file with mode: 0644]
extern/libmv/libmv/image/array_nd.h [new file with mode: 0644]
extern/libmv/libmv/image/convolve.cc [new file with mode: 0644]
extern/libmv/libmv/image/convolve.h [new file with mode: 0644]
extern/libmv/libmv/image/image.h [new file with mode: 0644]
extern/libmv/libmv/image/sample.h [new file with mode: 0644]
extern/libmv/libmv/image/tuple.h [new file with mode: 0644]
extern/libmv/libmv/logging/logging.h [new file with mode: 0644]
extern/libmv/libmv/multiview/conditioning.cc [new file with mode: 0644]
extern/libmv/libmv/multiview/conditioning.h [new file with mode: 0644]
extern/libmv/libmv/multiview/euclidean_resection.cc [new file with mode: 0644]
extern/libmv/libmv/multiview/euclidean_resection.h [new file with mode: 0644]
extern/libmv/libmv/multiview/fundamental.cc [new file with mode: 0644]
extern/libmv/libmv/multiview/fundamental.h [new file with mode: 0644]
extern/libmv/libmv/multiview/nviewtriangulation.h [new file with mode: 0644]
extern/libmv/libmv/multiview/projection.cc [new file with mode: 0644]
extern/libmv/libmv/multiview/projection.h [new file with mode: 0644]
extern/libmv/libmv/multiview/resection.h [new file with mode: 0644]
extern/libmv/libmv/multiview/triangulation.cc [new file with mode: 0644]
extern/libmv/libmv/multiview/triangulation.h [new file with mode: 0644]
extern/libmv/libmv/numeric/dogleg.h [new file with mode: 0644]
extern/libmv/libmv/numeric/function_derivative.h [new file with mode: 0644]
extern/libmv/libmv/numeric/levenberg_marquardt.h [new file with mode: 0644]
extern/libmv/libmv/numeric/numeric.cc [new file with mode: 0644]
extern/libmv/libmv/numeric/numeric.h [new file with mode: 0644]
extern/libmv/libmv/numeric/poly.cc [new file with mode: 0644]
extern/libmv/libmv/numeric/poly.h [new file with mode: 0644]
extern/libmv/libmv/numeric/tinyvector.cc [new file with mode: 0644]
extern/libmv/libmv/simple_pipeline/bundle.cc [new file with mode: 0644]
extern/libmv/libmv/simple_pipeline/bundle.h [new file with mode: 0644]
extern/libmv/libmv/simple_pipeline/camera_intrinsics.cc [new file with mode: 0644]
extern/libmv/libmv/simple_pipeline/camera_intrinsics.h [new file with mode: 0644]
extern/libmv/libmv/simple_pipeline/detect.cc [new file with mode: 0644]
extern/libmv/libmv/simple_pipeline/detect.h [new file with mode: 0644]
extern/libmv/libmv/simple_pipeline/initialize_reconstruction.cc [new file with mode: 0644]
extern/libmv/libmv/simple_pipeline/initialize_reconstruction.h [new file with mode: 0644]
extern/libmv/libmv/simple_pipeline/intersect.cc [new file with mode: 0644]
extern/libmv/libmv/simple_pipeline/intersect.h [new file with mode: 0644]
extern/libmv/libmv/simple_pipeline/pipeline.cc [new file with mode: 0644]
extern/libmv/libmv/simple_pipeline/pipeline.h [new file with mode: 0644]
extern/libmv/libmv/simple_pipeline/reconstruction.cc [new file with mode: 0644]
extern/libmv/libmv/simple_pipeline/reconstruction.h [new file with mode: 0644]
extern/libmv/libmv/simple_pipeline/resect.cc [new file with mode: 0644]
extern/libmv/libmv/simple_pipeline/resect.h [new file with mode: 0644]
extern/libmv/libmv/simple_pipeline/tracks.cc [new file with mode: 0644]
extern/libmv/libmv/simple_pipeline/tracks.h [new file with mode: 0644]
extern/libmv/libmv/tracking/klt_region_tracker.cc [new file with mode: 0644]
extern/libmv/libmv/tracking/klt_region_tracker.h [new file with mode: 0644]
extern/libmv/libmv/tracking/pyramid_region_tracker.cc [new file with mode: 0644]
extern/libmv/libmv/tracking/pyramid_region_tracker.h [new file with mode: 0644]
extern/libmv/libmv/tracking/region_tracker.h [new file with mode: 0644]
extern/libmv/libmv/tracking/retrack_region_tracker.cc [new file with mode: 0644]
extern/libmv/libmv/tracking/retrack_region_tracker.h [new file with mode: 0644]
extern/libmv/libmv/tracking/trklt_region_tracker.cc [new file with mode: 0644]
extern/libmv/libmv/tracking/trklt_region_tracker.h [new file with mode: 0644]
extern/libmv/mkfiles.sh [new file with mode: 0755]
extern/libmv/patches/bundle_tweaks.patch [new file with mode: 0644]
extern/libmv/patches/fast.patch [new file with mode: 0644]
extern/libmv/patches/series [new file with mode: 0644]
extern/libmv/patches/snrptinf_fix.patch [new file with mode: 0644]
extern/libmv/patches/v3d_verbosity.patch [new file with mode: 0644]
extern/libmv/third_party/fast/LICENSE [new file with mode: 0644]
extern/libmv/third_party/fast/README [new file with mode: 0644]
extern/libmv/third_party/fast/README.libmv [new file with mode: 0644]
extern/libmv/third_party/fast/fast.c [new file with mode: 0644]
extern/libmv/third_party/fast/fast.h [new file with mode: 0644]
extern/libmv/third_party/fast/fast_10.c [new file with mode: 0644]
extern/libmv/third_party/fast/fast_11.c [new file with mode: 0644]
extern/libmv/third_party/fast/fast_12.c [new file with mode: 0644]
extern/libmv/third_party/fast/fast_9.c [new file with mode: 0644]
extern/libmv/third_party/fast/nonmax.c [new file with mode: 0644]
extern/libmv/third_party/gflags/README.libmv [new file with mode: 0644]
extern/libmv/third_party/gflags/config.h [new file with mode: 0644]
extern/libmv/third_party/gflags/gflags.cc [new file with mode: 0644]
extern/libmv/third_party/gflags/gflags.h [new file with mode: 0644]
extern/libmv/third_party/gflags/gflags_completions.cc [new file with mode: 0644]
extern/libmv/third_party/gflags/gflags_completions.h [new file with mode: 0644]
extern/libmv/third_party/gflags/gflags_reporting.cc [new file with mode: 0644]
extern/libmv/third_party/gflags/mutex.h [new file with mode: 0644]
extern/libmv/third_party/glog/AUTHORS [new file with mode: 0644]
extern/libmv/third_party/glog/COPYING [new file with mode: 0644]
extern/libmv/third_party/glog/ChangeLog [new file with mode: 0644]
extern/libmv/third_party/glog/NEWS [new file with mode: 0644]
extern/libmv/third_party/glog/README [new file with mode: 0644]
extern/libmv/third_party/glog/README.libmv [new file with mode: 0644]
extern/libmv/third_party/glog/src/base/commandlineflags.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/base/googleinit.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/base/mutex.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/config.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/config_linux.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/config_mac.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/demangle.cc [new file with mode: 0644]
extern/libmv/third_party/glog/src/demangle.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/glog/log_severity.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/glog/logging.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/glog/raw_logging.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/glog/vlog_is_on.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/logging.cc [new file with mode: 0644]
extern/libmv/third_party/glog/src/raw_logging.cc [new file with mode: 0644]
extern/libmv/third_party/glog/src/signalhandler.cc [new file with mode: 0644]
extern/libmv/third_party/glog/src/stacktrace.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/stacktrace_generic-inl.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/stacktrace_libunwind-inl.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/stacktrace_powerpc-inl.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/stacktrace_x86-inl.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/stacktrace_x86_64-inl.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/symbolize.cc [new file with mode: 0644]
extern/libmv/third_party/glog/src/symbolize.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/utilities.cc [new file with mode: 0644]
extern/libmv/third_party/glog/src/utilities.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/vlog_is_on.cc [new file with mode: 0644]
extern/libmv/third_party/glog/src/windows/config.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/windows/glog/log_severity.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/windows/glog/logging.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/windows/glog/raw_logging.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/windows/glog/vlog_is_on.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/windows/port.cc [new file with mode: 0644]
extern/libmv/third_party/glog/src/windows/port.h [new file with mode: 0644]
extern/libmv/third_party/glog/src/windows/preprocess.sh [new file with mode: 0755]
extern/libmv/third_party/ldl/CMakeLists.txt [new file with mode: 0644]
extern/libmv/third_party/ldl/Doc/ChangeLog [new file with mode: 0644]
extern/libmv/third_party/ldl/Doc/lesser.txt [new file with mode: 0644]
extern/libmv/third_party/ldl/Include/ldl.h [new file with mode: 0644]
extern/libmv/third_party/ldl/README.libmv [new file with mode: 0644]
extern/libmv/third_party/ldl/README.txt [new file with mode: 0644]
extern/libmv/third_party/ldl/Source/ldl.c [new file with mode: 0644]
extern/libmv/third_party/msinttypes/README.libmv [new file with mode: 0644]
extern/libmv/third_party/msinttypes/inttypes.h [new file with mode: 0644]
extern/libmv/third_party/msinttypes/stdint.h [new file with mode: 0644]
extern/libmv/third_party/ssba/COPYING.TXT [new file with mode: 0644]
extern/libmv/third_party/ssba/Geometry/v3d_cameramatrix.h [new file with mode: 0644]
extern/libmv/third_party/ssba/Geometry/v3d_distortion.h [new file with mode: 0644]
extern/libmv/third_party/ssba/Geometry/v3d_metricbundle.cpp [new file with mode: 0644]
extern/libmv/third_party/ssba/Geometry/v3d_metricbundle.h [new file with mode: 0644]
extern/libmv/third_party/ssba/Math/v3d_linear.h [new file with mode: 0644]
extern/libmv/third_party/ssba/Math/v3d_linear_utils.h [new file with mode: 0644]
extern/libmv/third_party/ssba/Math/v3d_mathutilities.h [new file with mode: 0644]
extern/libmv/third_party/ssba/Math/v3d_optimization.cpp [new file with mode: 0644]
extern/libmv/third_party/ssba/Math/v3d_optimization.h [new file with mode: 0644]
extern/libmv/third_party/ssba/README.TXT [new file with mode: 0644]
extern/libmv/third_party/ssba/README.libmv [new file with mode: 0755]
intern/ffmpeg/ffmpeg_compat.h
intern/itasc/CMakeLists.txt
intern/itasc/ConstraintSet.cpp
intern/itasc/ControlledObject.cpp
intern/itasc/CopyPose.cpp
intern/itasc/SConscript
intern/itasc/Scene.cpp
intern/itasc/WDLSSolver.cpp
intern/itasc/WSDLSSolver.cpp
intern/itasc/kdl/inertia.cpp
intern/itasc/kdl/inertia.hpp
intern/itasc/kdl/utilities/svd_eigen_HH.hpp
intern/memutil/MEM_CacheLimiter.h
intern/memutil/MEM_CacheLimiterC-Api.h
intern/memutil/intern/MEM_CacheLimiterC-Api.cpp
intern/opennl/CMakeLists.txt
intern/opennl/SConscript
intern/opennl/superlu/colamd.c [deleted file]
intern/opennl/superlu/colamd.h [deleted file]
intern/opennl/superlu/get_perm_c.c
release/datafiles/blenderbuttons
release/datafiles/splash.png
release/scripts/presets/camera/APS-C_DSLR.py [new file with mode: 0644]
release/scripts/presets/camera/Blender.py [new file with mode: 0644]
release/scripts/presets/camera/Canon_1100D.py [new file with mode: 0644]
release/scripts/presets/camera/Canon_1D.py [new file with mode: 0644]
release/scripts/presets/camera/Canon_1DS.py [new file with mode: 0644]
release/scripts/presets/camera/Canon_500D.py [new file with mode: 0644]
release/scripts/presets/camera/Canon_550D.py [new file with mode: 0644]
release/scripts/presets/camera/Canon_5D.py [new file with mode: 0644]
release/scripts/presets/camera/Canon_600D.py [new file with mode: 0644]
release/scripts/presets/camera/Canon_60D.py [new file with mode: 0644]
release/scripts/presets/camera/Canon_7D.py [new file with mode: 0644]
release/scripts/presets/camera/Nikon_D300S.py [new file with mode: 0644]
release/scripts/presets/camera/Nikon_D3100.py [new file with mode: 0644]
release/scripts/presets/camera/Nikon_D35.py [new file with mode: 0644]
release/scripts/presets/camera/Nikon_D5000.py [new file with mode: 0644]
release/scripts/presets/camera/Nikon_D5100.py [new file with mode: 0644]
release/scripts/presets/camera/Nikon_D7000.py [new file with mode: 0644]
release/scripts/presets/camera/Nikon_D90.py [new file with mode: 0644]
release/scripts/presets/camera/Red_Epic.py [new file with mode: 0644]
release/scripts/presets/camera/Red_One_2K.py [new file with mode: 0644]
release/scripts/presets/camera/Red_One_3K.py [new file with mode: 0644]
release/scripts/presets/camera/Red_One_4K.py [new file with mode: 0644]
release/scripts/presets/camera/full_frame_35mm_film.py [new file with mode: 0644]
release/scripts/presets/camera/micro_four_thirds.py [new file with mode: 0644]
release/scripts/presets/camera/super_16_film.py [new file with mode: 0644]
release/scripts/presets/camera/super_35_film.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Blender.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Canon_1100D.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Canon_1D.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Canon_1DS.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Canon_500D.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Canon_550D.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Canon_5D.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Canon_600D.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Canon_60D.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Canon_7D.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Nikon_D300S.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Nikon_D3100.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Nikon_D35.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Nikon_D5000.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Nikon_D5100.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Nikon_D7000.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Nikon_D90.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Red_Epic.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Red_One_2K.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Red_One_3K.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Red_One_4K.py [new file with mode: 0644]
release/scripts/presets/tracking_track_color/default.py [new file with mode: 0644]
release/scripts/presets/tracking_track_color/far_plane.py [new file with mode: 0644]
release/scripts/presets/tracking_track_color/near_plane.py [new file with mode: 0644]
release/scripts/startup/bl_operators/presets.py
release/scripts/startup/bl_ui/__init__.py
release/scripts/startup/bl_ui/properties_data_camera.py
release/scripts/startup/bl_ui/properties_object_constraint.py
release/scripts/startup/bl_ui/properties_scene.py
release/scripts/startup/bl_ui/space_clip.py [new file with mode: 0644]
release/scripts/startup/bl_ui/space_sequencer.py
release/scripts/startup/bl_ui/space_time.py
release/scripts/startup/bl_ui/space_userpref_keymap.py
release/scripts/startup/bl_ui/space_view3d.py
source/blender/CMakeLists.txt
source/blender/blenkernel/BKE_context.h
source/blender/blenkernel/BKE_main.h
source/blender/blenkernel/BKE_moviecache.h [new file with mode: 0644]
source/blender/blenkernel/BKE_movieclip.h [new file with mode: 0644]
source/blender/blenkernel/BKE_node.h
source/blender/blenkernel/BKE_object.h
source/blender/blenkernel/BKE_sequencer.h
source/blender/blenkernel/BKE_tracking.h [new file with mode: 0644]
source/blender/blenkernel/CMakeLists.txt
source/blender/blenkernel/SConscript
source/blender/blenkernel/intern/blender.c
source/blender/blenkernel/intern/constraint.c
source/blender/blenkernel/intern/context.c
source/blender/blenkernel/intern/depsgraph.c
source/blender/blenkernel/intern/idcode.c
source/blender/blenkernel/intern/image.c
source/blender/blenkernel/intern/library.c
source/blender/blenkernel/intern/moviecache.c [new file with mode: 0644]
source/blender/blenkernel/intern/movieclip.c [new file with mode: 0644]
source/blender/blenkernel/intern/node.c
source/blender/blenkernel/intern/object.c
source/blender/blenkernel/intern/seqcache.c
source/blender/blenkernel/intern/sequencer.c
source/blender/blenkernel/intern/tracking.c [new file with mode: 0644]
source/blender/blenlib/BLI_math_rotation.h
source/blender/blenlib/BLI_math_vector.h
source/blender/blenlib/BLI_threads.h
source/blender/blenlib/intern/math_rotation.c
source/blender/blenlib/intern/math_vector_inline.c
source/blender/blenlib/intern/threads.c
source/blender/blenlib/intern/uvproject.c
source/blender/blenloader/intern/readblenentry.c
source/blender/blenloader/intern/readfile.c
source/blender/blenloader/intern/readfile.h
source/blender/blenloader/intern/writefile.c
source/blender/collada/CameraExporter.cpp
source/blender/collada/DocumentImporter.cpp
source/blender/editors/CMakeLists.txt
source/blender/editors/SConscript
source/blender/editors/datafiles/blenderbuttons.c
source/blender/editors/datafiles/splash.png.c
source/blender/editors/gpencil/drawgpencil.c
source/blender/editors/gpencil/editaction_gpencil.c
source/blender/editors/gpencil/gpencil_edit.c
source/blender/editors/gpencil/gpencil_paint.c
source/blender/editors/include/ED_clip.h [new file with mode: 0644]
source/blender/editors/include/ED_space_api.h
source/blender/editors/include/ED_transform.h
source/blender/editors/include/UI_icons.h
source/blender/editors/include/UI_interface.h
source/blender/editors/include/UI_resources.h
source/blender/editors/interface/interface_draw.c
source/blender/editors/interface/interface_handlers.c
source/blender/editors/interface/interface_intern.h
source/blender/editors/interface/interface_templates.c
source/blender/editors/interface/interface_widgets.c
source/blender/editors/interface/resources.c
source/blender/editors/object/object_constraint.c
source/blender/editors/screen/area.c
source/blender/editors/screen/screen_edit.c
source/blender/editors/screen/screen_ops.c
source/blender/editors/sculpt_paint/paint_image.c
source/blender/editors/space_api/spacetypes.c
source/blender/editors/space_clip/CMakeLists.txt [new file with mode: 0644]
source/blender/editors/space_clip/SConscript [new file with mode: 0644]
source/blender/editors/space_clip/clip_buttons.c [new file with mode: 0644]
source/blender/editors/space_clip/clip_draw.c [new file with mode: 0644]
source/blender/editors/space_clip/clip_editor.c [new file with mode: 0644]
source/blender/editors/space_clip/clip_intern.h [new file with mode: 0644]
source/blender/editors/space_clip/clip_ops.c [new file with mode: 0644]
source/blender/editors/space_clip/clip_toolbar.c [new file with mode: 0644]
source/blender/editors/space_clip/space_clip.c [new file with mode: 0644]
source/blender/editors/space_clip/tracking_ops.c [new file with mode: 0644]
source/blender/editors/space_image/image_buttons.c
source/blender/editors/space_node/drawnode.c
source/blender/editors/space_sequencer/SConscript
source/blender/editors/space_sequencer/sequencer_edit.c
source/blender/editors/space_sequencer/sequencer_intern.h
source/blender/editors/space_sequencer/sequencer_ops.c
source/blender/editors/space_view3d/drawobject.c
source/blender/editors/space_view3d/space_view3d.c
source/blender/editors/space_view3d/view3d_draw.c
source/blender/editors/space_view3d/view3d_intern.h
source/blender/editors/space_view3d/view3d_select.c
source/blender/editors/space_view3d/view3d_snap.c
source/blender/editors/space_view3d/view3d_view.c
source/blender/editors/transform/transform.c
source/blender/editors/transform/transform.h
source/blender/editors/transform/transform_conversions.c
source/blender/editors/transform/transform_generics.c
source/blender/editors/transform/transform_ops.c
source/blender/editors/util/CMakeLists.txt
source/blender/ikplugin/CMakeLists.txt
source/blender/ikplugin/SConscript
source/blender/imbuf/CMakeLists.txt
source/blender/imbuf/IMB_imbuf.h
source/blender/imbuf/intern/IMB_anim.h
source/blender/imbuf/intern/IMB_indexer.h [new file with mode: 0644]
source/blender/imbuf/intern/allocimbuf.c
source/blender/imbuf/intern/anim_movie.c
source/blender/imbuf/intern/filter.c
source/blender/imbuf/intern/indexer.c [new file with mode: 0644]
source/blender/imbuf/intern/indexer_dv.c [new file with mode: 0644]
source/blender/imbuf/intern/thumbs.c
source/blender/imbuf/intern/util.c
source/blender/makesdna/DNA_ID.h
source/blender/makesdna/DNA_camera_types.h
source/blender/makesdna/DNA_constraint_types.h
source/blender/makesdna/DNA_movieclip_types.h [new file with mode: 0644]
source/blender/makesdna/DNA_scene_types.h
source/blender/makesdna/DNA_sequence_types.h
source/blender/makesdna/DNA_space_types.h
source/blender/makesdna/DNA_tracking_types.h [new file with mode: 0644]
source/blender/makesdna/DNA_userdef_types.h
source/blender/makesdna/DNA_view3d_types.h
source/blender/makesdna/intern/makesdna.c
source/blender/makesrna/RNA_access.h
source/blender/makesrna/intern/CMakeLists.txt
source/blender/makesrna/intern/makesrna.c
source/blender/makesrna/intern/rna_ID.c
source/blender/makesrna/intern/rna_camera.c
source/blender/makesrna/intern/rna_constraint.c
source/blender/makesrna/intern/rna_internal.h
source/blender/makesrna/intern/rna_main.c
source/blender/makesrna/intern/rna_main_api.c
source/blender/makesrna/intern/rna_movieclip.c [new file with mode: 0644]
source/blender/makesrna/intern/rna_nodetree.c
source/blender/makesrna/intern/rna_nodetree_types.h
source/blender/makesrna/intern/rna_scene.c
source/blender/makesrna/intern/rna_screen.c
source/blender/makesrna/intern/rna_sequencer.c
source/blender/makesrna/intern/rna_space.c
source/blender/makesrna/intern/rna_tracking.c [new file with mode: 0644]
source/blender/makesrna/intern/rna_ui_api.c
source/blender/makesrna/intern/rna_userdef.c
source/blender/modifiers/intern/MOD_uvproject.c
source/blender/nodes/CMP_node.h
source/blender/nodes/CMakeLists.txt
source/blender/nodes/intern/CMP_nodes/CMP_movieclip.c [new file with mode: 0644]
source/blender/nodes/intern/CMP_nodes/CMP_scale.c
source/blender/nodes/intern/CMP_nodes/CMP_stabilize2d.c [new file with mode: 0644]
source/blender/nodes/intern/CMP_nodes/CMP_transform.c [new file with mode: 0644]
source/blender/nodes/intern/CMP_util.h
source/blender/render/intern/include/render_types.h
source/blender/render/intern/source/envmap.c
source/blender/render/intern/source/initrender.c
source/blender/windowmanager/WM_api.h
source/blender/windowmanager/WM_types.h
source/blender/windowmanager/intern/wm_jobs.c
source/blender/windowmanager/intern/wm_operators.c
source/blenderplayer/CMakeLists.txt
source/blenderplayer/bad_level_call_stubs/stubs.c
source/creator/CMakeLists.txt
source/creator/creator.c
source/gameengine/Converter/BL_BlenderDataConversion.cpp
source/gameengine/Ketsji/KX_Camera.cpp
source/gameengine/Ketsji/KX_Camera.h
source/gameengine/Ketsji/KX_KetsjiEngine.cpp
source/gameengine/Rasterizer/RAS_CameraData.h
source/gameengine/Rasterizer/RAS_FramingManager.cpp
source/gameengine/Rasterizer/RAS_FramingManager.h
source/gameengine/VideoTexture/ImageRender.cpp

index cf083b8..4097fbd 100644 (file)
@@ -178,6 +178,9 @@ option(WITH_SAMPLERATE    "Enable samplerate conversion" ON)
 option(WITH_LZO           "Enable fast LZO compression (used for pointcache)" ON)
 option(WITH_LZMA          "Enable best LZMA compression, (used for pointcache)" ON)
 
+# Tracking
+option(WITH_LIBMV         "Enable libmv structure from motion library" ON)
+
 # Misc
 option(WITH_INPUT_NDOF "Enable NDOF input devices (SpaceNavigator and friends)" ON)
 option(WITH_RAYOPTIMIZATION    "Enable use of SIMD (SSE) optimizations for the raytracer" ON) 
@@ -687,15 +690,15 @@ elseif(WIN32)
 
                if(WITH_CODEC_FFMPEG)
                        set(FFMPEG_INCLUDE_DIRS
-                               ${LIBDIR}/ffmpeg/include
-                               ${LIBDIR}/ffmpeg/include/msvc
+                               ${LIBDIR}/ffmpeg-0.8/include
+                               ${LIBDIR}/ffmpeg-0.8/include/msvc
                        )
                        set(FFMPEG_LIBRARIES
-                               ${LIBDIR}/ffmpeg/lib/avcodec-52.lib
-                               ${LIBDIR}/ffmpeg/lib/avformat-52.lib
-                               ${LIBDIR}/ffmpeg/lib/avdevice-52.lib
-                               ${LIBDIR}/ffmpeg/lib/avutil-50.lib
-                               ${LIBDIR}/ffmpeg/lib/swscale-0.lib
+                               ${LIBDIR}/ffmpeg-0.8/lib/avcodec-53.lib
+                               ${LIBDIR}/ffmpeg-0.8/lib/avformat-53.lib
+                               ${LIBDIR}/ffmpeg-0.8/lib/avdevice-53.lib
+                               ${LIBDIR}/ffmpeg-0.8/lib/avutil-51.lib
+                               ${LIBDIR}/ffmpeg-0.8/lib/swscale-2.lib
                        )
                endif()
 
@@ -820,9 +823,9 @@ elseif(WIN32)
                endif()
                
                if(WITH_CODEC_FFMPEG)
-                       set(FFMPEG ${LIBDIR}/ffmpeg)
+                       set(FFMPEG ${LIBDIR}/ffmpeg-0.8)
                        set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include ${FFMPEG}/include)
-                       set(FFMPEG_LIBRARIES avcodec-52 avformat-52 avdevice-52 avutil-50 swscale-0)
+                       set(FFMPEG_LIBRARIES avcodec-53 avformat-53 avdevice-53 avutil-51 swscale-2)
                        set(FFMPEG_LIBPATH ${FFMPEG}/lib)
                endif()
 
@@ -959,7 +962,7 @@ elseif(APPLE)
        endif()
 
        if(WITH_CODEC_FFMPEG)
-               set(FFMPEG ${LIBDIR}/ffmpeg)
+               set(FFMPEG ${LIBDIR}/ffmpeg-0.8)
                set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
                set(FFMPEG_LIBRARIES avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg)
                set(FFMPEG_LIBPATH ${FFMPEG}/lib)
index db12884..e419f6b 100755 (executable)
@@ -105,7 +105,7 @@ def is_glsl(filename):
 
 def is_c(filename):
     ext = splitext(filename)[1]
-    return (ext in (".c", ".cpp", ".cxx", ".m", ".mm", ".rc"))
+    return (ext in (".c", ".cpp", ".cxx", ".m", ".mm", ".rc", ".cc"))
 
 
 def is_c_any(filename):
index ec6a3b0..2737fda 100644 (file)
@@ -98,7 +98,7 @@ else:
 
 # enable ffmpeg  support
 WITH_BF_FFMPEG = True  # -DWITH_FFMPEG
-BF_FFMPEG = LIBDIR + '/ffmpeg'
+BF_FFMPEG = LIBDIR + '/ffmpeg-0.8'
 BF_FFMPEG_INC = "${BF_FFMPEG}/include"
 BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
 BF_FFMPEG_LIB = 'avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg bz2'
index 6247452..98100e3 100644 (file)
@@ -125,8 +125,9 @@ WITH_BF_BINRELOC = False
 
 # enable ffmpeg  support
 WITH_BF_FFMPEG = True  # -DWITH_FFMPEG
-BF_FFMPEG = LIBDIR + '/ffmpeg'
-BF_FFMPEG_LIB = 'avformat-52 avcodec-52 avdevice-52 avutil-50 swscale-0'
+BF_FFMPEG = LIBDIR + '/ffmpeg-0.8'
+BF_FFMPEG_LIB = 'avformat-53 avcodec-53 avdevice-53 avutil-51 swscale-2'
+BF_FFMPEG_DLL = '${BF_FFMPEG_LIBPATH}/avformat-53.dll ${BF_FFMPEG_LIBPATH}/avcodec-53.dll ${BF_FFMPEG_LIBPATH}/avdevice-53.dll ${BF_FFMPEG_LIBPATH}/avutil-51.dll ${BF_FFMPEG_LIBPATH}/swscale-2.dll'
 BF_FFMPEG_INC = '${BF_FFMPEG}/include'
 BF_FFMPEG_LIBPATH = '${BF_FFMPEG}/lib'
 
index 6dac29b..6134d3c 100644 (file)
@@ -18,9 +18,11 @@ BF_OPENAL_LIB = 'wrap_oal'
 BF_OPENAL_LIBPATH = '${BF_OPENAL}/lib'
 
 WITH_BF_FFMPEG = False
-BF_FFMPEG_LIB = 'avformat-52 avcodec-52 avdevice-52 avutil-50 swscale-0'
-BF_FFMPEG_LIBPATH = LIBDIR + '/ffmpeg/lib'
-BF_FFMPEG_INC =  LIBDIR + '/ffmpeg/include'
+BF_FFMPEG_LIB = 'avformat-53 avcodec-53 avdevice-53 avutil-51 swscale-2'
+BF_FFMPEG_LIBPATH = LIBDIR + '/ffmpeg-0.8/lib'
+BF_FFMPEG_INC =  LIBDIR + '/ffmpeg-0.8/include'
+BF_FFMPEG_DLL = '${BF_FFMPEG_LIBPATH}/avformat-53.dll ${BF_FFMPEG_LIBPATH}/avcodec-53.dll ${BF_FFMPEG_LIBPATH}/avdevice-53.dll ${BF_FFMPEG_LIBPATH}/avutil-51.dll ${BF_FFMPEG_LIBPATH}/swscale-2.dll'
+
 
 BF_LIBSAMPLERATE = LIBDIR + '/samplerate'
 BF_LIBSAMPLERATE_INC = '${BF_LIBSAMPLERATE}/include'
index 4baada7..beee028 100644 (file)
@@ -3,11 +3,11 @@ LIBDIR = '${LCGDIR}'
 
 # enable ffmpeg  support
 WITH_BF_FFMPEG = True  # -DWITH_FFMPEG
-BF_FFMPEG = LIBDIR +'/ffmpeg'
+BF_FFMPEG = LIBDIR +'/ffmpeg-0.8'
 BF_FFMPEG_INC = '${BF_FFMPEG}/include ${BF_FFMPEG}/include/msvc'
 BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
-BF_FFMPEG_LIB = 'avformat-52.lib avcodec-52.lib avdevice-52.lib avutil-50.lib swscale-0.lib'
-BF_FFMPEG_DLL = '${BF_FFMPEG_LIBPATH}/avformat-52.dll ${BF_FFMPEG_LIBPATH}/avcodec-52.dll ${BF_FFMPEG_LIBPATH}/avdevice-52.dll ${BF_FFMPEG_LIBPATH}/avutil-50.dll ${BF_FFMPEG_LIBPATH}/swscale-0.dll'
+BF_FFMPEG_LIB = 'avformat-53.lib avcodec-53.lib avdevice-53.lib avutil-51.lib swscale-2.lib'
+BF_FFMPEG_DLL = '${BF_FFMPEG_LIBPATH}/avformat-53.dll ${BF_FFMPEG_LIBPATH}/avcodec-53.dll ${BF_FFMPEG_LIBPATH}/avdevice-53.dll ${BF_FFMPEG_LIBPATH}/avutil-51.dll ${BF_FFMPEG_LIBPATH}/swscale-2.dll'
 
 BF_PYTHON = LIBDIR + '/python'
 BF_PYTHON_VERSION = '3.2'
index db7c8d0..e3eb560 100644 (file)
@@ -3,11 +3,11 @@ LIBDIR = '${LCGDIR}'
 
 # enable ffmpeg  support
 WITH_BF_FFMPEG = True # -DWITH_FFMPEG
-BF_FFMPEG = LIBDIR +'/ffmpeg'
+BF_FFMPEG = LIBDIR +'/ffmpeg-0.8'
 BF_FFMPEG_INC = '${BF_FFMPEG}/include ${BF_FFMPEG}/include/msvc '
 BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
-BF_FFMPEG_LIB = 'avformat-52.lib avcodec-52.lib avdevice-52.lib avutil-50.lib swscale-0.lib'
-BF_FFMPEG_DLL = '${BF_FFMPEG_LIBPATH}/avformat-52.dll ${BF_FFMPEG_LIBPATH}/avcodec-52.dll ${BF_FFMPEG_LIBPATH}/avdevice-52.dll ${BF_FFMPEG_LIBPATH}/avutil-50.dll ${BF_FFMPEG_LIBPATH}/swscale-0.dll'
+BF_FFMPEG_LIB = 'avformat-53.lib avcodec-53.lib avdevice-53.lib avutil-51.lib swscale-2.lib'
+BF_FFMPEG_DLL = '${BF_FFMPEG_LIBPATH}/avformat-53.dll ${BF_FFMPEG_LIBPATH}/avcodec-53.dll ${BF_FFMPEG_LIBPATH}/avdevice-53.dll ${BF_FFMPEG_LIBPATH}/avutil-51.dll ${BF_FFMPEG_LIBPATH}/swscale-2.dll'
 
 BF_PYTHON = LIBDIR + '/python'
 BF_PYTHON_VERSION = '3.2'
index 6fae278..27326a2 100644 (file)
@@ -326,6 +326,10 @@ def creator(env):
     if not env['WITH_BF_SDL']:
         defs.append('DISABLE_SDL')
 
+    if env['WITH_BF_LIBMV']:
+        incs.append('#/extern/libmv')
+        defs.append('WITH_LIBMV')
+
     if env['WITH_BF_PYTHON']:
         incs.append('#/source/blender/python')
         defs.append('WITH_PYTHON')
index 25e0582..e2fd5db 100644 (file)
@@ -499,6 +499,8 @@ def read_opts(env, cfg, args):
         (BoolVariable('WITH_BF_LZO', 'Enable fast LZO pointcache compression', True)),
         (BoolVariable('WITH_BF_LZMA', 'Enable best LZMA pointcache compression', True)),
         
+        (BoolVariable('WITH_BF_LIBMV', 'Enable libmv structure from motion library', True)),
+
         ('BF_X264_CONFIG', 'configuration flags for x264', ''),
         ('BF_XVIDCORE_CONFIG', 'configuration flags for xvidcore', ''),
 #        (BoolVariable('WITH_BF_DOCS', 'Generate API documentation', False)),
index 3990d13..327b898 100644 (file)
@@ -27,6 +27,8 @@
 # Otherwise we get warnings here that we cant fix in external projects
 remove_strict_flags()
 
+add_subdirectory(colamd)
+
 if(WITH_BULLET)
        add_subdirectory(bullet2)
 endif()
@@ -58,3 +60,7 @@ endif()
 if(WITH_LZMA)
        add_subdirectory(lzma)
 endif()
+
+if(WITH_LIBMV)
+       add_subdirectory(libmv)
+endif()
diff --git a/extern/Eigen2/Eigen/Array b/extern/Eigen2/Eigen/Array
deleted file mode 100644 (file)
index c847f95..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#ifndef EIGEN_ARRAY_MODULE_H
-#define EIGEN_ARRAY_MODULE_H
-
-#include "Core"
-
-#include "src/Core/util/DisableMSVCWarnings.h"
-
-namespace Eigen {
-
-/** \defgroup Array_Module Array module
-  * This module provides several handy features to manipulate matrices as simple array of values.
-  * In addition to listed classes, it defines various methods of the Cwise interface
-  * (accessible from MatrixBase::cwise()), including:
-  *  - matrix-scalar sum,
-  *  - coeff-wise comparison operators,
-  *  - sin, cos, sqrt, pow, exp, log, square, cube, inverse (reciprocal).
-  *
-  * This module also provides various MatrixBase methods, including:
-  *  - \ref MatrixBase::all() "all", \ref MatrixBase::any() "any",
-  *  - \ref MatrixBase::Random() "random matrix initialization"
-  *
-  * \code
-  * #include <Eigen/Array>
-  * \endcode
-  */
-
-#include "src/Array/CwiseOperators.h"
-#include "src/Array/Functors.h"
-#include "src/Array/BooleanRedux.h"
-#include "src/Array/Select.h"
-#include "src/Array/PartialRedux.h"
-#include "src/Array/Random.h"
-#include "src/Array/Norms.h"
-
-} // namespace Eigen
-
-#include "src/Core/util/EnableMSVCWarnings.h"
-
-#endif // EIGEN_ARRAY_MODULE_H
diff --git a/extern/Eigen2/Eigen/Cholesky b/extern/Eigen2/Eigen/Cholesky
deleted file mode 100644 (file)
index f1806f7..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-#ifndef EIGEN_CHOLESKY_MODULE_H
-#define EIGEN_CHOLESKY_MODULE_H
-
-#include "Core"
-
-#include "src/Core/util/DisableMSVCWarnings.h"
-
-// Note that EIGEN_HIDE_HEAVY_CODE has to be defined per module
-#if (defined EIGEN_EXTERN_INSTANTIATIONS) && (EIGEN_EXTERN_INSTANTIATIONS>=2)
-  #ifndef EIGEN_HIDE_HEAVY_CODE
-  #define EIGEN_HIDE_HEAVY_CODE
-  #endif
-#elif defined EIGEN_HIDE_HEAVY_CODE
-  #undef EIGEN_HIDE_HEAVY_CODE
-#endif
-
-namespace Eigen {
-
-/** \defgroup Cholesky_Module Cholesky module
-  *
-  * \nonstableyet
-  *
-  * This module provides two variants of the Cholesky decomposition for selfadjoint (hermitian) matrices.
-  * Those decompositions are accessible via the following MatrixBase methods:
-  *  - MatrixBase::llt(),
-  *  - MatrixBase::ldlt()
-  *
-  * \code
-  * #include <Eigen/Cholesky>
-  * \endcode
-  */
-
-#include "src/Array/CwiseOperators.h"
-#include "src/Array/Functors.h"
-#include "src/Cholesky/LLT.h"
-#include "src/Cholesky/LDLT.h"
-
-} // namespace Eigen
-
-#define EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(MATRIXTYPE,PREFIX) \
-  PREFIX template class LLT<MATRIXTYPE>; \
-  PREFIX template class LDLT<MATRIXTYPE>
-
-#define EIGEN_CHOLESKY_MODULE_INSTANTIATE(PREFIX) \
-  EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(Matrix2f,PREFIX); \
-  EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(Matrix2d,PREFIX); \
-  EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(Matrix3f,PREFIX); \
-  EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(Matrix3d,PREFIX); \
-  EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(Matrix4f,PREFIX); \
-  EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(Matrix4d,PREFIX); \
-  EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(MatrixXf,PREFIX); \
-  EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(MatrixXd,PREFIX); \
-  EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(MatrixXcf,PREFIX); \
-  EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(MatrixXcd,PREFIX)
-
-#ifdef EIGEN_EXTERN_INSTANTIATIONS
-
-namespace Eigen {
-  EIGEN_CHOLESKY_MODULE_INSTANTIATE(extern);
-} // namespace Eigen
-#endif
-
-#include "src/Core/util/EnableMSVCWarnings.h"
-
-#endif // EIGEN_CHOLESKY_MODULE_H
diff --git a/extern/Eigen2/Eigen/Core b/extern/Eigen2/Eigen/Core
deleted file mode 100644 (file)
index 060c60f..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-#ifndef EIGEN_CORE_H
-#define EIGEN_CORE_H
-
-// first thing Eigen does: prevent MSVC from committing suicide
-#include "src/Core/util/DisableMSVCWarnings.h"
-
-#ifdef _MSC_VER
-  #include <malloc.h> // for _aligned_malloc -- need it regardless of whether vectorization is enabled
-  #if (_MSC_VER >= 1500) // 2008 or later
-    // Remember that usage of defined() in a #define is undefined by the standard.
-    // a user reported that in 64-bit mode, MSVC doesn't care to define _M_IX86_FP.
-    #if (defined(_M_IX86_FP) && (_M_IX86_FP >= 2)) || defined(_M_X64)
-      #define EIGEN_SSE2_ON_MSVC_2008_OR_LATER
-    #endif   
-  #endif
-#endif
-
-#ifdef __GNUC__
-  #define EIGEN_GNUC_AT_LEAST(x,y) ((__GNUC__>=x && __GNUC_MINOR__>=y) || __GNUC__>x)
-#else
-  #define EIGEN_GNUC_AT_LEAST(x,y) 0
-#endif
-
-// Remember that usage of defined() in a #define is undefined by the standard
-#if (defined __SSE2__) && ( (!defined __GNUC__) || EIGEN_GNUC_AT_LEAST(4,2) )
-  #define EIGEN_SSE2_BUT_NOT_OLD_GCC
-#endif
-
-#ifndef EIGEN_DONT_VECTORIZE
-  #if defined (EIGEN_SSE2_BUT_NOT_OLD_GCC) || defined(EIGEN_SSE2_ON_MSVC_2008_OR_LATER)
-    #define EIGEN_VECTORIZE
-    #define EIGEN_VECTORIZE_SSE
-    #include <emmintrin.h>
-    #include <xmmintrin.h>
-    #ifdef __SSE3__
-      #include <pmmintrin.h>
-    #endif
-    #ifdef __SSSE3__
-      #include <tmmintrin.h>
-    #endif
-  #elif defined __ALTIVEC__
-    #define EIGEN_VECTORIZE
-    #define EIGEN_VECTORIZE_ALTIVEC
-    #include <altivec.h>
-    // We need to #undef all these ugly tokens defined in <altivec.h>
-    // => use __vector instead of vector
-    #undef bool
-    #undef vector
-    #undef pixel
-  #endif
-#endif
-
-#include <cstdlib>
-#include <cmath>
-#include <complex>
-#include <cassert>
-#include <functional>
-#include <iostream>
-#include <cstring>
-#include <string>
-#include <limits>
-#include <cstddef>
-
-#if (defined(_CPPUNWIND) || defined(__EXCEPTIONS)) && !defined(EIGEN_NO_EXCEPTIONS)
-  #define EIGEN_EXCEPTIONS
-#endif
-
-#ifdef EIGEN_EXCEPTIONS
-  #include <new>
-#endif
-
-// this needs to be done after all possible windows C header includes and before any Eigen source includes
-// (system C++ includes are supposed to be able to deal with this already):
-// windows.h defines min and max macros which would make Eigen fail to compile.
-#if defined(min) || defined(max)
-#error The preprocessor symbols 'min' or 'max' are defined. If you are compiling on Windows, do #define NOMINMAX to prevent windows.h from defining these symbols.
-#endif
-
-namespace Eigen {
-
-/** \defgroup Core_Module Core module
-  * This is the main module of Eigen providing dense matrix and vector support
-  * (both fixed and dynamic size) with all the features corresponding to a BLAS library
-  * and much more...
-  *
-  * \code
-  * #include <Eigen/Core>
-  * \endcode
-  */
-
-#include "src/Core/util/Macros.h"
-#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/Memory.h"
-
-#include "src/Core/NumTraits.h"
-#include "src/Core/MathFunctions.h"
-#include "src/Core/GenericPacketMath.h"
-
-#if defined EIGEN_VECTORIZE_SSE
-  #include "src/Core/arch/SSE/PacketMath.h"
-#elif defined EIGEN_VECTORIZE_ALTIVEC
-  #include "src/Core/arch/AltiVec/PacketMath.h"
-#endif
-
-#ifndef EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD
-#define EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD 16
-#endif
-
-#include "src/Core/Functors.h"
-#include "src/Core/MatrixBase.h"
-#include "src/Core/Coeffs.h"
-
-#ifndef EIGEN_PARSED_BY_DOXYGEN // work around Doxygen bug triggered by Assign.h r814874
-                                // at least confirmed with Doxygen 1.5.5 and 1.5.6
-  #include "src/Core/Assign.h"
-#endif
-
-#include "src/Core/MatrixStorage.h"
-#include "src/Core/NestByValue.h"
-#include "src/Core/Flagged.h"
-#include "src/Core/Matrix.h"
-#include "src/Core/Cwise.h"
-#include "src/Core/CwiseBinaryOp.h"
-#include "src/Core/CwiseUnaryOp.h"
-#include "src/Core/CwiseNullaryOp.h"
-#include "src/Core/Dot.h"
-#include "src/Core/Product.h"
-#include "src/Core/DiagonalProduct.h"
-#include "src/Core/SolveTriangular.h"
-#include "src/Core/MapBase.h"
-#include "src/Core/Map.h"
-#include "src/Core/Block.h"
-#include "src/Core/Minor.h"
-#include "src/Core/Transpose.h"
-#include "src/Core/DiagonalMatrix.h"
-#include "src/Core/DiagonalCoeffs.h"
-#include "src/Core/Sum.h"
-#include "src/Core/Redux.h"
-#include "src/Core/Visitor.h"
-#include "src/Core/Fuzzy.h"
-#include "src/Core/IO.h"
-#include "src/Core/Swap.h"
-#include "src/Core/CommaInitializer.h"
-#include "src/Core/Part.h"
-#include "src/Core/CacheFriendlyProduct.h"
-
-} // namespace Eigen
-
-#include "src/Core/util/EnableMSVCWarnings.h"
-
-#endif // EIGEN_CORE_H
diff --git a/extern/Eigen2/Eigen/Eigen b/extern/Eigen2/Eigen/Eigen
deleted file mode 100644 (file)
index 654c8dc..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "Dense"
-#include "Sparse"
diff --git a/extern/Eigen2/Eigen/Geometry b/extern/Eigen2/Eigen/Geometry
deleted file mode 100644 (file)
index 617b25e..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#ifndef EIGEN_GEOMETRY_MODULE_H
-#define EIGEN_GEOMETRY_MODULE_H
-
-#include "Core"
-
-#include "src/Core/util/DisableMSVCWarnings.h"
-
-#include "Array"
-#include <limits>
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-
-namespace Eigen {
-
-/** \defgroup Geometry_Module Geometry module
-  *
-  * \nonstableyet
-  *
-  * This module provides support for:
-  *  - fixed-size homogeneous transformations
-  *  - translation, scaling, 2D and 3D rotations
-  *  - quaternions
-  *  - \ref MatrixBase::cross() "cross product"
-  *  - \ref MatrixBase::unitOrthogonal() "orthognal vector generation"
-  *  - some linear components: parametrized-lines and hyperplanes
-  *
-  * \code
-  * #include <Eigen/Geometry>
-  * \endcode
-  */
-
-#include "src/Geometry/OrthoMethods.h"
-#include "src/Geometry/RotationBase.h"
-#include "src/Geometry/Rotation2D.h"
-#include "src/Geometry/Quaternion.h"
-#include "src/Geometry/AngleAxis.h"
-#include "src/Geometry/EulerAngles.h"
-#include "src/Geometry/Transform.h"
-#include "src/Geometry/Translation.h"
-#include "src/Geometry/Scaling.h"
-#include "src/Geometry/Hyperplane.h"
-#include "src/Geometry/ParametrizedLine.h"
-#include "src/Geometry/AlignedBox.h"
-
-} // namespace Eigen
-
-#include "src/Core/util/EnableMSVCWarnings.h"
-
-#endif // EIGEN_GEOMETRY_MODULE_H
diff --git a/extern/Eigen2/Eigen/LeastSquares b/extern/Eigen2/Eigen/LeastSquares
deleted file mode 100644 (file)
index 573a13c..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef EIGEN_REGRESSION_MODULE_H
-#define EIGEN_REGRESSION_MODULE_H
-
-#include "Core"
-
-#include "src/Core/util/DisableMSVCWarnings.h"
-
-#include "QR"
-#include "Geometry"
-
-namespace Eigen {
-
-/** \defgroup LeastSquares_Module LeastSquares module
-  * This module provides linear regression and related features.
-  *
-  * \code
-  * #include <Eigen/LeastSquares>
-  * \endcode
-  */
-
-#include "src/LeastSquares/LeastSquares.h"
-
-} // namespace Eigen
-
-#include "src/Core/util/EnableMSVCWarnings.h"
-
-#endif // EIGEN_REGRESSION_MODULE_H
diff --git a/extern/Eigen2/Eigen/QR b/extern/Eigen2/Eigen/QR
deleted file mode 100644 (file)
index 97907d1..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-#ifndef EIGEN_QR_MODULE_H
-#define EIGEN_QR_MODULE_H
-
-#include "Core"
-
-#include "src/Core/util/DisableMSVCWarnings.h"
-
-#include "Cholesky"
-
-// Note that EIGEN_HIDE_HEAVY_CODE has to be defined per module
-#if (defined EIGEN_EXTERN_INSTANTIATIONS) && (EIGEN_EXTERN_INSTANTIATIONS>=2)
-  #ifndef EIGEN_HIDE_HEAVY_CODE
-  #define EIGEN_HIDE_HEAVY_CODE
-  #endif
-#elif defined EIGEN_HIDE_HEAVY_CODE
-  #undef EIGEN_HIDE_HEAVY_CODE
-#endif
-
-namespace Eigen {
-
-/** \defgroup QR_Module QR module
-  *
-  * \nonstableyet
-  *
-  * This module mainly provides QR decomposition and an eigen value solver.
-  * This module also provides some MatrixBase methods, including:
-  *  - MatrixBase::qr(),
-  *  - MatrixBase::eigenvalues(),
-  *  - MatrixBase::operatorNorm()
-  *
-  * \code
-  * #include <Eigen/QR>
-  * \endcode
-  */
-
-#include "src/QR/QR.h"
-#include "src/QR/Tridiagonalization.h"
-#include "src/QR/EigenSolver.h"
-#include "src/QR/SelfAdjointEigenSolver.h"
-#include "src/QR/HessenbergDecomposition.h"
-
-// declare all classes for a given matrix type
-#define EIGEN_QR_MODULE_INSTANTIATE_TYPE(MATRIXTYPE,PREFIX) \
-  PREFIX template class QR<MATRIXTYPE>; \
-  PREFIX template class Tridiagonalization<MATRIXTYPE>; \
-  PREFIX template class HessenbergDecomposition<MATRIXTYPE>; \
-  PREFIX template class SelfAdjointEigenSolver<MATRIXTYPE>
-
-// removed because it does not support complex yet
-//  PREFIX template class EigenSolver<MATRIXTYPE>
-
-// declare all class for all types
-#define EIGEN_QR_MODULE_INSTANTIATE(PREFIX) \
-  EIGEN_QR_MODULE_INSTANTIATE_TYPE(Matrix2f,PREFIX); \
-  EIGEN_QR_MODULE_INSTANTIATE_TYPE(Matrix2d,PREFIX); \
-  EIGEN_QR_MODULE_INSTANTIATE_TYPE(Matrix3f,PREFIX); \
-  EIGEN_QR_MODULE_INSTANTIATE_TYPE(Matrix3d,PREFIX); \
-  EIGEN_QR_MODULE_INSTANTIATE_TYPE(Matrix4f,PREFIX); \
-  EIGEN_QR_MODULE_INSTANTIATE_TYPE(Matrix4d,PREFIX); \
-  EIGEN_QR_MODULE_INSTANTIATE_TYPE(MatrixXf,PREFIX); \
-  EIGEN_QR_MODULE_INSTANTIATE_TYPE(MatrixXd,PREFIX); \
-  EIGEN_QR_MODULE_INSTANTIATE_TYPE(MatrixXcf,PREFIX); \
-  EIGEN_QR_MODULE_INSTANTIATE_TYPE(MatrixXcd,PREFIX)
-
-#ifdef EIGEN_EXTERN_INSTANTIATIONS
-  EIGEN_QR_MODULE_INSTANTIATE(extern);
-#endif // EIGEN_EXTERN_INSTANTIATIONS
-
-} // namespace Eigen
-
-#include "src/Core/util/EnableMSVCWarnings.h"
-
-#endif // EIGEN_QR_MODULE_H
diff --git a/extern/Eigen2/Eigen/QtAlignedMalloc b/extern/Eigen2/Eigen/QtAlignedMalloc
deleted file mode 100644 (file)
index fde2273..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-
-#ifndef EIGEN_QTMALLOC_MODULE_H
-#define EIGEN_QTMALLOC_MODULE_H
-
-#include "Core"
-
-#if (!EIGEN_MALLOC_ALREADY_ALIGNED)
-
-inline void *qMalloc(size_t size)
-{
-  return Eigen::ei_aligned_malloc(size);
-}
-
-inline void qFree(void *ptr)
-{
-  Eigen::ei_aligned_free(ptr);
-}
-
-inline void *qRealloc(void *ptr, size_t size)
-{
-  void* newPtr = Eigen::ei_aligned_malloc(size);
-  memcpy(newPtr, ptr, size);
-  Eigen::ei_aligned_free(ptr);
-  return newPtr;
-}
-
-#endif
-
-#endif // EIGEN_QTMALLOC_MODULE_H
diff --git a/extern/Eigen2/Eigen/Sparse b/extern/Eigen2/Eigen/Sparse
deleted file mode 100644 (file)
index 536c284..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-#ifndef EIGEN_SPARSE_MODULE_H
-#define EIGEN_SPARSE_MODULE_H
-
-#include "Core"
-
-#include "src/Core/util/DisableMSVCWarnings.h"
-
-#include <vector>
-#include <map>
-#include <cstdlib>
-#include <cstring>
-#include <algorithm>
-
-#ifdef EIGEN_GOOGLEHASH_SUPPORT
-  #include <google/dense_hash_map>
-#endif
-
-#ifdef EIGEN_CHOLMOD_SUPPORT
-  extern "C" {
-    #include "cholmod.h"
-  }
-#endif
-
-#ifdef EIGEN_TAUCS_SUPPORT
-  // taucs.h declares a lot of mess
-  #define isnan
-  #define finite
-  #define isinf
-  extern "C" {
-    #include "taucs.h"
-  }
-  #undef isnan
-  #undef finite
-  #undef isinf
-
-  #ifdef min
-    #undef min
-  #endif
-  #ifdef max
-    #undef max
-  #endif
-  #ifdef complex
-    #undef complex
-  #endif
-#endif
-
-#ifdef EIGEN_SUPERLU_SUPPORT
-  typedef int int_t;
-  #include "superlu/slu_Cnames.h"
-  #include "superlu/supermatrix.h"
-  #include "superlu/slu_util.h"
-
-  namespace SuperLU_S {
-  #include "superlu/slu_sdefs.h"
-  }
-  namespace SuperLU_D {
-  #include "superlu/slu_ddefs.h"
-  }
-  namespace SuperLU_C {
-  #include "superlu/slu_cdefs.h"
-  }
-  namespace SuperLU_Z {
-  #include "superlu/slu_zdefs.h"
-  }
-  namespace Eigen { struct SluMatrix; }
-#endif
-
-#ifdef EIGEN_UMFPACK_SUPPORT
-  #include "umfpack.h"
-#endif
-
-namespace Eigen {
-
-/** \defgroup Sparse_Module Sparse module
-  *
-  * \nonstableyet
-  *
-  * See the \ref TutorialSparse "Sparse tutorial"
-  *
-  * \code
-  * #include <Eigen/QR>
-  * \endcode
-  */
-
-#include "src/Sparse/SparseUtil.h"
-#include "src/Sparse/SparseMatrixBase.h"
-#include "src/Sparse/CompressedStorage.h"
-#include "src/Sparse/AmbiVector.h"
-#include "src/Sparse/RandomSetter.h"
-#include "src/Sparse/SparseBlock.h"
-#include "src/Sparse/SparseMatrix.h"
-#include "src/Sparse/DynamicSparseMatrix.h"
-#include "src/Sparse/MappedSparseMatrix.h"
-#include "src/Sparse/SparseVector.h"
-#include "src/Sparse/CoreIterators.h"
-#include "src/Sparse/SparseTranspose.h"
-#include "src/Sparse/SparseCwise.h"
-#include "src/Sparse/SparseCwiseUnaryOp.h"
-#include "src/Sparse/SparseCwiseBinaryOp.h"
-#include "src/Sparse/SparseDot.h"
-#include "src/Sparse/SparseAssign.h"
-#include "src/Sparse/SparseRedux.h"
-#include "src/Sparse/SparseFuzzy.h"
-#include "src/Sparse/SparseFlagged.h"
-#include "src/Sparse/SparseProduct.h"
-#include "src/Sparse/SparseDiagonalProduct.h"
-#include "src/Sparse/TriangularSolver.h"
-#include "src/Sparse/SparseLLT.h"
-#include "src/Sparse/SparseLDLT.h"
-#include "src/Sparse/SparseLU.h"
-
-#ifdef EIGEN_CHOLMOD_SUPPORT
-# include "src/Sparse/CholmodSupport.h"
-#endif
-
-#ifdef EIGEN_TAUCS_SUPPORT
-# include "src/Sparse/TaucsSupport.h"
-#endif
-
-#ifdef EIGEN_SUPERLU_SUPPORT
-# include "src/Sparse/SuperLUSupport.h"
-#endif
-
-#ifdef EIGEN_UMFPACK_SUPPORT
-# include "src/Sparse/UmfPackSupport.h"
-#endif
-
-} // namespace Eigen
-
-#include "src/Core/util/EnableMSVCWarnings.h"
-
-#endif // EIGEN_SPARSE_MODULE_H
diff --git a/extern/Eigen2/Eigen/StdVector b/extern/Eigen2/Eigen/StdVector
deleted file mode 100644 (file)
index c0744d6..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-#ifdef EIGEN_USE_NEW_STDVECTOR
-#include "NewStdVector"
-#else
-
-#ifndef EIGEN_STDVECTOR_MODULE_H
-#define EIGEN_STDVECTOR_MODULE_H
-
-#if defined(_GLIBCXX_VECTOR) || defined(_VECTOR_)
-#error you must include <Eigen/StdVector> before <vector>. Also note that <Eigen/Sparse> includes <vector>, so it must be included after <Eigen/StdVector> too.
-#endif                                                    
-
-#ifndef EIGEN_GNUC_AT_LEAST
-#ifdef __GNUC__
-  #define EIGEN_GNUC_AT_LEAST(x,y) ((__GNUC__>=x && __GNUC_MINOR__>=y) || __GNUC__>x)
-#else
-  #define EIGEN_GNUC_AT_LEAST(x,y) 0
-#endif
-#endif
-
-#define vector std_vector
-#include <vector>        
-#undef vector
-
-namespace Eigen {
-
-template<typename T> class aligned_allocator;
-
-// meta programming to determine if a class has a given member
-struct ei_does_not_have_aligned_operator_new_marker_sizeof {int a[1];};
-struct ei_has_aligned_operator_new_marker_sizeof {int a[2];};
-
-template<typename ClassType>
-struct ei_has_aligned_operator_new {
-    template<typename T>
-    static ei_has_aligned_operator_new_marker_sizeof
-    test(T const *, typename T::ei_operator_new_marker_type const * = 0);
-    static ei_does_not_have_aligned_operator_new_marker_sizeof
-    test(...);
-
-    // note that the following indirection is needed for gcc-3.3
-    enum {ret =  sizeof(test(static_cast<ClassType*>(0))) 
-              == sizeof(ei_has_aligned_operator_new_marker_sizeof) };
-};
-
-#ifdef _MSC_VER
-  
-  // sometimes, MSVC detects, at compile time, that the argument x
-  // in std::vector::resize(size_t s,T x) won't be aligned and generate an error
-  // even if this function is never called. Whence this little wrapper.
-  #define _EIGEN_WORKAROUND_MSVC_STD_VECTOR(T) Eigen::ei_workaround_msvc_std_vector<T>
-  template<typename T> struct ei_workaround_msvc_std_vector : public T
-  {
-    inline ei_workaround_msvc_std_vector() : T() {}
-    inline ei_workaround_msvc_std_vector(const T& other) : T(other) {}
-    inline operator T& () { return *static_cast<T*>(this); }
-    inline operator const T& () const { return *static_cast<const T*>(this); }
-    template<typename OtherT>
-    inline T& operator=(const OtherT& other)
-    { T::operator=(other); return *this; }
-    inline ei_workaround_msvc_std_vector& operator=(const ei_workaround_msvc_std_vector& other)
-    { T::operator=(other); return *this; }
-  };
-
-#else
-
-  #define _EIGEN_WORKAROUND_MSVC_STD_VECTOR(T) T
-
-#endif
-
-}
-
-namespace std {
-
-#define EIGEN_STD_VECTOR_SPECIALIZATION_BODY \
-  public:  \
-    typedef T value_type; \
-    typedef typename vector_base::allocator_type allocator_type; \
-    typedef typename vector_base::size_type size_type;  \
-    typedef typename vector_base::iterator iterator;  \
-    explicit vector(const allocator_type& __a = allocator_type()) : vector_base(__a) {}  \
-    vector(const vector& c) : vector_base(c) {}  \
-    vector(size_type num, const value_type& val = value_type()) : vector_base(num, val) {} \
-    vector(iterator start, iterator end) : vector_base(start, end) {}  \
-    vector& operator=(const vector& __x) {  \
-      vector_base::operator=(__x);  \
-      return *this;  \
-    }
-
-template<typename T,
-         typename AllocT = std::allocator<T>,
-         bool HasAlignedNew = Eigen::ei_has_aligned_operator_new<T>::ret>
-class vector : public std::std_vector<T,AllocT>
-{
-  typedef std_vector<T, AllocT> vector_base;
-  EIGEN_STD_VECTOR_SPECIALIZATION_BODY
-};
-
-template<typename T,typename DummyAlloc>
-class vector<T,DummyAlloc,true>
-  : public std::std_vector<_EIGEN_WORKAROUND_MSVC_STD_VECTOR(T),
-                           Eigen::aligned_allocator<_EIGEN_WORKAROUND_MSVC_STD_VECTOR(T)> >          
-{
-  typedef std_vector<_EIGEN_WORKAROUND_MSVC_STD_VECTOR(T),
-                     Eigen::aligned_allocator<_EIGEN_WORKAROUND_MSVC_STD_VECTOR(T)> > vector_base;
-  EIGEN_STD_VECTOR_SPECIALIZATION_BODY
-
-  void resize(size_type __new_size)
-  { resize(__new_size, T()); }     
-
-  #if defined(_VECTOR_)
-  // workaround MSVC std::vector implementation
-  void resize(size_type __new_size, const value_type& __x)                 
-  {                                                              
-    if (vector_base::size() < __new_size)                                 
-      vector_base::_Insert_n(vector_base::end(), __new_size - vector_base::size(), __x);
-    else if (__new_size < vector_base::size())
-      vector_base::erase(vector_base::begin() + __new_size, vector_base::end());
-  }
-  #elif defined(_GLIBCXX_VECTOR) && EIGEN_GNUC_AT_LEAST(4,2)
-  // workaround GCC std::vector implementation
-  void resize(size_type __new_size, const value_type& __x)
-  {                                              
-    if (__new_size < vector_base::size())               
-      vector_base::_M_erase_at_end(this->_M_impl._M_start + __new_size);
-    else                       
-      vector_base::insert(vector_base::end(), __new_size - vector_base::size(), __x); 
-  }                                                              
-  #elif defined(_GLIBCXX_VECTOR) && EIGEN_GNUC_AT_LEAST(4,1)
-  void resize(size_type __new_size, const value_type& __x)
-  {
-    if (__new_size < vector_base::size())
-      vector_base::erase(vector_base::begin() + __new_size, vector_base::end());
-    else
-      vector_base::insert(vector_base::end(), __new_size - vector_base::size(), __x);
-  }
-  #else
-  // Before gcc-4.1 we already have: std::vector::resize(size_type,const T&),
-  // so no need for a workaround !
-  using vector_base::resize;
-  #endif  
-};
-
-}
-
-#endif // EIGEN_STDVECTOR_MODULE_H
-
-#endif // EIGEN_USE_NEW_STDVECTOR
\ No newline at end of file
diff --git a/extern/Eigen2/Eigen/src/Array/CwiseOperators.h b/extern/Eigen2/Eigen/src/Array/CwiseOperators.h
deleted file mode 100644 (file)
index 4b6346d..0000000
+++ /dev/null
@@ -1,453 +0,0 @@
-// This file is part of Eigen, a lightweight C++ template library
-// for linear algebra. Eigen itself is part of the KDE project.
-//
-// Copyright (C) 2008 Gael Guennebaud <g.gael@free.fr>
-//
-// Eigen is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 3 of the License, or (at your option) any later version.
-//
-// Alternatively, you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as
-// published by the Free Software Foundation; either version 2 of
-// the License, or (at your option) any later version.
-//
-// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
-// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License and a copy of the GNU General Public License along with
-// Eigen. If not, see <http://www.gnu.org/licenses/>.
-
-#ifndef EIGEN_ARRAY_CWISE_OPERATORS_H
-#define EIGEN_ARRAY_CWISE_OPERATORS_H
-
-// -- unary operators --
-
-/** \array_module
-  * 
-  * \returns an expression of the coefficient-wise square root of *this.
-  *
-  * Example: \include Cwise_sqrt.cpp
-  * Output: \verbinclude Cwise_sqrt.out
-  *
-  * \sa pow(), square()
-  */
-template<typename ExpressionType>
-inline const EIGEN_CWISE_UNOP_RETURN_TYPE(ei_scalar_sqrt_op)
-Cwise<ExpressionType>::sqrt() const
-{
-  return _expression();
-}
-
-/** \array_module
-  * 
-  * \returns an expression of the coefficient-wise exponential of *this.
-  *
-  * Example: \include Cwise_exp.cpp
-  * Output: \verbinclude Cwise_exp.out
-  *
-  * \sa pow(), log(), sin(), cos()
-  */
-template<typename ExpressionType>
-inline const EIGEN_CWISE_UNOP_RETURN_TYPE(ei_scalar_exp_op)
-Cwise<ExpressionType>::exp() const
-{
-  return _expression();
-}
-
-/** \array_module
-  * 
-  * \returns an expression of the coefficient-wise logarithm of *this.
-  *
-  * Example: \include Cwise_log.cpp
-  * Output: \verbinclude Cwise_log.out
-  *
-  * \sa exp()
-  */
-template<typename ExpressionType>
-inline const EIGEN_CWISE_UNOP_RETURN_TYPE(ei_scalar_log_op)
-Cwise<ExpressionType>::log() const
-{
-  return _expression();
-}
-
-/** \array_module
-  * 
-  * \returns an expression of the coefficient-wise cosine of *this.
-  *
-  * Example: \include Cwise_cos.cpp
-  * Output: \verbinclude Cwise_cos.out
-  *
-  * \sa sin(), exp()
-  */
-template<typename ExpressionType>
-inline const EIGEN_CWISE_UNOP_RETURN_TYPE(ei_scalar_cos_op)
-Cwise<ExpressionType>::cos() const
-{
-  return _expression();
-}
-
-
-/** \array_module
-  * 
-  * \returns an expression of the coefficient-wise sine of *this.
-  *
-  * Example: \include Cwise_sin.cpp
-  * Output: \verbinclude Cwise_sin.out
-  *
-  * \sa cos(), exp()
-  */
-template<typename ExpressionType>
-inline const EIGEN_CWISE_UNOP_RETURN_TYPE(ei_scalar_sin_op)
-Cwise<ExpressionType>::sin() const
-{
-  return _expression();
-}
-
-
-/** \array_module
-  * 
-  * \returns an expression of the coefficient-wise power of *this to the given exponent.
-  *
-  * Example: \include Cwise_pow.cpp
-  * Output: \verbinclude Cwise_pow.out
-  *
-  * \sa exp(), log()
-  */
-template<typename ExpressionType>
-inline const EIGEN_CWISE_UNOP_RETURN_TYPE(ei_scalar_pow_op)
-Cwise<ExpressionType>::pow(const Scalar& exponent) const
-{
-  return EIGEN_CWISE_UNOP_RETURN_TYPE(ei_scalar_pow_op)(_expression(), ei_scalar_pow_op<Scalar>(exponent));
-}
-
-
-/** \array_module
-  * 
-  * \returns an expression of the coefficient-wise inverse of *this.
-  *
-  * Example: \include Cwise_inverse.cpp
-  * Output: \verbinclude Cwise_inverse.out
-  *
-  * \sa operator/(), operator*()
-  */
-template<typename ExpressionType>
-inline const EIGEN_CWISE_UNOP_RETURN_TYPE(ei_scalar_inverse_op)
-Cwise<ExpressionType>::inverse() const
-{
-  return _expression();
-}
-
-/** \array_module
-  *
-  * \returns an expression of the coefficient-wise square of *this.
-  *
-  * Example: \include Cwise_square.cpp
-  * Output: \verbinclude Cwise_square.out
-  *
-  * \sa operator/(), operator*(), abs2()
-  */
-template<typename ExpressionType>
-inline const EIGEN_CWISE_UNOP_RETURN_TYPE(ei_scalar_square_op)
-Cwise<ExpressionType>::square() const
-{
-  return _expression();
-}
-
-/** \array_module
-  *
-  * \returns an expression of the coefficient-wise cube of *this.
-  *
-  * Example: \include Cwise_cube.cpp
-  * Output: \verbinclude Cwise_cube.out
-  *
-  * \sa square(), pow()
-  */
-template<typename ExpressionType>
-inline const EIGEN_CWISE_UNOP_RETURN_TYPE(ei_scalar_cube_op)
-Cwise<ExpressionType>::cube() const
-{
-  return _expression();
-}
-
-
-// -- binary operators --
-
-/** \array_module
-  * 
-  * \returns an expression of the coefficient-wise \< operator of *this and \a other
-  *
-  * Example: \include Cwise_less.cpp
-  * Output: \verbinclude Cwise_less.out
-  *
-  * \sa MatrixBase::all(), MatrixBase::any(), operator>(), operator<=()
-  */
-template<typename ExpressionType>
-template<typename OtherDerived>
-inline const EIGEN_CWISE_BINOP_RETURN_TYPE(std::less)
-Cwise<ExpressionType>::operator<(const MatrixBase<OtherDerived> &other) const
-{
-  return EIGEN_CWISE_BINOP_RETURN_TYPE(std::less)(_expression(), other.derived());
-}
-
-/** \array_module
-  * 
-  * \returns an expression of the coefficient-wise \<= operator of *this and \a other
-  *
-  * Example: \include Cwise_less_equal.cpp
-  * Output: \verbinclude Cwise_less_equal.out
-  *
-  * \sa MatrixBase::all(), MatrixBase::any(), operator>=(), operator<()
-  */
-template<typename ExpressionType>
-template<typename OtherDerived>
-inline const EIGEN_CWISE_BINOP_RETURN_TYPE(std::less_equal)
-Cwise<ExpressionType>::operator<=(const MatrixBase<OtherDerived> &other) const
-{
-  return EIGEN_CWISE_BINOP_RETURN_TYPE(std::less_equal)(_expression(), other.derived());
-}
-
-/** \array_module
-  * 
-  * \returns an expression of the coefficient-wise \> operator of *this and \a other
-  *
-  * Example: \include Cwise_greater.cpp
-  * Output: \verbinclude Cwise_greater.out
-  *
-  * \sa MatrixBase::all(), MatrixBase::any(), operator>=(), operator<()
-  */
-template<typename ExpressionType>
-template<typename OtherDerived>
-inline const EIGEN_CWISE_BINOP_RETURN_TYPE(std::greater)
-Cwise<ExpressionType>::operator>(const MatrixBase<OtherDerived> &other) const
-{
-  return EIGEN_CWISE_BINOP_RETURN_TYPE(std::greater)(_expression(), other.derived());
-}
-
-/** \array_module
-  * 
-  * \returns an expression of the coefficient-wise \>= operator of *this and \a other
-  *
-  * Example: \include Cwise_greater_equal.cpp
-  * Output: \verbinclude Cwise_greater_equal.out
-  *
-  * \sa MatrixBase::all(), MatrixBase::any(), operator>(), operator<=()
-  */
-template<typename ExpressionType>
-template<typename OtherDerived>
-inline const EIGEN_CWISE_BINOP_RETURN_TYPE(std::greater_equal)
-Cwise<ExpressionType>::operator>=(const MatrixBase<OtherDerived> &other) const
-{
-  return EIGEN_CWISE_BINOP_RETURN_TYPE(std::greater_equal)(_expression(), other.derived());
-}
-
-/** \array_module
-  * 
-  * \returns an expression of the coefficient-wise == operator of *this and \a other
-  *
-  * \warning this performs an exact comparison, which is generally a bad idea with floating-point types.
-  * In order to check for equality between two vectors or matrices with floating-point coefficients, it is
-  * generally a far better idea to use a fuzzy comparison as provided by MatrixBase::isApprox() and
-  * MatrixBase::isMuchSmallerThan().
-  *
-  * Example: \include Cwise_equal_equal.cpp
-  * Output: \verbinclude Cwise_equal_equal.out
-  *
-  * \sa MatrixBase::all(), MatrixBase::any(), MatrixBase::isApprox(), MatrixBase::isMuchSmallerThan()
-  */
-template<typename ExpressionType>
-template<typename OtherDerived>
-inline const EIGEN_CWISE_BINOP_RETURN_TYPE(std::equal_to)
-Cwise<ExpressionType>::operator==(const MatrixBase<OtherDerived> &other) const
-{
-  return EIGEN_CWISE_BINOP_RETURN_TYPE(std::equal_to)(_expression(), other.derived());
-}
-
-/** \array_module
-  * 
-  * \returns an expression of the coefficient-wise != operator of *this and \a other
-  *
-  * \warning this performs an exact comparison, which is generally a bad idea with floating-point types.
-  * In order to check for equality between two vectors or matrices with floating-point coefficients, it is
-  * generally a far better idea to use a fuzzy comparison as provided by MatrixBase::isApprox() and
-  * MatrixBase::isMuchSmallerThan().
-  *
-  * Example: \include Cwise_not_equal.cpp
-  * Output: \verbinclude Cwise_not_equal.out
-  *
-  * \sa MatrixBase::all(), MatrixBase::any(), MatrixBase::isApprox(), MatrixBase::isMuchSmallerThan()
-  */
-template<typename ExpressionType>
-template<typename OtherDerived>
-inline const EIGEN_CWISE_BINOP_RETURN_TYPE(std::not_equal_to)
-Cwise<ExpressionType>::operator!=(const MatrixBase<OtherDerived> &other) const
-{
-  return EIGEN_CWISE_BINOP_RETURN_TYPE(std::not_equal_to)(_expression(), other.derived());
-}
-
-// comparisons to scalar value
-
-/** \array_module
-  * 
-  * \returns an expression of the coefficient-wise \< operator of *this and a scalar \a s
-  *
-  * \sa operator<(const MatrixBase<OtherDerived> &) const
-  */
-template<typename ExpressionType>
-inline const EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::less)
-Cwise<ExpressionType>::operator<(Scalar s) const
-{
-  return EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::less)(_expression(),
-            typename ExpressionType::ConstantReturnType(_expression().rows(), _expression().cols(), s));
-}
-
-/** \array_module
-  * 
-  * \returns an expression of the coefficient-wise \<= operator of *this and a scalar \a s
-  *
-  * \sa operator<=(const MatrixBase<OtherDerived> &) const
-  */
-template<typename ExpressionType>
-inline const EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::less_equal)
-Cwise<ExpressionType>::operator<=(Scalar s) const
-{
-  return EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::less_equal)(_expression(),
-            typename ExpressionType::ConstantReturnType(_expression().rows(), _expression().cols(), s));
-}
-
-/** \array_module
-  * 
-  * \returns an expression of the coefficient-wise \> operator of *this and a scalar \a s
-  *
-  * \sa operator>(const MatrixBase<OtherDerived> &) const
-  */
-template<typename ExpressionType>
-inline const EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::greater)
-Cwise<ExpressionType>::operator>(Scalar s) const
-{
-  return EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::greater)(_expression(),
-            typename ExpressionType::ConstantReturnType(_expression().rows(), _expression().cols(), s));
-}
-
-/** \array_module
-  * 
-  * \returns an expression of the coefficient-wise \>= operator of *this and a scalar \a s
-  *
-  * \sa operator>=(const MatrixBase<OtherDerived> &) const
-  */
-template<typename ExpressionType>
-inline const EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::greater_equal)
-Cwise<ExpressionType>::operator>=(Scalar s) const
-{
-  return EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::greater_equal)(_expression(),
-            typename ExpressionType::ConstantReturnType(_expression().rows(), _expression().cols(), s));
-}
-
-/** \array_module
-  * 
-  * \returns an expression of the coefficient-wise == operator of *this and a scalar \a s
-  *
-  * \warning this performs an exact comparison, which is generally a bad idea with floating-point types.
-  * In order to check for equality between two vectors or matrices with floating-point coefficients, it is
-  * generally a far better idea to use a fuzzy comparison as provided by MatrixBase::isApprox() and
-  * MatrixBase::isMuchSmallerThan().
-  *
-  * \sa operator==(const MatrixBase<OtherDerived> &) const
-  */
-template<typename ExpressionType>
-inline const EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::equal_to)
-Cwise<ExpressionType>::operator==(Scalar s) const
-{
-  return EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::equal_to)(_expression(),
-            typename ExpressionType::ConstantReturnType(_expression().rows(), _expression().cols(), s));
-}
-
-/** \array_module
-  * 
-  * \returns an expression of the coefficient-wise != operator of *this and a scalar \a s
-  *
-  * \warning this performs an exact comparison, which is generally a bad idea with floating-point types.
-  * In order to check for equality between two vectors or matrices with floating-point coefficients, it is
-  * generally a far better idea to use a fuzzy comparison as provided by MatrixBase::isApprox() and
-  * MatrixBase::isMuchSmallerThan().
-  *
-  * \sa operator!=(const MatrixBase<OtherDerived> &) const
-  */
-template<typename ExpressionType>
-inline const EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::not_equal_to)
-Cwise<ExpressionType>::operator!=(Scalar s) const
-{
-  return EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::not_equal_to)(_expression(),
-            typename ExpressionType::ConstantReturnType(_expression().rows(), _expression().cols(), s));
-}
-
-// scalar addition
-
-/** \array_module
-  *
-  * \returns an expression of \c *this with each coeff incremented by the constant \a scalar
-  *
-  * Example: \include Cwise_plus.cpp
-  * Output: \verbinclude Cwise_plus.out
-  *
-  * \sa operator+=(), operator-()
-  */
-template<typename ExpressionType>
-inline const typename Cwise<ExpressionType>::ScalarAddReturnType
-Cwise<ExpressionType>::operator+(const Scalar& scalar) const
-{
-  return typename Cwise<ExpressionType>::ScalarAddReturnType(m_matrix, ei_scalar_add_op<Scalar>(scalar));
-}
-
-/** \array_module
-  *
-  * Adds the given \a scalar to each coeff of this expression.
-  *
-  * Example: \include Cwise_plus_equal.cpp
-  * Output: \verbinclude Cwise_plus_equal.out
-  *
-  * \sa operator+(), operator-=()
-  */
-template<typename ExpressionType>
-inline ExpressionType& Cwise<ExpressionType>::operator+=(const Scalar& scalar)
-{
-  return m_matrix.const_cast_derived() = *this + scalar;
-}
-
-/** \array_module
-  *
-  * \returns an expression of \c *this with each coeff decremented by the constant \a scalar
-  *
-  * Example: \include Cwise_minus.cpp
-  * Output: \verbinclude Cwise_minus.out
-  *
-  * \sa operator+(), operator-=()
-  */
-template<typename ExpressionType>
-inline const typename Cwise<ExpressionType>::ScalarAddReturnType
-Cwise<ExpressionType>::operator-(const Scalar& scalar) const
-{
-  return *this + (-scalar);
-}
-
-/** \array_module
-  *
-  * Substracts the given \a scalar from each coeff of this expression.
-  *
-  * Example: \include Cwise_minus_equal.cpp
-  * Output: \verbinclude Cwise_minus_equal.out
-  *
-  * \sa operator+=(), operator-()
-  */
-
-template<typename ExpressionType>
-inline ExpressionType& Cwise<ExpressionType>::operator-=(const Scalar& scalar)
-{
-  return m_matrix.const_cast_derived() = *this - scalar;
-}
-
-#endif // EIGEN_ARRAY_CWISE_OPERATORS_H
diff --git a/extern/Eigen2/Eigen/src/Array/Functors.h b/extern/Eigen2/Eigen/src/Array/Functors.h
deleted file mode 100644 (file)
index c2c325a..0000000
+++ /dev/null
@@ -1,309 +0,0 @@
-// This file is part of Eigen, a lightweight C++ template library
-// for linear algebra. Eigen itself is part of the KDE project.
-//
-// Copyright (C) 2008 Gael Guennebaud <g.gael@free.fr>
-//
-// Eigen is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 3 of the License, or (at your option) any later version.
-//
-// Alternatively, you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as
-// published by the Free Software Foundation; either version 2 of
-// the License, or (at your option) any later version.
-//
-// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
-// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License and a copy of the GNU General Public License along with
-// Eigen. If not, see <http://www.gnu.org/licenses/>.
-
-#ifndef EIGEN_ARRAY_FUNCTORS_H
-#define EIGEN_ARRAY_FUNCTORS_H
-
-/** \internal
-  * \array_module
-  *
-  * \brief Template functor to add a scalar to a fixed other one
-  *
-  * \sa class CwiseUnaryOp, Array::operator+
-  */
-/* If you wonder why doing the ei_pset1() in packetOp() is an optimization check ei_scalar_multiple_op */
-template<typename Scalar>
-struct ei_scalar_add_op {
-  typedef typename ei_packet_traits<Scalar>::type PacketScalar;
-  // FIXME default copy constructors seems bugged with std::complex<>
-  inline ei_scalar_add_op(const ei_scalar_add_op& other) : m_other(other.m_other) { }
-  inline ei_scalar_add_op(const Scalar& other) : m_other(other) { }
-  inline Scalar operator() (const Scalar& a) const { return a + m_other; }
-  inline const PacketScalar packetOp(const PacketScalar& a) const
-  { return ei_padd(a, ei_pset1(m_other)); }
-  const Scalar m_other;
-private:
-  ei_scalar_add_op& operator=(const ei_scalar_add_op&);
-};
-template<typename Scalar>
-struct ei_functor_traits<ei_scalar_add_op<Scalar> >
-{ enum { Cost = NumTraits<Scalar>::AddCost, PacketAccess = ei_packet_traits<Scalar>::size>1 }; };
-
-/** \internal
-  *
-  * \array_module
-  *
-  * \brief Template functor to compute the square root of a scalar
-  *
-  * \sa class CwiseUnaryOp, Cwise::sqrt()
-  */
-template<typename Scalar> struct ei_scalar_sqrt_op EIGEN_EMPTY_STRUCT {
-  inline const Scalar operator() (const Scalar& a) const { return ei_sqrt(a); }
-};
-template<typename Scalar>
-struct ei_functor_traits<ei_scalar_sqrt_op<Scalar> >
-{ enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = false }; };
-
-/** \internal
-  *
-  * \array_module
-  *
-  * \brief Template functor to compute the exponential of a scalar
-  *
-  * \sa class CwiseUnaryOp, Cwise::exp()
-  */
-template<typename Scalar> struct ei_scalar_exp_op EIGEN_EMPTY_STRUCT {
-  inline const Scalar operator() (const Scalar& a) const { return ei_exp(a); }
-};
-template<typename Scalar>
-struct ei_functor_traits<ei_scalar_exp_op<Scalar> >
-{ enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = false }; };
-
-/** \internal
-  *
-  * \array_module
-  *
-  * \brief Template functor to compute the logarithm of a scalar
-  *
-  * \sa class CwiseUnaryOp, Cwise::log()
-  */
-template<typename Scalar> struct ei_scalar_log_op EIGEN_EMPTY_STRUCT {
-  inline const Scalar operator() (const Scalar& a) const { return ei_log(a); }
-};
-template<typename Scalar>
-struct ei_functor_traits<ei_scalar_log_op<Scalar> >
-{ enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = false }; };
-
-/** \internal
-  *
-  * \array_module
-  *
-  * \brief Template functor to compute the cosine of a scalar
-  *
-  * \sa class CwiseUnaryOp, Cwise::cos()
-  */
-template<typename Scalar> struct ei_scalar_cos_op EIGEN_EMPTY_STRUCT {
-  inline const Scalar operator() (const Scalar& a) const { return ei_cos(a); }
-};
-template<typename Scalar>
-struct ei_functor_traits<ei_scalar_cos_op<Scalar> >
-{ enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = false }; };
-
-/** \internal
-  *
-  * \array_module
-  *
-  * \brief Template functor to compute the sine of a scalar
-  *
-  * \sa class CwiseUnaryOp, Cwise::sin()
-  */
-template<typename Scalar> struct ei_scalar_sin_op EIGEN_EMPTY_STRUCT {
-  inline const Scalar operator() (const Scalar& a) const { return ei_sin(a); }
-};
-template<typename Scalar>
-struct ei_functor_traits<ei_scalar_sin_op<Scalar> >
-{ enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = false }; };
-
-/** \internal
-  *
-  * \array_module
-  *
-  * \brief Template functor to raise a scalar to a power
-  *
-  * \sa class CwiseUnaryOp, Cwise::pow
-  */
-template<typename Scalar>
-struct ei_scalar_pow_op {
-  // FIXME default copy constructors seems bugged with std::complex<>
-  inline ei_scalar_pow_op(const ei_scalar_pow_op& other) : m_exponent(other.m_exponent) { }
-  inline ei_scalar_pow_op(const Scalar& exponent) : m_exponent(exponent) {}
-  inline Scalar operator() (const Scalar& a) const { return ei_pow(a, m_exponent); }
-  const Scalar m_exponent;
-private:
-  ei_scalar_pow_op& operator=(const ei_scalar_pow_op&);
-};
-template<typename Scalar>
-struct ei_functor_traits<ei_scalar_pow_op<Scalar> >
-{ enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = false }; };
-
-/** \internal
-  *
-  * \array_module
-  *
-  * \brief Template functor to compute the inverse of a scalar
-  *
-  * \sa class CwiseUnaryOp, Cwise::inverse()
-  */
-template<typename Scalar>
-struct ei_scalar_inverse_op {
-  inline Scalar operator() (const Scalar& a) const { return Scalar(1)/a; }
-  template<typename PacketScalar>
-  inline const PacketScalar packetOp(const PacketScalar& a) const
-  { return ei_pdiv(ei_pset1(Scalar(1)),a); }
-};
-template<typename Scalar>
-struct ei_functor_traits<ei_scalar_inverse_op<Scalar> >
-{ enum { Cost = NumTraits<Scalar>::MulCost, PacketAccess = int(ei_packet_traits<Scalar>::size)>1 }; };
-
-/** \internal
-  *
-  * \array_module
-  *
-  * \brief Template functor to compute the square of a scalar
-  *
-  * \sa class CwiseUnaryOp, Cwise::square()
-  */
-template<typename Scalar>
-struct ei_scalar_square_op {
-  inline Scalar operator() (const Scalar& a) const { return a*a; }
-  template<typename PacketScalar>
-  inline const PacketScalar packetOp(const PacketScalar& a) const
-  { return ei_pmul(a,a); }
-};
-template<typename Scalar>
-struct ei_functor_traits<ei_scalar_square_op<Scalar> >
-{ enum { Cost = NumTraits<Scalar>::MulCost, PacketAccess = int(ei_packet_traits<Scalar>::size)>1 }; };
-
-/** \internal
-  *
-  * \array_module
-  *
-  * \brief Template functor to compute the cube of a scalar
-  *
-  * \sa class CwiseUnaryOp, Cwise::cube()
-  */
-template<typename Scalar>
-struct ei_scalar_cube_op {
-  inline Scalar operator() (const Scalar& a) const { return a*a*a; }
-  template<typename PacketScalar>
-  inline const PacketScalar packetOp(const PacketScalar& a) const
-  { return ei_pmul(a,ei_pmul(a,a)); }
-};
-template<typename Scalar>
-struct ei_functor_traits<ei_scalar_cube_op<Scalar> >
-{ enum { Cost = 2*NumTraits<Scalar>::MulCost, PacketAccess = int(ei_packet_traits<Scalar>::size)>1 }; };
-
-// default ei_functor_traits for STL functors:
-
-template<typename T>
-struct ei_functor_traits<std::multiplies<T> >
-{ enum { Cost = NumTraits<T>::MulCost, PacketAccess = false }; };
-
-template<typename T>
-struct ei_functor_traits<std::divides<T> >
-{ enum { Cost = NumTraits<T>::MulCost, PacketAccess = false }; };
-
-template<typename T>
-struct ei_functor_traits<std::plus<T> >
-{ enum { Cost = NumTraits<T>::AddCost, PacketAccess = false }; };
-
-template<typename T>
-struct ei_functor_traits<std::minus<T> >
-{ enum { Cost = NumTraits<T>::AddCost, PacketAccess = false }; };
-
-template<typename T>
-struct ei_functor_traits<std::negate<T> >
-{ enum { Cost = NumTraits<T>::AddCost, PacketAccess = false }; };
-
-template<typename T>
-struct ei_functor_traits<std::logical_or<T> >
-{ enum { Cost = 1, PacketAccess = false }; };
-
-template<typename T>
-struct ei_functor_traits<std::logical_and<T> >
-{ enum { Cost = 1, PacketAccess = false }; };
-
-template<typename T>
-struct ei_functor_traits<std::logical_not<T> >
-{ enum { Cost = 1, PacketAccess = false }; };
-
-template<typename T>
-struct ei_functor_traits<std::greater<T> >
-{ enum { Cost = 1, PacketAccess = false }; };
-
-template<typename T>
-struct ei_functor_traits<std::less<T> >
-{ enum { Cost = 1, PacketAccess = false }; };
-
-template<typename T>
-struct ei_functor_traits<std::greater_equal<T> >
-{ enum { Cost = 1, PacketAccess = false }; };
-
-template<typename T>
-struct ei_functor_traits<std::less_equal<T> >
-{ enum { Cost = 1, PacketAccess = false }; };
-
-template<typename T>
-struct ei_functor_traits<std::equal_to<T> >
-{ enum { Cost = 1, PacketAccess = false }; };
-
-template<typename T>
-struct ei_functor_traits<std::not_equal_to<T> >
-{ enum { Cost = 1, PacketAccess = false }; };
-
-template<typename T>
-struct ei_functor_traits<std::binder2nd<T> >
-{ enum { Cost = ei_functor_traits<T>::Cost, PacketAccess = false }; };
-
-template<typename T>
-struct ei_functor_traits<std::binder1st<T> >
-{ enum { Cost = ei_functor_traits<T>::Cost, PacketAccess = false }; };
-
-template<typename T>
-struct ei_functor_traits<std::unary_negate<T> >
-{ enum { Cost = 1 + ei_functor_traits<T>::Cost, PacketAccess = false }; };
-
-template<typename T>
-struct ei_functor_traits<std::binary_negate<T> >
-{ enum { Cost = 1 + ei_functor_traits<T>::Cost, PacketAccess = false }; };
-
-#ifdef EIGEN_STDEXT_SUPPORT
-
-template<typename T0,typename T1>
-struct ei_functor_traits<std::project1st<T0,T1> >
-{ enum { Cost = 0, PacketAccess = false }; };
-
-template<typename T0,typename T1>
-struct ei_functor_traits<std::project2nd<T0,T1> >
-{ enum { Cost = 0, PacketAccess = false }; };
-
-template<typename T0,typename T1>
-struct ei_functor_traits<std::select2nd<std::pair<T0,T1> > >
-{ enum { Cost = 0, PacketAccess = false }; };
-
-template<typename T0,typename T1>
-struct ei_functor_traits<std::select1st<std::pair<T0,T1> > >
-{ enum { Cost = 0, PacketAccess = false }; };
-
-template<typename T0,typename T1>
-struct ei_functor_traits<std::unary_compose<T0,T1> >
-{ enum { Cost = ei_functor_traits<T0>::Cost + ei_functor_traits<T1>::Cost, PacketAccess = false }; };
-
-template<typename T0,typename T1,typename T2>
-struct ei_functor_traits<std::binary_compose<T0,T1,T2> >
-{ enum { Cost = ei_functor_traits<T0>::Cost + ei_functor_traits<T1>::Cost + ei_functor_traits<T2>::Cost, PacketAccess = false }; };
-
-#endif // EIGEN_STDEXT_SUPPORT
-
-#endif // EIGEN_ARRAY_FUNCTORS_H
diff --git a/extern/Eigen2/Eigen/src/Array/Norms.h b/extern/Eigen2/Eigen/src/Array/Norms.h
deleted file mode 100644 (file)
index 6b92e6a..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-// This file is part of Eigen, a lightweight C++ template library
-// for linear algebra. Eigen itself is part of the KDE project.
-//
-// Copyright (C) 2008 Benoit Jacob <jacob.benoit.1@gmail.com>
-//
-// Eigen is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 3 of the License, or (at your option) any later version.
-//
-// Alternatively, you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as
-// published by the Free Software Foundation; either version 2 of
-// the License, or (at your option) any later version.
-//
-// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
-// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License and a copy of the GNU General Public License along with
-// Eigen. If not, see <http://www.gnu.org/licenses/>.
-
-#ifndef EIGEN_ARRAY_NORMS_H
-#define EIGEN_ARRAY_NORMS_H
-
-template<typename Derived, int p>
-struct ei_lpNorm_selector
-{
-  typedef typename NumTraits<typename ei_traits<Derived>::Scalar>::Real RealScalar;
-  inline static RealScalar run(const MatrixBase<Derived>& m)
-  {
-    return ei_pow(m.cwise().abs().cwise().pow(p).sum(), RealScalar(1)/p);
-  }
-};
-
-template<typename Derived>
-struct ei_lpNorm_selector<Derived, 1>
-{
-  inline static typename NumTraits<typename ei_traits<Derived>::Scalar>::Real run(const MatrixBase<Derived>& m)
-  {
-    return m.cwise().abs().sum();
-  }
-};
-
-template<typename Derived>
-struct ei_lpNorm_selector<Derived, 2>
-{
-  inline static typename NumTraits<typename ei_traits<Derived>::Scalar>::Real run(const MatrixBase<Derived>& m)
-  {
-    return m.norm();
-  }
-};
-
-template<typename Derived>
-struct ei_lpNorm_selector<Derived, Infinity>
-{
-  inline static typename NumTraits<typename ei_traits<Derived>::Scalar>::Real run(const MatrixBase<Derived>& m)
-  {
-    return m.cwise().abs().maxCoeff();
-  }
-};
-
-/** \array_module
-  * 
-  * \returns the \f$ \ell^p \f$ norm of *this, that is, returns the p-th root of the sum of the p-th powers of the absolute values
-  *          of the coefficients of *this. If \a p is the special value \a Eigen::Infinity, this function returns the \f$ \ell^p\infty \f$
-  *          norm, that is the maximum of the absolute values of the coefficients of *this.
-  *
-  * \sa norm()
-  */
-template<typename Derived>
-template<int p>
-inline typename NumTraits<typename ei_traits<Derived>::Scalar>::Real MatrixBase<Derived>::lpNorm() const
-{
-  return ei_lpNorm_selector<Derived, p>::run(*this);
-}
-
-#endif // EIGEN_ARRAY_NORMS_H
diff --git a/extern/Eigen2/Eigen/src/Array/PartialRedux.h b/extern/Eigen2/Eigen/src/Array/PartialRedux.h
deleted file mode 100644 (file)
index 3a052ca..0000000
+++ /dev/null
@@ -1,347 +0,0 @@
-// This file is part of Eigen, a lightweight C++ template library
-// for linear algebra. Eigen itself is part of the KDE project.
-//
-// Copyright (C) 2008 Gael Guennebaud <g.gael@free.fr>
-// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
-//
-// Eigen is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 3 of the License, or (at your option) any later version.
-//
-// Alternatively, you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as
-// published by the Free Software Foundation; either version 2 of
-// the License, or (at your option) any later version.
-//
-// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
-// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License and a copy of the GNU General Public License along with
-// Eigen. If not, see <http://www.gnu.org/licenses/>.
-
-#ifndef EIGEN_PARTIAL_REDUX_H
-#define EIGEN_PARTIAL_REDUX_H
-
-/** \array_module \ingroup Array
-  *
-  * \class PartialReduxExpr
-  *
-  * \brief Generic expression of a partially reduxed matrix
-  *
-  * \param MatrixType the type of the matrix we are applying the redux operation
-  * \param MemberOp type of the member functor
-  * \param Direction indicates the direction of the redux (Vertical or Horizontal)
-  *
-  * This class represents an expression of a partial redux operator of a matrix.
-  * It is the return type of PartialRedux functions,
-  * and most of the time this is the only way it is used.
-  *
-  * \sa class PartialRedux
-  */
-
-template< typename MatrixType, typename MemberOp, int Direction>
-class PartialReduxExpr;
-
-template<typename MatrixType, typename MemberOp, int Direction>
-struct ei_traits<PartialReduxExpr<MatrixType, MemberOp, Direction> >
-{
-  typedef typename MemberOp::result_type Scalar;
-  typedef typename MatrixType::Scalar InputScalar;
-  typedef typename ei_nested<MatrixType>::type MatrixTypeNested;
-  typedef typename ei_cleantype<MatrixTypeNested>::type _MatrixTypeNested;
-  enum {
-    RowsAtCompileTime = Direction==Vertical   ? 1 : MatrixType::RowsAtCompileTime,
-    ColsAtCompileTime = Direction==Horizontal ? 1 : MatrixType::ColsAtCompileTime,
-    MaxRowsAtCompileTime = Direction==Vertical   ? 1 : MatrixType::MaxRowsAtCompileTime,
-    MaxColsAtCompileTime = Direction==Horizontal ? 1 : MatrixType::MaxColsAtCompileTime,
-    Flags = (unsigned int)_MatrixTypeNested::Flags & HereditaryBits,
-    TraversalSize = Direction==Vertical ? RowsAtCompileTime : ColsAtCompileTime
-  };
-  #if EIGEN_GNUC_AT_LEAST(3,4)
-  typedef typename MemberOp::template Cost<InputScalar,int(TraversalSize)> CostOpType;
-  #else
-  typedef typename MemberOp::template Cost<InputScalar,TraversalSize> CostOpType;
-  #endif
-  enum {
-    CoeffReadCost = TraversalSize * ei_traits<_MatrixTypeNested>::CoeffReadCost + int(CostOpType::value)
-  };
-};
-
-template< typename MatrixType, typename MemberOp, int Direction>
-class PartialReduxExpr : ei_no_assignment_operator,
-  public MatrixBase<PartialReduxExpr<MatrixType, MemberOp, Direction> >
-{
-  public:
-
-    EIGEN_GENERIC_PUBLIC_INTERFACE(PartialReduxExpr)
-    typedef typename ei_traits<PartialReduxExpr>::MatrixTypeNested MatrixTypeNested;
-    typedef typename ei_traits<PartialReduxExpr>::_MatrixTypeNested _MatrixTypeNested;
-
-    PartialReduxExpr(const MatrixType& mat, const MemberOp& func = MemberOp())
-      : m_matrix(mat), m_functor(func) {}
-
-    int rows() const { return (Direction==Vertical   ? 1 : m_matrix.rows()); }
-    int cols() const { return (Direction==Horizontal ? 1 : m_matrix.cols()); }
-
-    const Scalar coeff(int i, int j) const
-    {
-      if (Direction==Vertical)
-        return m_functor(m_matrix.col(j));
-      else
-        return m_functor(m_matrix.row(i));
-    }
-
-  protected:
-    const MatrixTypeNested m_matrix;
-    const MemberOp m_functor;
-};
-
-#define EIGEN_MEMBER_FUNCTOR(MEMBER,COST)                           \
-  template <typename ResultType>                                    \
-  struct ei_member_##MEMBER EIGEN_EMPTY_STRUCT {                    \
-    typedef ResultType result_type;                                 \
-    template<typename Scalar, int Size> struct Cost                 \
-    { enum { value = COST }; };                                     \
-    template<typename Derived>                                      \
-    inline ResultType operator()(const MatrixBase<Derived>& mat) const     \
-    { return mat.MEMBER(); } \
-  }
-
-EIGEN_MEMBER_FUNCTOR(squaredNorm, Size * NumTraits<Scalar>::MulCost + (Size-1)*NumTraits<Scalar>::AddCost);
-EIGEN_MEMBER_FUNCTOR(norm, (Size+5) * NumTraits<Scalar>::MulCost + (Size-1)*NumTraits<Scalar>::AddCost);
-EIGEN_MEMBER_FUNCTOR(sum, (Size-1)*NumTraits<Scalar>::AddCost);
-EIGEN_MEMBER_FUNCTOR(minCoeff, (Size-1)*NumTraits<Scalar>::AddCost);
-EIGEN_MEMBER_FUNCTOR(maxCoeff, (Size-1)*NumTraits<Scalar>::AddCost);
-EIGEN_MEMBER_FUNCTOR(all, (Size-1)*NumTraits<Scalar>::AddCost);
-EIGEN_MEMBER_FUNCTOR(any, (Size-1)*NumTraits<Scalar>::AddCost);
-EIGEN_MEMBER_FUNCTOR(count, (Size-1)*NumTraits<Scalar>::AddCost);
-
-/** \internal */
-template <typename BinaryOp, typename Scalar>
-struct ei_member_redux {
-  typedef typename ei_result_of<
-                     BinaryOp(Scalar)
-                   >::type  result_type;
-  template<typename _Scalar, int Size> struct Cost
-  { enum { value = (Size-1) * ei_functor_traits<BinaryOp>::Cost }; };
-  ei_member_redux(const BinaryOp func) : m_functor(func) {}
-  template<typename Derived>
-  inline result_type operator()(const MatrixBase<Derived>& mat) const
-  { return mat.redux(m_functor); }
-  const BinaryOp m_functor;
-private:
-  ei_member_redux& operator=(const ei_member_redux&);
-};
-
-/** \array_module \ingroup Array
-  *
-  * \class PartialRedux
-  *
-  * \brief Pseudo expression providing partial reduction operations
-  *
-  * \param ExpressionType the type of the object on which to do partial reductions
-  * \param Direction indicates the direction of the redux (Vertical or Horizontal)
-  *
-  * This class represents a pseudo expression with partial reduction features.
-  * It is the return type of MatrixBase::colwise() and MatrixBase::rowwise()
-  * and most of the time this is the only way it is used.
-  *
-  * Example: \include MatrixBase_colwise.cpp
-  * Output: \verbinclude MatrixBase_colwise.out
-  *
-  * \sa MatrixBase::colwise(), MatrixBase::rowwise(), class PartialReduxExpr
-  */
-template<typename ExpressionType, int Direction> class PartialRedux
-{
-  public:
-
-    typedef typename ei_traits<ExpressionType>::Scalar Scalar;
-    typedef typename ei_meta_if<ei_must_nest_by_value<ExpressionType>::ret,
-        ExpressionType, const ExpressionType&>::ret ExpressionTypeNested;
-
-    template<template<typename _Scalar> class Functor> struct ReturnType
-    {
-      typedef PartialReduxExpr<ExpressionType,
-                               Functor<typename ei_traits<ExpressionType>::Scalar>,
-                               Direction
-                              > Type;
-    };
-
-    template<typename BinaryOp> struct ReduxReturnType
-    {
-      typedef PartialReduxExpr<ExpressionType,
-                               ei_member_redux<BinaryOp,typename ei_traits<ExpressionType>::Scalar>,
-                               Direction
-                              > Type;
-    };
-
-    typedef typename ExpressionType::PlainMatrixType CrossReturnType;
-    
-    inline PartialRedux(const ExpressionType& matrix) : m_matrix(matrix) {}
-
-    /** \internal */
-    inline const ExpressionType& _expression() const { return m_matrix; }
-
-    template<typename BinaryOp>
-    const typename ReduxReturnType<BinaryOp>::Type
-    redux(const BinaryOp& func = BinaryOp()) const;
-
-    /** \returns a row (or column) vector expression of the smallest coefficient
-      * of each column (or row) of the referenced expression.
-      *
-      * Example: \include PartialRedux_minCoeff.cpp
-      * Output: \verbinclude PartialRedux_minCoeff.out
-      *
-      * \sa MatrixBase::minCoeff() */
-    const typename ReturnType<ei_member_minCoeff>::Type minCoeff() const
-    { return _expression(); }
-
-    /** \returns a row (or column) vector expression of the largest coefficient
-      * of each column (or row) of the referenced expression.
-      *
-      * Example: \include PartialRedux_maxCoeff.cpp
-      * Output: \verbinclude PartialRedux_maxCoeff.out
-      *
-      * \sa MatrixBase::maxCoeff() */
-    const typename ReturnType<ei_member_maxCoeff>::Type maxCoeff() const
-    { return _expression(); }
-
-    /** \returns a row (or column) vector expression of the squared norm
-      * of each column (or row) of the referenced expression.
-      *
-      * Example: \include PartialRedux_squaredNorm.cpp
-      * Output: \verbinclude PartialRedux_squaredNorm.out
-      *
-      * \sa MatrixBase::squaredNorm() */
-    const typename ReturnType<ei_member_squaredNorm>::Type squaredNorm() const
-    { return _expression(); }
-
-    /** \returns a row (or column) vector expression of the norm
-      * of each column (or row) of the referenced expression.
-      *
-      * Example: \include PartialRedux_norm.cpp
-      * Output: \verbinclude PartialRedux_norm.out
-      *
-      * \sa MatrixBase::norm() */
-    const typename ReturnType<ei_member_norm>::Type norm() const
-    { return _expression(); }
-
-    /** \returns a row (or column) vector expression of the sum
-      * of each column (or row) of the referenced expression.
-      *
-      * Example: \include PartialRedux_sum.cpp
-      * Output: \verbinclude PartialRedux_sum.out
-      *
-      * \sa MatrixBase::sum() */
-    const typename ReturnType<ei_member_sum>::Type sum() const
-    { return _expression(); }
-
-    /** \returns a row (or column) vector expression representing
-      * whether \b all coefficients of each respective column (or row) are \c true.
-      *
-      * \sa MatrixBase::all() */
-    const typename ReturnType<ei_member_all>::Type all() const
-    { return _expression(); }
-
-    /** \returns a row (or column) vector expression representing
-      * whether \b at \b least one coefficient of each respective column (or row) is \c true.
-      *
-      * \sa MatrixBase::any() */
-    const typename ReturnType<ei_member_any>::Type any() const
-    { return _expression(); }
-    
-    /** \returns a row (or column) vector expression representing
-      * the number of \c true coefficients of each respective column (or row).
-      *
-      * Example: \include PartialRedux_count.cpp
-      * Output: \verbinclude PartialRedux_count.out
-      *
-      * \sa MatrixBase::count() */
-    const PartialReduxExpr<ExpressionType, ei_member_count<int>, Direction> count() const
-    { return _expression(); }
-
-    /** \returns a 3x3 matrix expression of the cross product
-      * of each column or row of the referenced expression with the \a other vector.
-      *
-      * \geometry_module
-      *
-      * \sa MatrixBase::cross() */
-    template<typename OtherDerived>
-    const CrossReturnType cross(const MatrixBase<OtherDerived>& other) const
-    {
-      EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(CrossReturnType,3,3)
-      EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(OtherDerived,3)
-      EIGEN_STATIC_ASSERT((ei_is_same_type<Scalar, typename OtherDerived::Scalar>::ret),
-        YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
-
-      if(Direction==Vertical)
-        return (CrossReturnType()
-                                 << _expression().col(0).cross(other),
-                                    _expression().col(1).cross(other),
-                                    _expression().col(2).cross(other)).finished();
-      else
-        return (CrossReturnType() 
-                                 << _expression().row(0).cross(other),
-                                    _expression().row(1).cross(other),
-                                    _expression().row(2).cross(other)).finished();
-    }
-
-  protected:
-    ExpressionTypeNested m_matrix;
-
-  private:
-    PartialRedux& operator=(const PartialRedux&);
-};
-
-/** \array_module
-  *
-  * \returns a PartialRedux wrapper of *this providing additional partial reduction operations
-  *
-  * Example: \include MatrixBase_colwise.cpp
-  * Output: \verbinclude MatrixBase_colwise.out
-  *
-  * \sa rowwise(), class PartialRedux
-  */
-template<typename Derived>
-inline const PartialRedux<Derived,Vertical>
-MatrixBase<Derived>::colwise() const
-{
-  return derived();
-}
-
-/** \array_module
-  *
-  * \returns a PartialRedux wrapper of *this providing additional partial reduction operations
-  *
-  * Example: \include MatrixBase_rowwise.cpp
-  * Output: \verbinclude MatrixBase_rowwise.out
-  *
-  * \sa colwise(), class PartialRedux
-  */
-template<typename Derived>
-inline const PartialRedux<Derived,Horizontal>
-MatrixBase<Derived>::rowwise() const
-{
-  return derived();
-}
-
-/** \returns a row or column vector expression of \c *this reduxed by \a func
-  *
-  * The template parameter \a BinaryOp is the type of the functor
-  * of the custom redux operator. Note that func must be an associative operator.
-  *
-  * \sa class PartialRedux, MatrixBase::colwise(), MatrixBase::rowwise()
-  */
-template<typename ExpressionType, int Direction>
-template<typename BinaryOp>
-const typename PartialRedux<ExpressionType,Direction>::template ReduxReturnType<BinaryOp>::Type
-PartialRedux<ExpressionType,Direction>::redux(const BinaryOp& func) const
-{
-  return typename ReduxReturnType<BinaryOp>::Type(_expression(), func);
-}
-
-#endif // EIGEN_PARTIAL_REDUX_H
diff --git a/extern/Eigen2/Eigen/src/Cholesky/LDLT.h b/extern/Eigen2/Eigen/src/Cholesky/LDLT.h
deleted file mode 100644 (file)
index 205b78a..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-// This file is part of Eigen, a lightweight C++ template library
-// for linear algebra. Eigen itself is part of the KDE project.
-//
-// Copyright (C) 2008 Gael Guennebaud <g.gael@free.fr>
-//
-// Eigen is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 3 of the License, or (at your option) any later version.
-//
-// Alternatively, you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as
-// published by the Free Software Foundation; either version 2 of
-// the License, or (at your option) any later version.
-//
-// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
-// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License and a copy of the GNU General Public License along with
-// Eigen. If not, see <http://www.gnu.org/licenses/>.
-
-#ifndef EIGEN_LDLT_H
-#define EIGEN_LDLT_H
-
-/** \ingroup cholesky_Module
-  *
-  * \class LDLT
-  *
-  * \brief Robust Cholesky decomposition of a matrix and associated features
-  *
-  * \param MatrixType the type of the matrix of which we are computing the LDL^T Cholesky decomposition
-  *
-  * This class performs a Cholesky decomposition without square root of a symmetric, positive definite
-  * matrix A such that A = L D L^* = U^* D U, where L is lower triangular with a unit diagonal
-  * and D is a diagonal matrix.
-  *
-  * Compared to a standard Cholesky decomposition, avoiding the square roots allows for faster and more
-  * stable computation.
-  *
-  * Note that during the decomposition, only the upper triangular part of A is considered. Therefore,
-  * the strict lower part does not have to store correct values.
-  *
-  * \sa MatrixBase::ldlt(), class LLT
-  */
-template<typename MatrixType> class LDLT
-{
-  public:
-
-    typedef typename MatrixType::Scalar Scalar;
-    typedef typename NumTraits<typename MatrixType::Scalar>::Real RealScalar;
-    typedef Matrix<Scalar, MatrixType::ColsAtCompileTime, 1> VectorType;
-
-    LDLT(const MatrixType& matrix)
-      : m_matrix(matrix.rows(), matrix.cols())
-    {
-      compute(matrix);
-    }
-
-    /** \returns the lower triangular matrix L */
-    inline Part<MatrixType, UnitLowerTriangular> matrixL(void) const { return m_matrix; }
-
-    /** \returns the coefficients of the diagonal matrix D */
-    inline DiagonalCoeffs<MatrixType> vectorD(void) const { return m_matrix.diagonal(); }
-
-    /** \returns true if the matrix is positive definite */
-    inline bool isPositiveDefinite(void) const { return m_isPositiveDefinite; }
-
-    template<typename RhsDerived, typename ResultType>
-    bool solve(const MatrixBase<RhsDerived> &b, ResultType *result) const;
-
-    template<typename Derived>
-    bool solveInPlace(MatrixBase<Derived> &bAndX) const;
-
-    void compute(const MatrixType& matrix);
-
-  protected:
-    /** \internal
-      * Used to compute and store the cholesky decomposition A = L D L^* = U^* D U.
-      * The strict upper part is used during the decomposition, the strict lower
-      * part correspond to the coefficients of L (its diagonal is equal to 1 and
-      * is not stored), and the diagonal entries correspond to D.
-      */
-    MatrixType m_matrix;
-
-    bool m_isPositiveDefinite;
-};
-
-/** Compute / recompute the LLT decomposition A = L D L^* = U^* D U of \a matrix
-  */
-template<typename MatrixType>
-void LDLT<MatrixType>::compute(const MatrixType& a)
-{
-  assert(a.rows()==a.cols());
-  const int size = a.rows();
-  m_matrix.resize(size, size);
-  m_isPositiveDefinite = true;
-  const RealScalar eps = ei_sqrt(precision<Scalar>());
-
-  if (size<=1)
-  {
-    m_matrix = a;
-    return;
-  }
-
-  // Let's preallocate a temporay vector to evaluate the matrix-vector product into it.
-  // Unlike the standard LLT decomposition, here we cannot evaluate it to the destination
-  // matrix because it a sub-row which is not compatible suitable for efficient packet evaluation.
-  // (at least if we assume the matrix is col-major)
-  Matrix<Scalar,MatrixType::RowsAtCompileTime,1> _temporary(size);
-
-  // Note that, in this algorithm the rows of the strict upper part of m_matrix is used to store
-  // column vector, thus the strange .conjugate() and .transpose()...
-
-  m_matrix.row(0) = a.row(0).conjugate();
-  m_matrix.col(0).end(size-1) = m_matrix.row(0).end(size-1) / m_matrix.coeff(0,0);
-  for (int j = 1; j < size; ++j)
-  {
-    RealScalar tmp = ei_real(a.coeff(j,j) - (m_matrix.row(j).start(j) * m_matrix.col(j).start(j).conjugate()).coeff(0,0));
-    m_matrix.coeffRef(j,j) = tmp;
-
-    if (tmp < eps)
-    {
-      m_isPositiveDefinite = false;
-      return;
-    }
-
-    int endSize = size-j-1;
-    if (endSize>0)
-    {
-      _temporary.end(endSize) = ( m_matrix.block(j+1,0, endSize, j)
-                                  * m_matrix.col(j).start(j).conjugate() ).lazy();
-
-      m_matrix.row(j).end(endSize) = a.row(j).end(endSize).conjugate()
-                                   - _temporary.end(endSize).transpose();
-
-      m_matrix.col(j).end(endSize) = m_matrix.row(j).end(endSize) / tmp;
-    }
-  }
-}
-
-/** Computes the solution x of \f$ A x = b \f$ using the current decomposition of A.
-  * The result is stored in \a result
-  *
-  * \returns true in case of success, false otherwise.
-  *
-  * In other words, it computes \f$ b = A^{-1} b \f$ with
-  * \f$ {L^{*}}^{-1} D^{-1} L^{-1} b \f$ from right to left.
-  *
-  * \sa LDLT::solveInPlace(), MatrixBase::ldlt()
-  */
-template<typename MatrixType>
-template<typename RhsDerived, typename ResultType>
-bool LDLT<MatrixType>
-::solve(const MatrixBase<RhsDerived> &b, ResultType *result) const
-{
-  const int size = m_matrix.rows();
-  ei_assert(size==b.rows() && "LLT::solve(): invalid number of rows of the right hand side matrix b");
-  *result = b;
-  return solveInPlace(*result);
-}
-
-/** This is the \em in-place version of solve().
-  *
-  * \param bAndX represents both the right-hand side matrix b and result x.
-  *
-  * This version avoids a copy when the right hand side matrix b is not
-  * needed anymore.
-  *
-  * \sa LDLT::solve(), MatrixBase::ldlt()
-  */
-template<typename MatrixType>
-template<typename Derived>
-bool LDLT<MatrixType>::solveInPlace(MatrixBase<Derived> &bAndX) const
-{
-  const int size = m_matrix.rows();
-  ei_assert(size==bAndX.rows());
-  if (!m_isPositiveDefinite)
-    return false;
-  matrixL().solveTriangularInPlace(bAndX);
-  bAndX = (m_matrix.cwise().inverse().template part<Diagonal>() * bAndX).lazy();
-  m_matrix.adjoint().template part<UnitUpperTriangular>().solveTriangularInPlace(bAndX);
-  return true;
-}
-
-/** \cholesky_module
-  * \returns the Cholesky decomposition without square root of \c *this
-  */
-template<typename Derived>
-inline const LDLT<typename MatrixBase<Derived>::PlainMatrixType>
-MatrixBase<Derived>::ldlt() const
-{
-  return derived();
-}
-
-#endif // EIGEN_LDLT_H
diff --git a/extern/Eigen2/Eigen/src/Cholesky/LLT.h b/extern/Eigen2/Eigen/src/Cholesky/LLT.h
deleted file mode 100644 (file)
index 42c959f..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-// This file is part of Eigen, a lightweight C++ template library
-// for linear algebra.
-//
-// Copyright (C) 2008 Gael Guennebaud <g.gael@free.fr>
-//
-// Eigen is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 3 of the License, or (at your option) any later version.
-//
-// Alternatively, you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as
-// published by the Free Software Foundation; either version 2 of
-// the License, or (at your option) any later version.
-//
-// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
-// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License and a copy of the GNU General Public License along with
-// Eigen. If not, see <http://www.gnu.org/licenses/>.
-
-#ifndef EIGEN_LLT_H
-#define EIGEN_LLT_H
-
-/** \ingroup cholesky_Module
-  *
-  * \class LLT
-  *
-  * \brief Standard Cholesky decomposition (LL^T) of a matrix and associated features
-  *
-  * \param MatrixType the type of the matrix of which we are computing the LL^T Cholesky decomposition
-  *
-  * This class performs a LL^T Cholesky decomposition of a symmetric, positive definite
-  * matrix A such that A = LL^* = U^*U, where L is lower triangular.
-  *
-  * While the Cholesky decomposition is particularly useful to solve selfadjoint problems like  D^*D x = b,
-  * for that purpose, we recommend the Cholesky decomposition without square root which is more stable
-  * and even faster. Nevertheless, this standard Cholesky decomposition remains useful in many other
-  * situations like generalised eigen problems with hermitian matrices.
-  *
-  * Remember that Cholesky decompositions are not rank-revealing. This LLT decomposition is only stable on positive definite matrices,
-  * use LDLT instead for the semidefinite case. Also, do not use a Cholesky decomposition to determine whether a system of equations
-  * has a solution.
-  *
-  * \sa MatrixBase::llt(), class LDLT
-  */
- /* HEY THIS DOX IS DISABLED BECAUSE THERE's A BUG EITHER HERE OR IN LDLT ABOUT THAT (OR BOTH)
-  * Note that during the decomposition, only the upper triangular part of A is considered. Therefore,
-  * the strict lower part does not have to store correct values.
-  */
-template<typename MatrixType> class LLT
-{
-  private:
-    typedef typename MatrixType::Scalar Scalar;
-    typedef typename NumTraits<typename MatrixType::Scalar>::Real RealScalar;
-    typedef Matrix<Scalar, MatrixType::ColsAtCompileTime, 1> VectorType;
-
-    enum {
-      PacketSize = ei_packet_traits<Scalar>::size,
-      AlignmentMask = int(PacketSize)-1
-    };
-
-  public:
-
-    /** 
-    * \brief Default Constructor.
-    *
-    * The default constructor is useful in cases in which the user intends to
-    * perform decompositions via LLT::compute(const MatrixType&).
-    */
-    LLT() : m_matrix(), m_isInitialized(false) {}
-
-    LLT(const MatrixType& matrix)
-      : m_matrix(matrix.rows(), matrix.cols()),
-        m_isInitialized(false)
-    {
-      compute(matrix);
-    }
-
-    /** \returns the lower triangular matrix L */
-    inline Part<MatrixType, LowerTriangular> matrixL(void) const 
-    { 
-      ei_assert(m_isInitialized && "LLT is not initialized.");
-      return m_matrix; 
-    }
-    
-    /** \deprecated */
-    inline bool isPositiveDefinite(void) const { return m_isInitialized && m_isPositiveDefinite; }
-
-    template<typename RhsDerived, typename ResultType>
-    bool solve(const MatrixBase<RhsDerived> &b, ResultType *result) const;
-
-    template<typename Derived>
-    bool solveInPlace(MatrixBase<Derived> &bAndX) const;
-
-    void compute(const MatrixType& matrix);
-
-  protected:
-    /** \internal
-      * Used to compute and store L
-      * The strict upper part is not used and even not initialized.
-      */
-    MatrixType m_matrix;
-    bool m_isInitialized;
-    bool m_isPositiveDefinite;
-};
-
-/** Computes / recomputes the Cholesky decomposition A = LL^* = U^*U of \a matrix
-  */
-template<typename MatrixType>
-void LLT<MatrixType>::compute(const MatrixType& a)
-{
-  assert(a.rows()==a.cols());
-  m_isPositiveDefinite = true;
-  const int size = a.rows();
-  m_matrix.resize(size, size);
-  // The biggest overall is the point of reference to which further diagonals
-  // are compared; if any diagonal is negligible compared
-  // to the largest overall, the algorithm bails.  This cutoff is suggested
-  // in "Analysis of the Cholesky Decomposition of a Semi-definite Matrix" by
-  // Nicholas J. Higham. Also see "Accuracy and Stability of Numerical
-  // Algorithms" page 217, also by Higham.
-  const RealScalar cutoff = machine_epsilon<Scalar>() * size * a.diagonal().cwise().abs().maxCoeff();
-  RealScalar x;
-  x = ei_real(a.coeff(0,0));
-  m_matrix.coeffRef(0,0) = ei_sqrt(x);
-  if(size==1)
-  {
-    m_isInitialized = true;
-    return;
-  }
-  m_matrix.col(0).end(size-1) = a.row(0).end(size-1).adjoint() / ei_real(m_matrix.coeff(0,0));
-  for (int j = 1; j < size; ++j)
-  {
-    x = ei_real(a.coeff(j,j)) - m_matrix.row(j).start(j).squaredNorm();
-    if (x < cutoff)
-    {
-      m_isPositiveDefinite = false;
-      continue;
-    }
-
-    m_matrix.coeffRef(j,j) = x = ei_sqrt(x);
-
-    int endSize = size-j-1;
-    if (endSize>0) {
-      // Note that when all matrix columns have good alignment, then the following
-      // product is guaranteed to be optimal with respect to alignment.
-      m_matrix.col(j).end(endSize) =
-        (m_matrix.block(j+1, 0, endSize, j) * m_matrix.row(j).start(j).adjoint()).lazy();
-
-      // FIXME could use a.col instead of a.row
-      m_matrix.col(j).end(endSize) = (a.row(j).end(endSize).adjoint()
-        - m_matrix.col(j).end(endSize) ) / x;
-    }
-  }
-
-  m_isInitialized = true;
-}
-
-/** Computes the solution x of \f$ A x = b \f$ using the current decomposition of A.
-  * The result is stored in \a result
-  *
-  * \returns true always! If you need to check for existence of solutions, use another decomposition like LU, QR, or SVD.
-  *
-  * In other words, it computes \f$ b = A^{-1} b \f$ with
-  * \f$ {L^{*}}^{-1} L^{-1} b \f$ from right to left.
-  *
-  * Example: \include LLT_solve.cpp
-  * Output: \verbinclude LLT_solve.out
-  *
-  * \sa LLT::solveInPlace(), MatrixBase::llt()
-  */
-template<typename MatrixType>
-template<typename RhsDerived, typename ResultType>
-bool LLT<MatrixType>::solve(const MatrixBase<RhsDerived> &b, ResultType *result) const
-{
-  ei_assert(m_isInitialized && "LLT is not initialized.");
-  const int size = m_matrix.rows();
-  ei_assert(size==b.rows() && "LLT::solve(): invalid number of rows of the right hand side matrix b");
-  return solveInPlace((*result) = b);
-}
-
-/** This is the \em in-place version of solve().
-  *
-  * \param bAndX represents both the right-hand side matrix b and result x.
-  *
-  * \returns true always! If you need to check for existence of solutions, use another decomposition like LU, QR, or SVD.
-  *
-  * This version avoids a copy when the right hand side matrix b is not
-  * needed anymore.
-  *
-  * \sa LLT::solve(), MatrixBase::llt()
-  */
-template<typename MatrixType>
-template<typename Derived>
-bool LLT<MatrixType>::solveInPlace(MatrixBase<Derived> &bAndX) const
-{
-  ei_assert(m_isInitialized && "LLT is not initialized.");
-  const int size = m_matrix.rows();
-  ei_assert(size==bAndX.rows());
-  matrixL().solveTriangularInPlace(bAndX);
-  m_matrix.adjoint().template part<UpperTriangular>().solveTriangularInPlace(bAndX);
-  return true;
-}
-
-/** \cholesky_module
-  * \returns the LLT decomposition of \c *this
-  */
-template<typename Derived>
-inline const LLT<typename MatrixBase<Derived>::PlainMatrixType>
-MatrixBase<Derived>::llt() const
-{
-  return LLT<PlainMatrixType>(derived());
-}
-
-#endif // EIGEN_LLT_H
diff --git a/extern/Eigen2/Eigen/src/Core/Assign.h b/extern/Eigen2/Eigen/src/Core/Assign.h
deleted file mode 100644 (file)
index 5720507..0000000
+++ /dev/null
@@ -1,445 +0,0 @@
-// This file is part of Eigen, a lightweight C++ template library
-// for linear algebra. Eigen itself is part of the KDE project.
-//
-// Copyright (C) 2007 Michael Olbrich <michael.olbrich@gmx.net>
-// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
-// Copyright (C) 2008 Gael Guennebaud <g.gael@free.fr>
-//
-// Eigen is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 3 of the License, or (at your option) any later version.
-//
-// Alternatively, you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as
-// published by the Free Software Foundation; either version 2 of
-// the License, or (at your option) any later version.
-//
-// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
-// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License and a copy of the GNU General Public License along with
-// Eigen. If not, see <http://www.gnu.org/licenses/>.
-
-#ifndef EIGEN_ASSIGN_H
-#define EIGEN_ASSIGN_H
-
-/***************************************************************************
-* Part 1 : the logic deciding a strategy for vectorization and unrolling
-***************************************************************************/
-
-template <typename Derived, typename OtherDerived>
-struct ei_assign_traits
-{
-public:
-  enum {
-    DstIsAligned = Derived::Flags & AlignedBit,
-    SrcIsAligned = OtherDerived::Flags & AlignedBit,
-    SrcAlignment = DstIsAligned && SrcIsAligned ? Aligned : Unaligned
-  };
-
-private:
-  enum {
-    InnerSize = int(Derived::Flags)&RowMajorBit
-              ? Derived::ColsAtCompileTime
-              : Derived::RowsAtCompileTime,
-    InnerMaxSize = int(Derived::Flags)&RowMajorBit
-              ? Derived::MaxColsAtCompileTime
-              : Derived::MaxRowsAtCompileTime,
-    PacketSize = ei_packet_traits<typename Derived::Scalar>::size
-  };
-
-  enum {
-    MightVectorize = (int(Derived::Flags) & int(OtherDerived::Flags) & ActualPacketAccessBit)
-                  && ((int(Derived::Flags)&RowMajorBit)==(int(OtherDerived::Flags)&RowMajorBit)),
-    MayInnerVectorize  = MightVectorize && int(InnerSize)!=Dynamic && int(InnerSize)%int(PacketSize)==0
-                       && int(DstIsAligned) && int(SrcIsAligned),
-    MayLinearVectorize = MightVectorize && (int(Derived::Flags) & int(OtherDerived::Flags) & LinearAccessBit),
-    MaySliceVectorize  = MightVectorize && int(InnerMaxSize)>=3*PacketSize /* slice vectorization can be slow, so we only
-      want it if the slices are big, which is indicated by InnerMaxSize rather than InnerSize, think of the case
-      of a dynamic block in a fixed-size matrix */
-  };
-
-public:
-  enum {
-    Vectorization = int(MayInnerVectorize)  ? int(InnerVectorization)
-                  : int(MayLinearVectorize) ? int(LinearVectorization)
-                  : int(MaySliceVectorize)  ? int(SliceVectorization)
-                                            : int(NoVectorization)
-  };
-
-private:
-  enum {
-    UnrollingLimit      = EIGEN_UNROLLING_LIMIT * (int(Vectorization) == int(NoVectorization) ? 1 : int(PacketSize)),
-    MayUnrollCompletely = int(Derived::SizeAtCompileTime) * int(OtherDerived::CoeffReadCost) <= int(UnrollingLimit),
-    MayUnrollInner      = int(InnerSize * OtherDerived::CoeffReadCost) <= int(UnrollingLimit)
-  };
-
-public:
-  enum {
-    Unrolling = (int(Vectorization) == int(InnerVectorization) || int(Vectorization) == int(NoVectorization))
-              ? (
-                   int(MayUnrollCompletely) ? int(CompleteUnrolling)
-                 : int(MayUnrollInner)      ? int(InnerUnrolling)
-                                            : int(NoUnrolling)
-                )
-              : int(Vectorization) == int(LinearVectorization)
-              ? ( int(MayUnrollCompletely) && int(DstIsAligned) ? int(CompleteUnrolling) : int(NoUnrolling) )
-              : int(NoUnrolling)
-  };
-};
-
-/***************************************************************************
-* Part 2 : meta-unrollers
-***************************************************************************/
-
-/***********************
-*** No vectorization ***
-***********************/
-
-template<typename Derived1, typename Derived2, int Index, int Stop>
-struct ei_assign_novec_CompleteUnrolling
-{
-  enum {
-    row = int(Derived1::Flags)&RowMajorBit
-        ? Index / int(Derived1::ColsAtCompileTime)
-        : Index % Derived1::RowsAtCompileTime,
-    col = int(Derived1::Flags)&RowMajorBit
-        ? Index % int(Derived1::ColsAtCompileTime)
-        : Index / Derived1::RowsAtCompileTime
-  };
-
-  EIGEN_STRONG_INLINE static void run(Derived1 &dst, const Derived2 &src)
-  {
-    dst.copyCoeff(row, col, src);
-    ei_assign_novec_CompleteUnrolling<Derived1, Derived2, Index+1, Stop>::run(dst, src);
-  }
-};
-
-template<typename Derived1, typename Derived2, int Stop>
-struct ei_assign_novec_CompleteUnrolling<Derived1, Derived2, Stop, Stop>
-{
-  EIGEN_STRONG_INLINE static void run(Derived1 &, const Derived2 &) {}
-};
-
-template<typename Derived1, typename Derived2, int Index, int Stop>
-struct ei_assign_novec_InnerUnrolling
-{
-  EIGEN_STRONG_INLINE static void run(Derived1 &dst, const Derived2 &src, int row_or_col)
-  {
-    const bool rowMajor = int(Derived1::Flags)&RowMajorBit;
-    const int row = rowMajor ? row_or_col : Index;
-    const int col = rowMajor ? Index : row_or_col;
-    dst.copyCoeff(row, col, src);
-    ei_assign_novec_InnerUnrolling<Derived1, Derived2, Index+1, Stop>::run(dst, src, row_or_col);
-  }
-};
-
-template<typename Derived1, typename Derived2, int Stop>
-struct ei_assign_novec_InnerUnrolling<Derived1, Derived2, Stop, Stop>
-{
-  EIGEN_STRONG_INLINE static void run(Derived1 &, const Derived2 &, int) {}
-};
-
-/**************************
-*** Inner vectorization ***
-**************************/
-
-template<typename Derived1, typename Derived2, int Index, int Stop>
-struct ei_assign_innervec_CompleteUnrolling
-{
-  enum {
-    row = int(Derived1::Flags)&RowMajorBit
-        ? Index / int(Derived1::ColsAtCompileTime)
-        : Index % Derived1::RowsAtCompileTime,
-    col = int(Derived1::Flags)&RowMajorBit
-        ? Index % int(Derived1::ColsAtCompileTime)
-        : Index / Derived1::RowsAtCompileTime,
-    SrcAlignment = ei_assign_traits<Derived1,Derived2>::SrcAlignment
-  };
-
-  EIGEN_STRONG_INLINE static void run(Derived1 &dst, const Derived2 &src)
-  {
-    dst.template copyPacket<Derived2, Aligned, SrcAlignment>(row, col, src);
-    ei_assign_innervec_CompleteUnrolling<Derived1, Derived2,
-      Index+ei_packet_traits<typename Derived1::Scalar>::size, Stop>::run(dst, src);
-  }
-};
-
-template<typename Derived1, typename Derived2, int Stop>
-struct ei_assign_innervec_CompleteUnrolling<Derived1, Derived2, Stop, Stop>
-{
-  EIGEN_STRONG_INLINE static void run(Derived1 &, const Derived2 &) {}
-};
-
-template<typename Derived1, typename Derived2, int Index, int Stop>
-struct ei_assign_innervec_InnerUnrolling
-{
-  EIGEN_STRONG_INLINE static void run(Derived1 &dst, const Derived2 &src, int row_or_col)
-  {
-    const int row = int(Derived1::Flags)&RowMajorBit ? row_or_col : Index;
-    const int col = int(Derived1::Flags)&RowMajorBit ? Index : row_or_col;
-    dst.template copyPacket<Derived2, Aligned, Aligned>(row, col, src);
-    ei_assign_innervec_InnerUnrolling<Derived1, Derived2,
-      Index+ei_packet_traits<typename Derived1::Scalar>::size, Stop>::run(dst, src, row_or_col);
-  }
-};
-
-template<typename Derived1, typename Derived2, int Stop>
-struct ei_assign_innervec_InnerUnrolling<Derived1, Derived2, Stop, Stop>
-{
-  EIGEN_STRONG_INLINE static void run(Derived1 &, const Derived2 &, int) {}
-};
-
-/***************************************************************************
-* Part 3 : implementation of all cases
-***************************************************************************/
-
-template<typename Derived1, typename Derived2,
-         int Vectorization = ei_assign_traits<Derived1, Derived2>::Vectorization,
-         int Unrolling = ei_assign_traits<Derived1, Derived2>::Unrolling>
-struct ei_assign_impl;
-
-/***********************
-*** No vectorization ***
-***********************/
-
-template<typename Derived1, typename Derived2>
-struct ei_assign_impl<Derived1, Derived2, NoVectorization, NoUnrolling>
-{
-  inline static void run(Derived1 &dst, const Derived2 &src)
-  {
-    const int innerSize = dst.innerSize();
-    const int outerSize = dst.outerSize();
-    for(int j = 0; j < outerSize; ++j)
-      for(int i = 0; i < innerSize; ++i)
-      {
-        if(int(Derived1::Flags)&RowMajorBit)
-          dst.copyCoeff(j, i, src);
-        else
-          dst.copyCoeff(i, j, src);
-      }
-  }
-};
-
-template<typename Derived1, typename Derived2>
-struct ei_assign_impl<Derived1, Derived2, NoVectorization, CompleteUnrolling>
-{
-  EIGEN_STRONG_INLINE static void run(Derived1 &dst, const Derived2 &src)
-  {
-    ei_assign_novec_CompleteUnrolling<Derived1, Derived2, 0, Derived1::SizeAtCompileTime>
-      ::run(dst, src);
-  }
-};
-
-template<typename Derived1, typename Derived2>
-struct ei_assign_impl<Derived1, Derived2, NoVectorization, InnerUnrolling>
-{
-  EIGEN_STRONG_INLINE static void run(Derived1 &dst, const Derived2 &src)
-  {
-    const bool rowMajor = int(Derived1::Flags)&RowMajorBit;
-    const int innerSize = rowMajor ? Derived1::ColsAtCompileTime : Derived1::RowsAtCompileTime;
-    const int outerSize = dst.outerSize();
-    for(int j = 0; j < outerSize; ++j)
-      ei_assign_novec_InnerUnrolling<Derived1, Derived2, 0, innerSize>
-        ::run(dst, src, j);
-  }
-};
-
-/**************************
-*** Inner vectorization ***
-**************************/
-
-template<typename Derived1, typename Derived2>
-struct ei_assign_impl<Derived1, Derived2, InnerVectorization, NoUnrolling>
-{
-  inline static void run(Derived1 &dst, const Derived2 &src)
-  {
-    const int innerSize = dst.innerSize();
-    const int outerSize = dst.outerSize();
-    const int packetSize = ei_packet_traits<typename Derived1::Scalar>::size;
-    for(int j = 0; j < outerSize; ++j)
-      for(int i = 0; i < innerSize; i+=packetSize)
-      {
-        if(int(Derived1::Flags)&RowMajorBit)
-          dst.template copyPacket<Derived2, Aligned, Aligned>(j, i, src);
-        else
-          dst.template copyPacket<Derived2, Aligned, Aligned>(i, j, src);
-      }
-  }
-};
-
-template<typename Derived1, typename Derived2>
-struct ei_assign_impl<Derived1, Derived2, InnerVectorization, CompleteUnrolling>
-{
-  EIGEN_STRONG_INLINE static void run(Derived1 &dst, const Derived2 &src)
-  {
-    ei_assign_innervec_CompleteUnrolling<Derived1, Derived2, 0, Derived1::SizeAtCompileTime>
-      ::run(dst, src);
-  }
-};
-
-template<typename Derived1, typename Derived2>
-struct ei_assign_impl<Derived1, Derived2, InnerVectorization, InnerUnrolling>
-{
-  EIGEN_STRONG_INLINE static void run(Derived1 &dst, const Derived2 &src)
-  {
-    const bool rowMajor = int(Derived1::Flags)&RowMajorBit;
-    const int innerSize = rowMajor ? Derived1::ColsAtCompileTime : Derived1::RowsAtCompileTime;
-    const int outerSize = dst.outerSize();
-    for(int j = 0; j < outerSize; ++j)
-      ei_assign_innervec_InnerUnrolling<Derived1, Derived2, 0, innerSize>
-        ::run(dst, src, j);
-  }
-};
-
-/***************************
-*** Linear vectorization ***
-***************************/
-
-template<typename Derived1, typename Derived2>
-struct ei_assign_impl<Derived1, Derived2, LinearVectorization, NoUnrolling>
-{
-  inline static void run(Derived1 &dst, const Derived2 &src)
-  {
-    const int size = dst.size();
-    const int packetSize = ei_packet_traits<typename Derived1::Scalar>::size;
-    const int alignedStart = ei_assign_traits<Derived1,Derived2>::DstIsAligned ? 0
-                           : ei_alignmentOffset(&dst.coeffRef(0), size);
-    const int alignedEnd = alignedStart + ((size-alignedStart)/packetSize)*packetSize;
-
-    for(int index = 0; index < alignedStart; ++index)
-      dst.copyCoeff(index, src);
-
-    for(int index = alignedStart; index < alignedEnd; index += packetSize)
-    {
-      dst.template copyPacket<Derived2, Aligned, ei_assign_traits<Derived1,Derived2>::SrcAlignment>(index, src);
-    }
-
-    for(int index = alignedEnd; index < size; ++index)
-      dst.copyCoeff(index, src);
-  }
-};
-
-template<typename Derived1, typename Derived2>
-struct ei_assign_impl<Derived1, Derived2, LinearVectorization, CompleteUnrolling>
-{
-  EIGEN_STRONG_INLINE static void run(Derived1 &dst, const Derived2 &src)
-  {
-    const int size = Derived1::SizeAtCompileTime;
-    const int packetSize = ei_packet_traits<typename Derived1::Scalar>::size;
-    const int alignedSize = (size/packetSize)*packetSize;
-
-    ei_assign_innervec_CompleteUnrolling<Derived1, Derived2, 0, alignedSize>::run(dst, src);
-    ei_assign_novec_CompleteUnrolling<Derived1, Derived2, alignedSize, size>::run(dst, src);
-  }
-};
-
-/**************************
-*** Slice vectorization ***
-***************************/
-
-template<typename Derived1, typename Derived2>
-struct ei_assign_impl<Derived1, Derived2, SliceVectorization, NoUnrolling>
-{
-  inline static void run(Derived1 &dst, const Derived2 &src)
-  {
-    const int packetSize = ei_packet_traits<typename Derived1::Scalar>::size;
-    const int packetAlignedMask = packetSize - 1;
-    const int innerSize = dst.innerSize();
-    const int outerSize = dst.outerSize();
-    const int alignedStep = (packetSize - dst.stride() % packetSize) & packetAlignedMask;
-    int alignedStart = ei_assign_traits<Derived1,Derived2>::DstIsAligned ? 0
-                     : ei_alignmentOffset(&dst.coeffRef(0,0), innerSize);
-
-    for(int i = 0; i < outerSize; ++i)
-    {
-      const int alignedEnd = alignedStart + ((innerSize-alignedStart) & ~packetAlignedMask);
-
-      // do the non-vectorizable part of the assignment
-      for (int index = 0; index<alignedStart ; ++index)
-      {
-        if(Derived1::Flags&RowMajorBit)
-          dst.copyCoeff(i, index, src);
-        else
-          dst.copyCoeff(index, i, src);
-      }
-
-      // do the vectorizable part of the assignment
-      for (int index = alignedStart; index<alignedEnd; index+=packetSize)
-      {
-        if(Derived1::Flags&RowMajorBit)
-          dst.template copyPacket<Derived2, Aligned, Unaligned>(i, index, src);
-        else
-          dst.template copyPacket<Derived2, Aligned, Unaligned>(index, i, src);
-      }
-
-      // do the non-vectorizable part of the assignment
-      for (int index = alignedEnd; index<innerSize ; ++index)
-      {
-        if(Derived1::Flags&RowMajorBit)
-          dst.copyCoeff(i, index, src);
-        else
-          dst.copyCoeff(index, i, src);
-      }
-
-      alignedStart = std::min<int>((alignedStart+alignedStep)%packetSize, innerSize);
-    }
-  }
-};
-
-/***************************************************************************
-* Part 4 : implementation of MatrixBase methods
-***************************************************************************/
-
-template<typename Derived>
-template<typename OtherDerived>
-EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>
-  ::lazyAssign(const MatrixBase<OtherDerived>& other)
-{
-  EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(Derived,OtherDerived)
-  EIGEN_STATIC_ASSERT((ei_is_same_type<typename Derived::Scalar, typename OtherDerived::Scalar>::ret),
-    YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
-  ei_assert(rows() == other.rows() && cols() == other.cols());
-  ei_assign_impl<Derived, OtherDerived>::run(derived(),other.derived());
-  return derived();
-}
-
-template<typename Derived, typename OtherDerived,
-         bool EvalBeforeAssigning = (int(OtherDerived::Flags) & EvalBeforeAssigningBit) != 0,
-         bool NeedToTranspose = Derived::IsVectorAtCompileTime
-                && OtherDerived::IsVectorAtCompileTime
-                && int(Derived::RowsAtCompileTime) == int(OtherDerived::ColsAtCompileTime)
-                && int(Derived::ColsAtCompileTime) == int(OtherDerived::RowsAtCompileTime)
-                && int(Derived::SizeAtCompileTime) != 1>
-struct ei_assign_selector;
-
-template<typename Derived, typename OtherDerived>
-struct ei_assign_selector<Derived,OtherDerived,false,false> {
-  EIGEN_STRONG_INLINE static Derived& run(Derived& dst, const OtherDerived& other) { return dst.lazyAssign(other.derived()); }
-};
-template<typename Derived, typename OtherDerived>
-struct ei_assign_selector<Derived,OtherDerived,true,false> {
-  EIGEN_STRONG_INLINE static Derived& run(Derived& dst, const OtherDerived& other) { return dst.lazyAssign(other.eval()); }
-};
-template<typename Derived, typename OtherDerived>
-struct ei_assign_selector<Derived,OtherDerived,false,true> {
-  EIGEN_STRONG_INLINE static Derived& run(Derived& dst, const OtherDerived& other) { return dst.lazyAssign(other.transpose()); }
-};
-template<typename Derived, typename OtherDerived>
-struct ei_assign_selector<Derived,OtherDerived,true,true> {
-  EIGEN_STRONG_INLINE static Derived& run(Derived& dst, const OtherDerived& other) { return dst.lazyAssign(other.transpose().eval()); }
-};
-
-template<typename Derived>
-template<typename OtherDerived>
-EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>
-  ::operator=(const MatrixBase<OtherDerived>& other)
-{
-  return ei_assign_selector<Derived,OtherDerived>::run(derived(), other.derived());
-}
-
-#endif // EIGEN_ASSIGN_H
diff --git a/extern/Eigen2/Eigen/src/Core/Block.h b/extern/Eigen2/Eigen/src/Core/Block.h
deleted file mode 100644 (file)
index 7f422aa..0000000
+++ /dev/null
@@ -1,752 +0,0 @@
-// This file is part of Eigen, a lightweight C++ template library
-// for linear algebra. Eigen itself is part of the KDE project.
-//
-// Copyright (C) 2008 Gael Guennebaud <g.gael@free.fr>
-// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
-//
-// Eigen is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 3 of the License, or (at your option) any later version.
-//
-// Alternatively, you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as
-// published by the Free Software Foundation; either version 2 of
-// the License, or (at your option) any later version.
-//
-// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
-// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License and a copy of the GNU General Public License along with
-// Eigen. If not, see <http://www.gnu.org/licenses/>.
-
-#ifndef EIGEN_BLOCK_H
-#define EIGEN_BLOCK_H
-
-/** \class Block
-  *
-  * \brief Expression of a fixed-size or dynamic-size block
-  *
-  * \param MatrixType the type of the object in which we are taking a block
-  * \param BlockRows the number of rows of the block we are taking at compile time (optional)
-  * \param BlockCols the number of columns of the block we are taking at compile time (optional)
-  * \param _PacketAccess allows to enforce aligned loads and stores if set to ForceAligned.
-  *                      The default is AsRequested. This parameter is internaly used by Eigen
-  *                      in expressions such as \code mat.block() += other; \endcode and most of
-  *                      the time this is the only way it is used.
-  * \param _DirectAccessStatus \internal used for partial specialization
-  *
-  * This class represents an expression of either a fixed-size or dynamic-size block. It is the return
-  * type of MatrixBase::block(int,int,int,int) and MatrixBase::block<int,int>(int,int) and
-  * most of the time this is the only way it is used.
-  *
-  * However, if you want to directly maniputate block expressions,
-  * for instance if you want to write a function returning such an expression, you
-  * will need to use this class.
-  *
-  * Here is an example illustrating the dynamic case:
-  * \include class_Block.cpp
-  * Output: \verbinclude class_Block.out
-  *
-  * \note Even though this expression has dynamic size, in the case where \a MatrixType
-  * has fixed size, this expression inherits a fixed maximal size which means that evaluating
-  * it does not cause a dynamic memory allocation.
-  *
-  * Here is an example illustrating the fixed-size case:
-  * \include class_FixedBlock.cpp
-  * Output: \verbinclude class_FixedBlock.out
-  *
-  * \sa MatrixBase::block(int,int,int,int), MatrixBase::block(int,int), class VectorBlock
-  */
-
-template<typename MatrixType, int BlockRows, int BlockCols, int _PacketAccess, int _DirectAccessStatus>
-struct ei_traits<Block<MatrixType, BlockRows, BlockCols, _PacketAccess, _DirectAccessStatus> >
-{
-  typedef typename ei_traits<MatrixType>::Scalar Scalar;
-  typedef typename ei_nested<MatrixType>::type MatrixTypeNested;
-  typedef typename ei_unref<MatrixTypeNested>::type _MatrixTypeNested;
-  enum{
-    RowsAtCompileTime = ei_traits<MatrixType>::RowsAtCompileTime == 1 ? 1 : BlockRows,
-    ColsAtCompileTime = ei_traits<MatrixType>::ColsAtCompileTime == 1 ? 1 : BlockCols,
-    MaxRowsAtCompileTime = RowsAtCompileTime == 1 ? 1
-      : (BlockRows==Dynamic ? int(ei_traits<MatrixType>::MaxRowsAtCompileTime) : BlockRows),
-    MaxColsAtCompileTime = ColsAtCompileTime == 1 ? 1
-      : (BlockCols==Dynamic ? int(ei_traits<MatrixType>::MaxColsAtCompileTime) : BlockCols),
-    RowMajor = int(ei_traits<MatrixType>::Flags)&RowMajorBit,
-    InnerSize = RowMajor ? int(ColsAtCompileTime) : int(RowsAtCompileTime),
-    InnerMaxSize = RowMajor ? int(MaxColsAtCompileTime) : int(MaxRowsAtCompileTime),
-    MaskPacketAccessBit = (InnerMaxSize == Dynamic || (InnerSize >= ei_packet_traits<Scalar>::size))
-                        ? PacketAccessBit : 0,
-    FlagsLinearAccessBit = (RowsAtCompileTime == 1 || ColsAtCompileTime == 1) ? LinearAccessBit : 0,
-    Flags = (ei_traits<MatrixType>::Flags & (HereditaryBits | MaskPacketAccessBit | DirectAccessBit)) | FlagsLinearAccessBit,
-    CoeffReadCost = ei_traits<MatrixType>::CoeffReadCost,
-    PacketAccess = _PacketAccess
-  };
-  typedef typename ei_meta_if<int(PacketAccess)==ForceAligned,
-                 Block<MatrixType, BlockRows, BlockCols, _PacketAccess, _DirectAccessStatus>&,
-                 Block<MatrixType, BlockRows, BlockCols, ForceAligned, _DirectAccessStatus> >::ret AlignedDerivedType;
-};
-
-template<typename MatrixType, int BlockRows, int BlockCols, int PacketAccess, int _DirectAccessStatus> class Block
-  : public MatrixBase<Block<MatrixType, BlockRows, BlockCols, PacketAccess, _DirectAccessStatus> >
-{
-  public:
-
-    EIGEN_GENERIC_PUBLIC_INTERFACE(Block)
-
-    class InnerIterator;
-
-    /** Column or Row constructor
-      */
-    inline Block(const MatrixType& matrix, int i)
-      : m_matrix(matrix),
-        // It is a row if and only if BlockRows==1 and BlockCols==MatrixType::ColsAtCompileTime,
-        // and it is a column if and only if BlockRows==MatrixType::RowsAtCompileTime and BlockCols==1,
-        // all other cases are invalid.
-        // The case a 1x1 matrix seems ambiguous, but the result is the same anyway.
-        m_startRow( (BlockRows==1) && (BlockCols==MatrixType::ColsAtCompileTime) ? i : 0),
-        m_startCol( (BlockRows==MatrixType::RowsAtCompileTime) && (BlockCols==1) ? i : 0),
-        m_blockRows(matrix.rows()), // if it is a row, then m_blockRows has a fixed-size of 1, so no pb to try to overwrite it
-        m_blockCols(matrix.cols())  // same for m_blockCols
-    {
-      ei_assert( (i>=0) && (
-          ((BlockRows==1) && (BlockCols==MatrixType::ColsAtCompileTime) && i<matrix.rows())
-        ||((BlockRows==MatrixType::RowsAtCompileTime) && (BlockCols==1) && i<matrix.cols())));
-    }
-
-    /** Fixed-size constructor
-      */
-    inline Block(const MatrixType& matrix, int startRow, int startCol)
-      : m_matrix(matrix), m_startRow(startRow), m_startCol(startCol),
-        m_blockRows(matrix.rows()), m_blockCols(matrix.cols())
-    {
-      EIGEN_STATIC_ASSERT(RowsAtCompileTime!=Dynamic && ColsAtCompileTime!=Dynamic,THIS_METHOD_IS_ONLY_FOR_FIXED_SIZE)
-      ei_assert(startRow >= 0 && BlockRows >= 1 && startRow + BlockRows <= matrix.rows()
-          && startCol >= 0 && BlockCols >= 1 && startCol + BlockCols <= matrix.cols());
-    }
-
-    /** Dynamic-size constructor
-      */
-    inline Block(const MatrixType& matrix,
-          int startRow, int startCol,
-          int blockRows, int blockCols)
-      : m_matrix(matrix), m_startRow(startRow), m_startCol(startCol),
-                          m_blockRows(blockRows), m_blockCols(blockCols)
-    {
-      ei_assert((RowsAtCompileTime==Dynamic || RowsAtCompileTime==blockRows)
-          && (ColsAtCompileTime==Dynamic || ColsAtCompileTime==blockCols));
-      ei_assert(startRow >= 0 && blockRows >= 1 && startRow + blockRows <= matrix.rows()
-          && startCol >= 0 && blockCols >= 1 && startCol + blockCols <= matrix.cols());
-    }
-
-    EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Block)
-
-    inline int rows() const { return m_blockRows.value(); }
-    inline int cols() const { return m_blockCols.value(); }
-
-    inline Scalar& coeffRef(int row, int col)
-    {
-      return m_matrix.const_cast_derived()
-               .coeffRef(row + m_startRow.value(), col + m_startCol.value());
-    }
-
-    inline const Scalar coeff(int row, int col) const
-    {
-      return m_matrix.coeff(row + m_startRow.value(), col + m_startCol.value());
-    }
-
-    inline Scalar& coeffRef(int index)
-    {
-      return m_matrix.const_cast_derived()
-             .coeffRef(m_startRow.value() + (RowsAtCompileTime == 1 ? 0 : index),
-                       m_startCol.value() + (RowsAtCompileTime == 1 ? index : 0));
-    }
-
-    inline const Scalar coeff(int index) const
-    {
-      return m_matrix
-             .coeff(m_startRow.value() + (RowsAtCompileTime == 1 ? 0 : index),
-                    m_startCol.value() + (RowsAtCompileTime == 1 ? index : 0));
-    }
-
-    template<int LoadMode>
-    inline PacketScalar packet(int row, int col) const
-    {
-      return m_matrix.template packet<Unaligned>
-              (row + m_startRow.value(), col + m_startCol.value());
-    }
-
-    template<int LoadMode>
-    inline void writePacket(int row, int col, const PacketScalar& x)
-    {
-      m_matrix.const_cast_derived().template writePacket<Unaligned>
-              (row + m_startRow.value(), col + m_startCol.value(), x);
-    }
-
-    template<int LoadMode>
-    inline PacketScalar packet(int index) const
-    {
-      return m_matrix.template packet<Unaligned>
-              (m_startRow.value() + (RowsAtCompileTime == 1 ? 0 : index),
-               m_startCol.value() + (RowsAtCompileTime == 1 ? index : 0));
-    }
-
-    template<int LoadMode>
-    inline void writePacket(int index, const PacketScalar& x)
-    {
-      m_matrix.const_cast_derived().template writePacket<Unaligned>
-         (m_startRow.value() + (RowsAtCompileTime == 1 ? 0 : index),
-          m_startCol.value() + (RowsAtCompileTime == 1 ? index : 0), x);
-    }
-
-  protected:
-
-    const typename MatrixType::Nested m_matrix;
-    const ei_int_if_dynamic<MatrixType::RowsAtCompileTime == 1 ? 0 : Dynamic> m_startRow;
-    const ei_int_if_dynamic<MatrixType::ColsAtCompileTime == 1 ? 0 : Dynamic> m_startCol;
-    const ei_int_if_dynamic<RowsAtCompileTime> m_blockRows;
-    const ei_int_if_dynamic<ColsAtCompileTime> m_blockCols;
-};
-
-/** \internal */
-template<typename MatrixType, int BlockRows, int BlockCols, int PacketAccess>
-class Block<MatrixType,BlockRows,BlockCols,PacketAccess,HasDirectAccess>
-  : public MapBase<Block<MatrixType, BlockRows, BlockCols,PacketAccess,HasDirectAccess> >
-{
-  public:
-
-    _EIGEN_GENERIC_PUBLIC_INTERFACE(Block, MapBase<Block>)
-
-    class InnerIterator;
-    typedef typename ei_traits<Block>::AlignedDerivedType AlignedDerivedType;
-    friend class Block<MatrixType,BlockRows,BlockCols,PacketAccess==AsRequested?ForceAligned:AsRequested,HasDirectAccess>;
-
-    EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Block)
-
-    AlignedDerivedType _convertToForceAligned()
-    {
-      return Block<MatrixType,BlockRows,BlockCols,ForceAligned,HasDirectAccess>
-                    (m_matrix, Base::m_data, Base::m_rows.value(), Base::m_cols.value());
-    }
-
-    /** Column or Row constructor
-      */
-    inline Block(const MatrixType& matrix, int i)
-      : Base(&matrix.const_cast_derived().coeffRef(
-              (BlockRows==1) && (BlockCols==MatrixType::ColsAtCompileTime) ? i : 0,
-              (BlockRows==MatrixType::RowsAtCompileTime) && (BlockCols==1) ? i : 0),
-             BlockRows==1 ? 1 : matrix.rows(),
-             BlockCols==1 ? 1 : matrix.cols()),
-        m_matrix(matrix)
-    {
-      ei_assert( (i>=0) && (
-          ((BlockRows==1) && (BlockCols==MatrixType::ColsAtCompileTime) && i<matrix.rows())
-        ||((BlockRows==MatrixType::RowsAtCompileTime) && (BlockCols==1) && i<matrix.cols())));
-    }
-
-    /** Fixed-size constructor
-      */
-    inline Block(const MatrixType& matrix, int startRow, int startCol)
-      : Base(&matrix.const_cast_derived().coeffRef(startRow,startCol)), m_matrix(matrix)
-    {
-      ei_assert(startRow >= 0 && BlockRows >= 1 && startRow + BlockRows <= matrix.rows()
-             && startCol >= 0 && BlockCols >= 1 && startCol + BlockCols <= matrix.cols());
-    }
-
-    /** Dynamic-size constructor
-      */
-    inline Block(const MatrixType& matrix,
-          int startRow, int startCol,
-          int blockRows, int blockCols)
-      : Base(&matrix.const_cast_derived().coeffRef(startRow,startCol), blockRows, blockCols),
-        m_matrix(matrix)
-    {
-      ei_assert((RowsAtCompileTime==Dynamic || RowsAtCompileTime==blockRows)
-             && (ColsAtCompileTime==Dynamic || ColsAtCompileTime==blockCols));
-      ei_assert(startRow >= 0 && blockRows >= 1 && startRow + blockRows <= matrix.rows()
-             && startCol >= 0 && blockCols >= 1 && startCol + blockCols <= matrix.cols());
-    }
-
-    inline int stride(void) const { return m_matrix.stride(); }
-
-  protected:
-
-    /** \internal used by allowAligned() */
-    inline Block(const MatrixType& matrix, const Scalar* data, int blockRows, int blockCols)
-      : Base(data, blockRows, blockCols), m_matrix(matrix)
-    {}
-
-    const typename MatrixType::Nested m_matrix;
-};
-
-/** \returns a dynamic-size expression of a block in *this.
-  *
-  * \param startRow the first row in the block
-  * \param startCol the first column in the block
-  * \param blockRows the number of rows in the block
-  * \param blockCols the number of columns in the block
-  *
-  * \addexample BlockIntIntIntInt \label How to reference a sub-matrix (dynamic-size)
-  *
-  * Example: \include MatrixBase_block_int_int_int_int.cpp
-  * Output: \verbinclude MatrixBase_block_int_int_int_int.out
-  *
-  * \note Even though the returned expression has dynamic size, in the case
-  * when it is applied to a fixed-size matrix, it inherits a fixed maximal size,
-  * which means that evaluating it does not cause a dynamic memory allocation.
-  *
-  * \sa class Block, block(int,int)
-  */
-template<typename Derived>
-inline typename BlockReturnType<Derived>::Type MatrixBase<Derived>
-  ::block(int startRow, int startCol, int blockRows, int blockCols)
-{
-  return typename BlockReturnType<Derived>::Type(derived(), startRow, startCol, blockRows, blockCols);
-}
-
-/** This is the const version of block(int,int,int,int). */
-template<typename Derived>
-inline const typename BlockReturnType<Derived>::Type MatrixBase<Derived>
-  ::block(int startRow, int startCol, int blockRows, int blockCols) const
-{
-  return typename BlockReturnType<Derived>::Type(derived(), startRow, startCol, blockRows, blockCols);
-}
-
-/** \returns a dynamic-size expression of a segment (i.e. a vector block) in *this.
-  *
-  * \only_for_vectors
-  *
-  * \addexample SegmentIntInt \label How to reference a sub-vector (dynamic size)
-  *
-  * \param start the first coefficient in the segment
-  * \param size the number of coefficients in the segment
-  *
-  * Example: \include MatrixBase_segment_int_int.cpp
-  * Output: \verbinclude MatrixBase_segment_int_int.out
-  *
-  * \note Even though the returned expression has dynamic size, in the case
-  * when it is applied to a fixed-size vector, it inherits a fixed maximal size,
-  * which means that evaluating it does not cause a dynamic memory allocation.
-  *
-  * \sa class Block, segment(int)
-  */
-template<typename Derived>
-inline typename BlockReturnType<Derived>::SubVectorType MatrixBase<Derived>
-  ::segment(int start, int size)
-{
-  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
-  return typename BlockReturnType<Derived>::SubVectorType(derived(), RowsAtCompileTime == 1 ? 0 : start,
-                                   ColsAtCompileTime == 1 ? 0 : start,
-                                   RowsAtCompileTime == 1 ? 1 : size,
-                                   ColsAtCompileTime == 1 ? 1 : size);
-}
-
-/** This is the const version of segment(int,int).*/
-template<typename Derived>
-inline const typename BlockReturnType<Derived>::SubVectorType
-MatrixBase<Derived>::segment(int start, int size) const
-{
-  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
-  return typename BlockReturnType<Derived>::SubVectorType(derived(), RowsAtCompileTime == 1 ? 0 : start,
-                                   ColsAtCompileTime == 1 ? 0 : start,
-                                   RowsAtCompileTime == 1 ? 1 : size,
-                                   ColsAtCompileTime == 1 ? 1 : size);
-}
-
-/** \returns a dynamic-size expression of the first coefficients of *this.
-  *
-  * \only_for_vectors
-  *
-  * \param size the number of coefficients in the block
-  *
-  * \addexample BlockInt \label How to reference a sub-vector (fixed-size)
-  *
-  * Example: \include MatrixBase_start_int.cpp
-  * Output: \verbinclude MatrixBase_start_int.out
-  *
-  * \note Even though the returned expression has dynamic size, in the case
-  * when it is applied to a fixed-size vector, it inherits a fixed maximal size,
-  * which means that evaluating it does not cause a dynamic memory allocation.
-  *
-  * \sa class Block, block(int,int)
-  */
-template<typename Derived>
-inline typename BlockReturnType<Derived,Dynamic>::SubVectorType
-MatrixBase<Derived>::start(int size)
-{
-  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
-  return Block<Derived,
-               RowsAtCompileTime == 1 ? 1 : Dynamic,
-               ColsAtCompileTime == 1 ? 1 : Dynamic>
-              (derived(), 0, 0,
-               RowsAtCompileTime == 1 ? 1 : size,
-               ColsAtCompileTime == 1 ? 1 : size);
-}
-
-/** This is the const version of start(int).*/
-template<typename Derived>
-inline const typename BlockReturnType<Derived,Dynamic>::SubVectorType
-MatrixBase<Derived>::start(int size) const
-{
-  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
-  return Block<Derived,
-               RowsAtCompileTime == 1 ? 1 : Dynamic,
-               ColsAtCompileTime == 1 ? 1 : Dynamic>
-              (derived(), 0, 0,
-               RowsAtCompileTime == 1 ? 1 : size,
-               ColsAtCompileTime == 1 ? 1 : size);
-}
-
-/** \returns a dynamic-size expression of the last coefficients of *this.
-  *
-  * \only_for_vectors
-  *
-  * \param size the number of coefficients in the block
-  *
-  * \addexample BlockEnd \label How to reference the end of a vector (fixed-size)
-  *
-  * Example: \include MatrixBase_end_int.cpp
-  * Output: \verbinclude MatrixBase_end_int.out
-  *
-  * \note Even though the returned expression has dynamic size, in the case
-  * when it is applied to a fixed-size vector, it inherits a fixed maximal size,
-  * which means that evaluating it does not cause a dynamic memory allocation.
-  *
-  * \sa class Block, block(int,int)
-  */
-template<typename Derived>
-inline typename BlockReturnType<Derived,Dynamic>::SubVectorType
-MatrixBase<Derived>::end(int size)
-{
-  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
-  return Block<Derived,
-               RowsAtCompileTime == 1 ? 1 : Dynamic,
-               ColsAtCompileTime == 1 ? 1 : Dynamic>
-              (derived(),
-               RowsAtCompileTime == 1 ? 0 : rows() - size,
-               ColsAtCompileTime == 1 ? 0 : cols() - size,
-               RowsAtCompileTime == 1 ? 1 : size,
-               ColsAtCompileTime == 1 ? 1 : size);
-}
-
-/** This is the const version of end(int).*/
-template<typename Derived>
-inline const typename BlockReturnType<Derived,Dynamic>::SubVectorType
-MatrixBase<Derived>::end(int size) const
-{
-  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
-  return Block<Derived,
-               RowsAtCompileTime == 1 ? 1 : Dynamic,
-               ColsAtCompileTime == 1 ? 1 : Dynamic>
-              (derived(),
-               RowsAtCompileTime == 1 ? 0 : rows() - size,
-               ColsAtCompileTime == 1 ? 0 : cols() - size,
-               RowsAtCompileTime == 1 ? 1 : size,
-               ColsAtCompileTime == 1 ? 1 : size);
-}
-
-/** \returns a fixed-size expression of a segment (i.e. a vector block) in \c *this
-  *
-  * \only_for_vectors
-  *
-  * The template parameter \a Size is the number of coefficients in the block
-  *
-  * \param start the index of the first element of the sub-vector
-  *
-  * Example: \include MatrixBase_template_int_segment.cpp
-  * Output: \verbinclude MatrixBase_template_int_segment.out
-  *
-  * \sa class Block
-  */
-template<typename Derived>
-template<int Size>
-inline typename BlockReturnType<Derived,Size>::SubVectorType
-MatrixBase<Derived>::segment(int start)
-{
-  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
-  return Block<Derived,  (RowsAtCompileTime == 1 ? 1 : Size),
-                         (ColsAtCompileTime == 1 ? 1 : Size)>
-              (derived(), RowsAtCompileTime == 1 ? 0 : start,
-                          ColsAtCompileTime == 1 ? 0 : start);
-}
-
-/** This is the const version of segment<int>(int).*/
-template<typename Derived>
-template<int Size>
-inline const typename BlockReturnType<Derived,Size>::SubVectorType
-MatrixBase<Derived>::segment(int start) const
-{
-  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
-  return Block<Derived,  (RowsAtCompileTime == 1 ? 1 : Size),
-                         (ColsAtCompileTime == 1 ? 1 : Size)>
-              (derived(), RowsAtCompileTime == 1 ? 0 : start,
-                          ColsAtCompileTime == 1 ? 0 : start);
-}
-
-/** \returns a fixed-size expression of the first coefficients of *this.
-  *
-  * \only_for_vectors
-  *
-  * The template parameter \a Size is the number of coefficients in the block
-  *
-  * \addexample BlockStart \label How to reference the start of a vector (fixed-size)
-  *
-  * Example: \include MatrixBase_template_int_start.cpp
-  * Output: \verbinclude MatrixBase_template_int_start.out
-  *
-  * \sa class Block
-  */
-template<typename Derived>
-template<int Size>
-inline typename BlockReturnType<Derived,Size>::SubVectorType
-MatrixBase<Derived>::start()
-{
-  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
-  return Block<Derived, (RowsAtCompileTime == 1 ? 1 : Size),
-                        (ColsAtCompileTime == 1 ? 1 : Size)>(derived(), 0, 0);
-}
-
-/** This is the const version of start<int>().*/
-template<typename Derived>
-template<int Size>
-inline const typename BlockReturnType<Derived,Size>::SubVectorType
-MatrixBase<Derived>::start() const
-{
-  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
-  return Block<Derived, (RowsAtCompileTime == 1 ? 1 : Size),
-                        (ColsAtCompileTime == 1 ? 1 : Size)>(derived(), 0, 0);
-}
-
-/** \returns a fixed-size expression of the last coefficients of *this.
-  *
-  * \only_for_vectors
-  *
-  * The template parameter \a Size is the number of coefficients in the block
-  *
-  * Example: \include MatrixBase_template_int_end.cpp
-  * Output: \verbinclude MatrixBase_template_int_end.out
-  *
-  * \sa class Block
-  */
-template<typename Derived>
-template<int Size>
-inline typename BlockReturnType<Derived,Size>::SubVectorType
-MatrixBase<Derived>::end()
-{
-  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
-  return Block<Derived, RowsAtCompileTime == 1 ? 1 : Size,
-                        ColsAtCompileTime == 1 ? 1 : Size>
-           (derived(),
-            RowsAtCompileTime == 1 ? 0 : rows() - Size,
-            ColsAtCompileTime == 1 ? 0 : cols() - Size);
-}
-
-/** This is the const version of end<int>.*/
-template<typename Derived>
-template<int Size>
-inline const typename BlockReturnType<Derived,Size>::SubVectorType
-MatrixBase<Derived>::end() const
-{
-  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
-  return Block<Derived, RowsAtCompileTime == 1 ? 1 : Size,
-                        ColsAtCompileTime == 1 ? 1 : Size>
-           (derived(),
-            RowsAtCompileTime == 1 ? 0 : rows() - Size,
-            ColsAtCompileTime == 1 ? 0 : cols() - Size);
-}
-
-/** \returns a dynamic-size expression of a corner of *this.
-  *
-  * \param type the type of corner. Can be \a Eigen::TopLeft, \a Eigen::TopRight,
-  * \a Eigen::BottomLeft, \a Eigen::BottomRight.
-  * \param cRows the number of rows in the corner
-  * \param cCols the number of columns in the corner
-  *
-  * \addexample BlockCornerDynamicSize \label How to reference a sub-corner of a matrix
-  *
-  * Example: \include MatrixBase_corner_enum_int_int.cpp
-  * Output: \verbinclude MatrixBase_corner_enum_int_int.out
-  *
-  * \note Even though the returned expression has dynamic size, in the case
-  * when it is applied to a fixed-size matrix, it inherits a fixed maximal size,
-  * which means that evaluating it does not cause a dynamic memory allocation.
-  *
-  * \sa class Block, block(int,int,int,int)
-  */
-template<typename Derived>
-inline typename BlockReturnType<Derived>::Type MatrixBase<Derived>
-  ::corner(CornerType type, int cRows, int cCols)
-{
-  switch(type)
-  {
-    default:
-      ei_assert(false && "Bad corner type.");
-    case TopLeft:
-      return typename BlockReturnType<Derived>::Type(derived(), 0, 0, cRows, cCols);
-    case TopRight:
-      return typename BlockReturnType<Derived>::Type(derived(), 0, cols() - cCols, cRows, cCols);
-    case BottomLeft:
-      return typename BlockReturnType<Derived>::Type(derived(), rows() - cRows, 0, cRows, cCols);
-    case BottomRight:
-      return typename BlockReturnType<Derived>::Type(derived(), rows() - cRows, cols() - cCols, cRows, cCols);
-  }
-}
-
-/** This is the const version of corner(CornerType, int, int).*/
-template<typename Derived>
-inline const typename BlockReturnType<Derived>::Type
-MatrixBase<Derived>::corner(CornerType type, int cRows, int cCols) const
-{
-  switch(type)
-  {
-    default:
-      ei_assert(false && "Bad corner type.");
-    case TopLeft:
-      return typename BlockReturnType<Derived>::Type(derived(), 0, 0, cRows, cCols);
-    case TopRight:
-      return typename BlockReturnType<Derived>::Type(derived(), 0, cols() - cCols, cRows, cCols);
-    case BottomLeft:
-      return typename BlockReturnType<Derived>::Type(derived(), rows() - cRows, 0, cRows, cCols);
-    case BottomRight:
-      return typename BlockReturnType<Derived>::Type(derived(), rows() - cRows, cols() - cCols, cRows, cCols);
-  }
-}
-
-/** \returns a fixed-size expression of a corner of *this.
-  *
-  * \param type the type of corner. Can be \a Eigen::TopLeft, \a Eigen::TopRight,
-  * \a Eigen::BottomLeft, \a Eigen::BottomRight.
-  *
-  * The template parameters CRows and CCols arethe number of rows and columns in the corner.
-  *
-  * Example: \include MatrixBase_template_int_int_corner_enum.cpp
-  * Output: \verbinclude MatrixBase_template_int_int_corner_enum.out
-  *
-  * \sa class Block, block(int,int,int,int)
-  */
-template<typename Derived>
-template<int CRows, int CCols>
-inline typename BlockReturnType<Derived, CRows, CCols>::Type
-MatrixBase<Derived>::corner(CornerType type)
-{
-  switch(type)
-  {
-    default:
-      ei_assert(false && "Bad corner type.");
-    case TopLeft:
-      return Block<Derived, CRows, CCols>(derived(), 0, 0);
-    case TopRight:
-      return Block<Derived, CRows, CCols>(derived(), 0, cols() - CCols);
-    case BottomLeft:
-      return Block<Derived, CRows, CCols>(derived(), rows() - CRows, 0);
-    case BottomRight:
-      return Block<Derived, CRows, CCols>(derived(), rows() - CRows, cols() - CCols);
-  }
-}
-
-/** This is the const version of corner<int, int>(CornerType).*/
-template<typename Derived>
-template<int CRows, int CCols>
-inline const typename BlockReturnType<Derived, CRows, CCols>::Type
-MatrixBase<Derived>::corner(CornerType type) const
-{
-  switch(type)
-  {
-    default:
-      ei_assert(false && "Bad corner type.");
-    case TopLeft:
-      return Block<Derived, CRows, CCols>(derived(), 0, 0);
-    case TopRight:
-      return Block<Derived, CRows, CCols>(derived(), 0, cols() - CCols);
-    case BottomLeft:
-      return Block<Derived, CRows, CCols>(derived(), rows() - CRows, 0);
-    case BottomRight:
-      return Block<Derived, CRows, CCols>(derived(), rows() - CRows, cols() - CCols);
-  }
-}
-
-/** \returns a fixed-size expression of a block in *this.
-  *
-  * The template parameters \a BlockRows and \a BlockCols are the number of
-  * rows and columns in the block.
-  *
-  * \param startRow the first row in the block
-  * \param startCol the first column in the block
-  *
-  * \addexample BlockSubMatrixFixedSize \label How to reference a sub-matrix (fixed-size)
-  *
-  * Example: \include MatrixBase_block_int_int.cpp
-  * Output: \verbinclude MatrixBase_block_int_int.out
-  *
-  * \note since block is a templated member, the keyword template has to be used
-  * if the matrix type is also a template parameter: \code m.template block<3,3>(1,1); \endcode
-  *
-  * \sa class Block, block(int,int,int,int)
-  */
-template<typename Derived>
-template<int BlockRows, int BlockCols>
-inline typename BlockReturnType<Derived, BlockRows, BlockCols>::Type
-MatrixBase<Derived>::block(int startRow, int startCol)
-{
-  return Block<Derived, BlockRows, BlockCols>(derived(), startRow, startCol);
-}
-
-/** This is the const version of block<>(int, int). */
-template<typename Derived>
-template<int BlockRows, int BlockCols>
-inline const typename BlockReturnType<Derived, BlockRows, BlockCols>::Type
-MatrixBase<Derived>::block(int startRow, int startCol) const
-{
-  return Block<Derived, BlockRows, BlockCols>(derived(), startRow, startCol);
-}
-
-/** \returns an expression of the \a i-th column of *this. Note that the numbering starts at 0.
-  *
-  * \addexample BlockColumn \label How to reference a single column of a matrix
-  *
-  * Example: \include MatrixBase_col.cpp
-  * Output: \verbinclude MatrixBase_col.out
-  *
-  * \sa row(), class Block */
-template<typename Derived>
-inline typename MatrixBase<Derived>::ColXpr
-MatrixBase<Derived>::col(int i)
-{
-  return ColXpr(derived(), i);
-}
-
-/** This is the const version of col(). */
-template<typename Derived>
-inline const typename MatrixBase<Derived>::ColXpr
-MatrixBase<Derived>::col(int i) const
-{
-  return ColXpr(derived(), i);
-}
-
-/** \returns an expression of the \a i-th row of *this. Note that the numbering starts at 0.
-  *
-  * \addexample BlockRow \label How to reference a single row of a matrix
-  *
-  * Example: \include MatrixBase_row.cpp
-  * Output: \verbinclude MatrixBase_row.out
-  *
-  * \sa col(), class Block */
-template<typename Derived>
-inline typename MatrixBase<Derived>::RowXpr
-MatrixBase<Derived>::row(int i)
-{
-  return RowXpr(derived(), i);
-}
-
-/** This is the const version of row(). */
-template<typename Derived>
-inline const typename MatrixBase<Derived>::RowXpr
-MatrixBase<Derived>::row(int i) const
-{
-  return RowXpr(derived(), i);
-}
-
-#endif // EIGEN_BLOCK_H
diff --git a/extern/Eigen2/Eigen/src/Core/CacheFriendlyProduct.h b/extern/Eigen2/Eigen/src/Core/CacheFriendlyProduct.h
deleted file mode 100644 (file)
index b1362b0..0000000
+++ /dev/null
@@ -1,753 +0,0 @@
-// This file is part of Eigen, a lightweight C++ template library
-// for linear algebra. Eigen itself is part of the KDE project.
-//
-// Copyright (C) 2008 Gael Guennebaud <g.gael@free.fr>
-//
-// Eigen is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 3 of the License, or (at your option) any later version.
-//
-// Alternatively, you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as
-// published by the Free Software Foundation; either version 2 of
-// the License, or (at your option) any later version.
-//
-// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
-// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License and a copy of the GNU General Public License along with
-// Eigen. If not, see <http://www.gnu.org/licenses/>.
-
-#ifndef EIGEN_CACHE_FRIENDLY_PRODUCT_H
-#define EIGEN_CACHE_FRIENDLY_PRODUCT_H
-
-template <int L2MemorySize,typename Scalar>
-struct ei_L2_block_traits {
-  enum {width = 8 * ei_meta_sqrt<L2MemorySize/(64*sizeof(Scalar))>::ret };
-};
-
-#ifndef EIGEN_EXTERN_INSTANTIATIONS
-
-template<typename Scalar>
-static void ei_cache_friendly_product(
-  int _rows, int _cols, int depth,
-  bool _lhsRowMajor, const Scalar* _lhs, int _lhsStride,
-  bool _rhsRowMajor, const Scalar* _rhs, int _rhsStride,
-  bool resRowMajor, Scalar* res, int resStride)
-{
-  const Scalar* EIGEN_RESTRICT lhs;
-  const Scalar* EIGEN_RESTRICT rhs;
-  int lhsStride, rhsStride, rows, cols;
-  bool lhsRowMajor;
-
-  if (resRowMajor)
-  {
-    lhs = _rhs;
-    rhs = _lhs;
-    lhsStride = _rhsStride;
-    rhsStride = _lhsStride;
-    cols = _rows;
-    rows = _cols;
-    lhsRowMajor = !_rhsRowMajor;
-    ei_assert(_lhsRowMajor);
-  }
-  else
-  {
-    lhs = _lhs;
-    rhs = _rhs;
-    lhsStride = _lhsStride;
-    rhsStride = _rhsStride;
-    rows = _rows;
-    cols = _cols;
-    lhsRowMajor = _lhsRowMajor;
-    ei_assert(!_rhsRowMajor);
-  }
-
-  typedef typename ei_packet_traits<Scalar>::type PacketType;
-
-  enum {
-    PacketSize = sizeof(PacketType)/sizeof(Scalar),
-    #if (defined __i386__)
-    // i386 architecture provides only 8 xmm registers,
-    // so let's reduce the max number of rows processed at once.
-    MaxBlockRows = 4,
-    MaxBlockRows_ClampingMask = 0xFFFFFC,
-    #else
-    MaxBlockRows = 8,
-    MaxBlockRows_ClampingMask = 0xFFFFF8,
-    #endif
-    // maximal size of the blocks fitted in L2 cache
-    MaxL2BlockSize = ei_L2_block_traits<EIGEN_TUNE_FOR_CPU_CACHE_SIZE,Scalar>::width
-  };
-
-  const bool resIsAligned = (PacketSize==1) || (((resStride%PacketSize) == 0) && (size_t(res)%16==0));
-
-  const int remainingSize = depth % PacketSize;
-  const int size = depth - remainingSize; // third dimension of the product clamped to packet boundaries
-  const int l2BlockRows = MaxL2BlockSize > rows ? rows : MaxL2BlockSize;
-  const int l2BlockCols = MaxL2BlockSize > cols ? cols : MaxL2BlockSize;
-  const int l2BlockSize = MaxL2BlockSize > size ? size : MaxL2BlockSize;
-  const int l2BlockSizeAligned = (1 + std::max(l2BlockSize,l2BlockCols)/PacketSize)*PacketSize;
-  const bool needRhsCopy = (PacketSize>1) && ((rhsStride%PacketSize!=0) || (size_t(rhs)%16!=0));
-  Scalar* EIGEN_RESTRICT block = 0;
-  const int allocBlockSize = l2BlockRows*size;
-  block = ei_aligned_stack_new(Scalar, allocBlockSize);
-  Scalar* EIGEN_RESTRICT rhsCopy
-    = ei_aligned_stack_new(Scalar, l2BlockSizeAligned*l2BlockSizeAligned);
-
-  // loops on each L2 cache friendly blocks of the result
-  for(int l2i=0; l2i<rows; l2i+=l2BlockRows)
-  {
-    const int l2blockRowEnd = std::min(l2i+l2BlockRows, rows);
-    const int l2blockRowEndBW = l2blockRowEnd & MaxBlockRows_ClampingMask;    // end of the rows aligned to bw
-    const int l2blockRemainingRows = l2blockRowEnd - l2blockRowEndBW;         // number of remaining rows
-    //const int l2blockRowEndBWPlusOne = l2blockRowEndBW + (l2blockRemainingRows?0:MaxBlockRows);
-
-    // build a cache friendly blocky matrix
-    int count = 0;
-
-    // copy l2blocksize rows of m_lhs to blocks of ps x bw
-    for(int l2k=0; l2k<size; l2k+=l2BlockSize)
-    {
-      const int l2blockSizeEnd = std::min(l2k+l2BlockSize, size);
-
-      for (int i = l2i; i<l2blockRowEndBW/*PlusOne*/; i+=MaxBlockRows)
-      {
-        // TODO merge the "if l2blockRemainingRows" using something like:
-        // const int blockRows = std::min(i+MaxBlockRows, rows) - i;
-
-        for (int k=l2k; k<l2blockSizeEnd; k+=PacketSize)
-        {
-          // TODO write these loops using meta unrolling
-          // negligible for large matrices but useful for small ones
-          if (lhsRowMajor)
-          {
-            for (int w=0; w<MaxBlockRows; ++w)
-              for (int s=0; s<PacketSize; ++s)
-                block[count++] = lhs[(i+w)*lhsStride + (k+s)];
-          }
-          else
-          {
-            for (int w=0; w<MaxBlockRows; ++w)
-              for (int s=0; s<PacketSize; ++s)
-                block[count++] = lhs[(i+w) + (k+s)*lhsStride];
-          }
-        }
-      }
-      if (l2blockRemainingRows>0)
-      {
-        for (int k=l2k; k<l2blockSizeEnd; k+=PacketSize)
-        {
-          if (lhsRowMajor)
-          {
-            for (int w=0; w<l2blockRemainingRows; ++w)
-              for (int s=0; s<PacketSize; ++s)
-                block[count++] = lhs[(l2blockRowEndBW+w)*lhsStride + (k+s)];
-          }
-          else
-          {
-            for (int w=0; w<l2blockRemainingRows; ++w)
-              for (int s=0; s<PacketSize; ++s)
-                block[count++] = lhs[(l2blockRowEndBW+w) + (k+s)*lhsStride];
-          }
-        }
-      }
-    }
-
-    for(int l2j=0; l2j<cols; l2j+=l2BlockCols)
-    {
-      int l2blockColEnd = std::min(l2j+l2BlockCols, cols);
-
-      for(int l2k=0; l2k<size; l2k+=l2BlockSize)
-      {
-        // acumulate bw rows of lhs time a single column of rhs to a bw x 1 block of res
-        int l2blockSizeEnd = std::min(l2k+l2BlockSize, size);
-
-        // if not aligned, copy the rhs block
-        if (needRhsCopy)
-          for(int l1j=l2j; l1j<l2blockColEnd; l1j+=1)
-          {
-            ei_internal_assert(l2BlockSizeAligned*(l1j-l2j)+(l2blockSizeEnd-l2k) < l2BlockSizeAligned*l2BlockSizeAligned);
-            memcpy(rhsCopy+l2BlockSizeAligned*(l1j-l2j),&(rhs[l1j*rhsStride+l2k]),(l2blockSizeEnd-l2k)*sizeof(Scalar));
-          }
-
-        // for each bw x 1 result's block
-        for(int l1i=l2i; l1i<l2blockRowEndBW; l1i+=MaxBlockRows)
-        {
-          int offsetblock = l2k * (l2blockRowEnd-l2i) + (l1i-l2i)*(l2blockSizeEnd-l2k) - l2k*MaxBlockRows;
-          const Scalar* EIGEN_RESTRICT localB = &block[offsetblock];
-
-          for(int l1j=l2j; l1j<l2blockColEnd; l1j+=1)
-          {
-            const Scalar* EIGEN_RESTRICT rhsColumn;
-            if (needRhsCopy)
-              rhsColumn = &(rhsCopy[l2BlockSizeAligned*(l1j-l2j)-l2k]);
-            else
-              rhsColumn = &(rhs[l1j*rhsStride]);
-
-            PacketType dst[MaxBlockRows];
-            dst[3] = dst[2] = dst[1] = dst[0] = ei_pset1(Scalar(0.));
-            if (MaxBlockRows==8)
-              dst[7] = dst[6] = dst[5] = dst[4] = dst[0];
-
-            PacketType tmp;
-
-            for(int k=l2k; k<l2blockSizeEnd; k+=PacketSize)
-            {
-              tmp = ei_ploadu(&rhsColumn[k]);
-              PacketType A0, A1, A2, A3, A4, A5;
-              A0 = ei_pload(localB + k*MaxBlockRows);
-              A1 = ei_pload(localB + k*MaxBlockRows+1*PacketSize);
-              A2 = ei_pload(localB + k*MaxBlockRows+2*PacketSize);
-              A3 = ei_pload(localB + k*MaxBlockRows+3*PacketSize);
-              if (MaxBlockRows==8) A4 = ei_pload(localB + k*MaxBlockRows+4*PacketSize);
-              if (MaxBlockRows==8) A5 = ei_pload(localB + k*MaxBlockRows+5*PacketSize);
-              dst[0] = ei_pmadd(tmp, A0, dst[0]);
-              if (MaxBlockRows==8) A0 = ei_pload(localB + k*MaxBlockRows+6*PacketSize);
-              dst[1] = ei_pmadd(tmp, A1, dst[1]);
-              if (MaxBlockRows==8) A1 = ei_pload(localB + k*MaxBlockRows+7*PacketSize);
-              dst[2] = ei_pmadd(tmp, A2, dst[2]);
-              dst[3] = ei_pmadd(tmp, A3, dst[3]);
-              if (MaxBlockRows==8)
-              {
-                dst[4] = ei_pmadd(tmp, A4, dst[4]);
-                dst[5] = ei_pmadd(tmp, A5, dst[5]);
-                dst[6] = ei_pmadd(tmp, A0, dst[6]);
-                dst[7] = ei_pmadd(tmp, A1, dst[7]);
-              }
-            }
-
-            Scalar* EIGEN_RESTRICT localRes = &(res[l1i + l1j*resStride]);
-
-            if (PacketSize>1 && resIsAligned)
-            {
-              // the result is aligned: let's do packet reduction
-              ei_pstore(&(localRes[0]), ei_padd(ei_pload(&(localRes[0])), ei_preduxp(&dst[0])));
-              if (PacketSize==2)
-                ei_pstore(&(localRes[2]), ei_padd(ei_pload(&(localRes[2])), ei_preduxp(&(dst[2]))));
-              if (MaxBlockRows==8)
-              {
-                ei_pstore(&(localRes[4]), ei_padd(ei_pload(&(localRes[4])), ei_preduxp(&(dst[4]))));
-                if (PacketSize==2)
-                  ei_pstore(&(localRes[6]), ei_padd(ei_pload(&(localRes[6])), ei_preduxp(&(dst[6]))));
-              }
-            }
-            else
-            {
-              // not aligned => per coeff packet reduction
-              localRes[0] += ei_predux(dst[0]);
-              localRes[1] += ei_predux(dst[1]);
-              localRes[2] += ei_predux(dst[2]);
-              localRes[3] += ei_predux(dst[3]);
-              if (MaxBlockRows==8)
-              {
-                localRes[4] += ei_predux(dst[4]);
-                localRes[5] += ei_predux(dst[5]);
-                localRes[6] += ei_predux(dst[6]);
-                localRes[7] += ei_predux(dst[7]);
-              }
-            }
-          }
-        }
-        if (l2blockRemainingRows>0)
-        {
-          int offsetblock = l2k * (l2blockRowEnd-l2i) + (l2blockRowEndBW-l2i)*(l2blockSizeEnd-l2k) - l2k*l2blockRemainingRows;
-          const Scalar* localB = &block[offsetblock];
-
-          for(int l1j=l2j; l1j<l2blockColEnd; l1j+=1)
-          {
-            const Scalar* EIGEN_RESTRICT rhsColumn;
-            if (needRhsCopy)
-              rhsColumn = &(rhsCopy[l2BlockSizeAligned*(l1j-l2j)-l2k]);
-            else
-              rhsColumn = &(rhs[l1j*rhsStride]);
-
-            PacketType dst[MaxBlockRows];
-            dst[3] = dst[2] = dst[1] = dst[0] = ei_pset1(Scalar(0.));
-            if (MaxBlockRows==8)
-              dst[7] = dst[6] = dst[5] = dst[4] = dst[0];
-
-            // let's declare a few other temporary registers
-            PacketType tmp;
-
-            for(int k=l2k; k<l2blockSizeEnd; k+=PacketSize)
-            {
-              tmp = ei_pload(&rhsColumn[k]);
-
-                                           dst[0] = ei_pmadd(tmp, ei_pload(&(localB[k*l2blockRemainingRows             ])), dst[0]);
-              if (l2blockRemainingRows>=2) dst[1] = ei_pmadd(tmp, ei_pload(&(localB[k*l2blockRemainingRows+  PacketSize])), dst[1]);
-              if (l2blockRemainingRows>=3) dst[2] = ei_pmadd(tmp, ei_pload(&(localB[k*l2blockRemainingRows+2*PacketSize])), dst[2]);
-              if (l2blockRemainingRows>=4) dst[3] = ei_pmadd(tmp, ei_pload(&(localB[k*l2blockRemainingRows+3*PacketSize])), dst[3]);
-              if (MaxBlockRows==8)
-              {
-                if (l2blockRemainingRows>=5) dst[4] = ei_pmadd(tmp, ei_pload(&(localB[k*l2blockRemainingRows+4*PacketSize])), dst[4]);
-                if (l2blockRemainingRows>=6) dst[5] = ei_pmadd(tmp, ei_pload(&(localB[k*l2blockRemainingRows+5*PacketSize])), dst[5]);
-                if (l2blockRemainingRows>=7) dst[6] = ei_pmadd(tmp, ei_pload(&(localB[k*l2blockRemainingRows+6*PacketSize])), dst[6]);
-                if (l2blockRemainingRows>=8) dst[7] = ei_pmadd(tmp, ei_pload(&(localB[k*l2blockRemainingRows+7*PacketSize])), dst[7]);
-              }
-            }
-
-            Scalar* EIGEN_RESTRICT localRes = &(res[l2blockRowEndBW + l1j*resStride]);
-
-            // process the remaining rows once at a time
-                                         localRes[0] += ei_predux(dst[0]);
-            if (l2blockRemainingRows>=2) localRes[1] += ei_predux(dst[1]);
-            if (l2blockRemainingRows>=3) localRes[2] += ei_predux(dst[2]);
-            if (l2blockRemainingRows>=4) localRes[3] += ei_predux(dst[3]);
-            if (MaxBlockRows==8)
-            {
-              if (l2blockRemainingRows>=5) localRes[4] += ei_predux(dst[4]);
-              if (l2blockRemainingRows>=6) localRes[5] += ei_predux(dst[5]);
-              if (l2blockRemainingRows>=7) localRes[6] += ei_predux(dst[6]);
-              if (l2blockRemainingRows>=8) localRes[7] += ei_predux(dst[7]);
-            }
-
-          }
-        }
-      }
-    }
-  }
-  if (PacketSize>1 && remainingSize)
-  {
-    if (lhsRowMajor)
-    {
-      for (int j=0; j<cols; ++j)
-        for (int i=0; i<rows; ++i)
-        {
-          Scalar tmp = lhs[i*lhsStride+size] * rhs[j*rhsStride+size];
-          // FIXME this loop get vectorized by the compiler !
-          for (int k=1; k<remainingSize; ++k)
-            tmp += lhs[i*lhsStride+size+k] * rhs[j*rhsStride+size+k];
-          res[i+j*resStride] += tmp;
-        }
-    }
-    else
-    {
-      for (int j=0; j<cols; ++j)
-        for (int i=0; i<rows; ++i)
-        {
-          Scalar tmp = lhs[i+size*lhsStride] * rhs[j*rhsStride+size];
-          for (int k=1; k<remainingSize; ++k)
-            tmp += lhs[i+(size+k)*lhsStride] * rhs[j*rhsStride+size+k];
-          res[i+j*resStride] += tmp;
-        }
-    }
-  }
-
-  ei_aligned_stack_delete(Scalar, block, allocBlockSize);
-  ei_aligned_stack_delete(Scalar, rhsCopy, l2BlockSizeAligned*l2BlockSizeAligned);
-}
-
-#endif // EIGEN_EXTERN_INSTANTIATIONS
-
-/* Optimized col-major matrix * vector product:
- * This algorithm processes 4 columns at onces that allows to both reduce
- * the number of load/stores of the result by a factor 4 and to reduce
- * the instruction dependency. Moreover, we know that all bands have the
- * same alignment pattern.
- * TODO: since rhs gets evaluated only once, no need to evaluate it
- */
-template<typename Scalar, typename RhsType>
-static EIGEN_DONT_INLINE void ei_cache_friendly_product_colmajor_times_vector(
-  int size,
-  const Scalar* lhs, int lhsStride,
-  const RhsType& rhs,
-  Scalar* res)
-{
-  #ifdef _EIGEN_ACCUMULATE_PACKETS
-  #error _EIGEN_ACCUMULATE_PACKETS has already been defined
-  #endif
-  #define _EIGEN_ACCUMULATE_PACKETS(A0,A13,A2) \
-    ei_pstore(&res[j], \
-      ei_padd(ei_pload(&res[j]), \
-        ei_padd( \
-          ei_padd(ei_pmul(ptmp0,EIGEN_CAT(ei_ploa , A0)(&lhs0[j])), \
-                  ei_pmul(ptmp1,EIGEN_CAT(ei_ploa , A13)(&lhs1[j]))), \
-          ei_padd(ei_pmul(ptmp2,EIGEN_CAT(ei_ploa , A2)(&lhs2[j])), \
-                  ei_pmul(ptmp3,EIGEN_CAT(ei_ploa , A13)(&lhs3[j]))) )))
-
-  typedef typename ei_packet_traits<Scalar>::type Packet;
-  const int PacketSize = sizeof(Packet)/sizeof(Scalar);
-
-  enum { AllAligned = 0, EvenAligned, FirstAligned, NoneAligned };
-  const int columnsAtOnce = 4;
-  const int peels = 2;
-  const int PacketAlignedMask = PacketSize-1;
-  const int PeelAlignedMask = PacketSize*peels-1;
-
-  // How many coeffs of the result do we have to skip to be aligned.
-  // Here we assume data are at least aligned on the base scalar type that is mandatory anyway.
-  const int alignedStart = ei_alignmentOffset(res,size);
-  const int alignedSize = PacketSize>1 ? alignedStart + ((size-alignedStart) & ~PacketAlignedMask) : 0;
-  const int peeledSize  = peels>1 ? alignedStart + ((alignedSize-alignedStart) & ~PeelAlignedMask) : alignedStart;
-
-  const int alignmentStep = PacketSize>1 ? (PacketSize - lhsStride % PacketSize) & PacketAlignedMask : 0;
-  int alignmentPattern = alignmentStep==0 ? AllAligned
-                       : alignmentStep==(PacketSize/2) ? EvenAligned
-                       : FirstAligned;
-
-  // we cannot assume the first element is aligned because of sub-matrices
-  const int lhsAlignmentOffset = ei_alignmentOffset(lhs,size);
-
-  // find how many columns do we have to skip to be aligned with the result (if possible)
-  int skipColumns = 0;
-  if (PacketSize>1)
-  {
-    ei_internal_assert(size_t(lhs+lhsAlignmentOffset)%sizeof(Packet)==0 || size<PacketSize);
-
-    while (skipColumns<PacketSize &&
-           alignedStart != ((lhsAlignmentOffset + alignmentStep*skipColumns)%PacketSize))
-      ++skipColumns;
-    if (skipColumns==PacketSize)
-    {
-      // nothing can be aligned, no need to skip any column
-      alignmentPattern = NoneAligned;
-      skipColumns = 0;
-    }
-    else
-    {
-      skipColumns = std::min(skipColumns,rhs.size());
-      // note that the skiped columns are processed later.
-    }
-
-    ei_internal_assert((alignmentPattern==NoneAligned) || (size_t(lhs+alignedStart+lhsStride*skipColumns)%sizeof(Packet))==0);
-  }
-
-  int offset1 = (FirstAligned && alignmentStep==1?3:1);
-  int offset3 = (FirstAligned && alignmentStep==1?1:3);
-
-  int columnBound = ((rhs.size()-skipColumns)/columnsAtOnce)*columnsAtOnce + skipColumns;
-  for (int i=skipColumns; i<columnBound; i+=columnsAtOnce)
-  {
-    Packet ptmp0 = ei_pset1(rhs[i]),   ptmp1 = ei_pset1(rhs[i+offset1]),
-           ptmp2 = ei_pset1(rhs[i+2]), ptmp3 = ei_pset1(rhs[i+offset3]);
-
-    // this helps a lot generating better binary code
-    const Scalar *lhs0 = lhs + i*lhsStride, *lhs1 = lhs + (i+offset1)*lhsStride,
-                 *lhs2 = lhs + (i+2)*lhsStride, *lhs3 = lhs + (i+offset3)*lhsStride;
-
-    if (PacketSize>1)
-    {
-      /* explicit vectorization */
-      // process initial unaligned coeffs
-      for (int j=0; j<alignedStart; ++j)
-        res[j] += ei_pfirst(ptmp0)*lhs0[j] + ei_pfirst(ptmp1)*lhs1[j] + ei_pfirst(ptmp2)*lhs2[j] + ei_pfirst(ptmp3)*lhs3[j];
-
-      if (alignedSize>alignedStart)
-      {
-        switch(alignmentPattern)
-        {
-          case AllAligned:
-            for (int j = alignedStart; j<alignedSize; j+=PacketSize)
-              _EIGEN_ACCUMULATE_PACKETS(d,d,d);
-            break;
-          case EvenAligned:
-            for (int j = alignedStart; j<alignedSize; j+=PacketSize)
-              _EIGEN_ACCUMULATE_PACKETS(d,du,d);
-            break;
-          case FirstAligned:
-            if(peels>1)
-            {
-              Packet A00, A01, A02, A03, A10, A11, A12, A13;
-
-              A01 = ei_pload(&lhs1[alignedStart-1]);
-              A02 = ei_pload(&lhs2[alignedStart-2]);
-              A03 = ei_pload(&lhs3[alignedStart-3]);
-
-              for (int j = alignedStart; j<peeledSize; j+=peels*PacketSize)
-              {
-                A11 = ei_pload(&lhs1[j-1+PacketSize]);  ei_palign<1>(A01,A11);
-                A12 = ei_pload(&lhs2[j-2+PacketSize]);  ei_palign<2>(A02,A12);
-                A13 = ei_pload(&lhs3[j-3+PacketSize]);  ei_palign<3>(A03,A13);
-
-                A00 = ei_pload (&lhs0[j]);
-                A10 = ei_pload (&lhs0[j+PacketSize]);
-                A00 = ei_pmadd(ptmp0, A00, ei_pload(&res[j]));
-                A10 = ei_pmadd(ptmp0, A10, ei_pload(&res[j+PacketSize]));
-
-                A00 = ei_pmadd(ptmp1, A01, A00);
-                A01 = ei_pload(&lhs1[j-1+2*PacketSize]);  ei_palign<1>(A11,A01);
-                A00 = ei_pmadd(ptmp2, A02, A00);
-                A02 = ei_pload(&lhs2[j-2+2*PacketSize]);  ei_palign<2>(A12,A02);
-                A00 = ei_pmadd(ptmp3, A03, A00);
-                ei_pstore(&res[j],A00);
-                A03 = ei_pload(&lhs3[j-3+2*PacketSize]);  ei_palign<3>(A13,A03);
-                A10 = ei_pmadd(ptmp1, A11, A10);
-                A10 = ei_pmadd(ptmp2, A12, A10);
-                A10 = ei_pmadd(ptmp3, A13, A10);
-                ei_pstore(&res[j+PacketSize],A10);
-              }
-            }
-            for (int j = peeledSize; j<alignedSize; j+=PacketSize)
-              _EIGEN_ACCUMULATE_PACKETS(d,du,du);
-            break;
-          default:
-            for (int j = alignedStart; j<alignedSize; j+=PacketSize)
-              _EIGEN_ACCUMULATE_PACKETS(du,du,du);
-            break;
-        }
-      }
-    } // end explicit vectorization
-
-    /* process remaining coeffs (or all if there is no explicit vectorization) */
-    for (int j=alignedSize; j<size; ++j)
-      res[j] += ei_pfirst(ptmp0)*lhs0[j] + ei_pfirst(ptmp1)*lhs1[j] + ei_pfirst(ptmp2)*lhs2[j] + ei_pfirst(ptmp3)*lhs3[j];
-  }
-
-  // process remaining first and last columns (at most columnsAtOnce-1)
-  int end = rhs.size();
-  int start = columnBound;
-  do
-  {
-    for (int i=start; i<end; ++i)
-    {
-      Packet ptmp0 = ei_pset1(rhs[i]);
-      const Scalar* lhs0 = lhs + i*lhsStride;
-
-      if (PacketSize>1)
-      {
-        /* explicit vectorization */
-        // process first unaligned result's coeffs
-        for (int j=0; j<alignedStart; ++j)
-          res[j] += ei_pfirst(ptmp0) * lhs0[j];
-
-        // process aligned result's coeffs
-        if ((size_t(lhs0+alignedStart)%sizeof(Packet))==0)
-          for (int j = alignedStart;j<alignedSize;j+=PacketSize)
-            ei_pstore(&res[j], ei_pmadd(ptmp0,ei_pload(&lhs0[j]),ei_pload(&res[j])));
-        else
-          for (int j = alignedStart;j<alignedSize;j+=PacketSize)
-            ei_pstore(&res[j], ei_pmadd(ptmp0,ei_ploadu(&lhs0[j]),ei_pload(&res[j])));
-      }
-
-      // process remaining scalars (or all if no explicit vectorization)
-      for (int j=alignedSize; j<size; ++j)
-        res[j] += ei_pfirst(ptmp0) * lhs0[j];
-    }
-    if (skipColumns)
-    {
-      start = 0;
-      end = skipColumns;
-      skipColumns = 0;
-    }
-    else
-      break;
-  } while(PacketSize>1);
-  #undef _EIGEN_ACCUMULATE_PACKETS
-}
-
-// TODO add peeling to mask unaligned load/stores
-template<typename Scalar, typename ResType>
-static EIGEN_DONT_INLINE void ei_cache_friendly_product_rowmajor_times_vector(
-  const Scalar* lhs, int lhsStride,
-  const Scalar* rhs, int rhsSize,
-  ResType& res)
-{
-  #ifdef _EIGEN_ACCUMULATE_PACKETS
-  #error _EIGEN_ACCUMULATE_PACKETS has already been defined
-  #endif
-
-  #define _EIGEN_ACCUMULATE_PACKETS(A0,A13,A2) {\
-    Packet b = ei_pload(&rhs[j]); \
-    ptmp0 = ei_pmadd(b, EIGEN_CAT(ei_ploa,A0) (&lhs0[j]), ptmp0); \
-    ptmp1 = ei_pmadd(b, EIGEN_CAT(ei_ploa,A13)(&lhs1[j]), ptmp1); \
-    ptmp2 = ei_pmadd(b, EIGEN_CAT(ei_ploa,A2) (&lhs2[j]), ptmp2); \
-    ptmp3 = ei_pmadd(b, EIGEN_CAT(ei_ploa,A13)(&lhs3[j]), ptmp3); }
-
-  typedef typename ei_packet_traits<Scalar>::type Packet;
-  const int PacketSize = sizeof(Packet)/sizeof(Scalar);
-
-  enum { AllAligned=0, EvenAligned=1, FirstAligned=2, NoneAligned=3 };
-  const int rowsAtOnce = 4;
-  const int peels = 2;
-  const int PacketAlignedMask = PacketSize-1;
-  const int PeelAlignedMask = PacketSize*peels-1;
-  const int size = rhsSize;
-
-  // How many coeffs of the result do we have to skip to be aligned.
-  // Here we assume data are at least aligned on the base scalar type that is mandatory anyway.
-  const int alignedStart = ei_alignmentOffset(rhs, size);
-  const int alignedSize = PacketSize>1 ? alignedStart + ((size-alignedStart) & ~PacketAlignedMask) : 0;
-  const int peeledSize  = peels>1 ? alignedStart + ((alignedSize-alignedStart) & ~PeelAlignedMask) : alignedStart;
-
-  const int alignmentStep = PacketSize>1 ? (PacketSize - lhsStride % PacketSize) & PacketAlignedMask : 0;
-  int alignmentPattern = alignmentStep==0 ? AllAligned
-                       : alignmentStep==(PacketSize/2) ? EvenAligned
-                       : FirstAligned;
-
-  // we cannot assume the first element is aligned because of sub-matrices
-  const int lhsAlignmentOffset = ei_alignmentOffset(lhs,size);
-
-  // find how many rows do we have to skip to be aligned with rhs (if possible)
-  int skipRows = 0;
-  if (PacketSize>1)
-  {
-    ei_internal_assert(size_t(lhs+lhsAlignmentOffset)%sizeof(Packet)==0  || size<PacketSize);
-
-    while (skipRows<PacketSize &&
-           alignedStart != ((lhsAlignmentOffset + alignmentStep*skipRows)%PacketSize))
-      ++skipRows;
-    if (skipRows==PacketSize)
-    {
-      // nothing can be aligned, no need to skip any column
-      alignmentPattern = NoneAligned;
-      skipRows = 0;
-    }
-    else
-    {
-      skipRows = std::min(skipRows,res.size());
-      // note that the skiped columns are processed later.
-    }
-    ei_internal_assert((alignmentPattern==NoneAligned) || PacketSize==1
-      || (size_t(lhs+alignedStart+lhsStride*skipRows)%sizeof(Packet))==0);
-  }
-
-  int offset1 = (FirstAligned && alignmentStep==1?3:1);
-  int offset3 = (FirstAligned && alignmentStep==1?1:3);
-
-  int rowBound = ((res.size()-skipRows)/rowsAtOnce)*rowsAtOnce + skipRows;
-  for (int i=skipRows; i<rowBound; i+=rowsAtOnce)
-  {
-    Scalar tmp0 = Scalar(0), tmp1 = Scalar(0), tmp2 = Scalar(0), tmp3 = Scalar(0);
-
-    // this helps the compiler generating good binary code
-    const Scalar *lhs0 = lhs + i*lhsStride,     *lhs1 = lhs + (i+offset1)*lhsStride,
-                 *lhs2 = lhs + (i+2)*lhsStride, *lhs3 = lhs + (i+offset3)*lhsStride;
-
-    if (PacketSize>1)
-    {
-      /* explicit vectorization */
-      Packet ptmp0 = ei_pset1(Scalar(0)), ptmp1 = ei_pset1(Scalar(0)), ptmp2 = ei_pset1(Scalar(0)), ptmp3 = ei_pset1(Scalar(0));
-
-      // process initial unaligned coeffs
-      // FIXME this loop get vectorized by the compiler !
-      for (int j=0; j<alignedStart; ++j)
-      {
-        Scalar b = rhs[j];
-        tmp0 += b*lhs0[j]; tmp1 += b*lhs1[j]; tmp2 += b*lhs2[j]; tmp3 += b*lhs3[j];
-      }
-
-      if (alignedSize>alignedStart)
-      {
-        switch(alignmentPattern)
-        {
-          case AllAligned:
-            for (int j = alignedStart; j<alignedSize; j+=PacketSize)
-              _EIGEN_ACCUMULATE_PACKETS(d,d,d);
-            break;
-          case EvenAligned:
-            for (int j = alignedStart; j<alignedSize; j+=PacketSize)
-              _EIGEN_ACCUMULATE_PACKETS(d,du,d);
-            break;
-          case FirstAligned:
-            if (peels>1)
-            {
-              /* Here we proccess 4 rows with with two peeled iterations to hide
-               * tghe overhead of unaligned loads. Moreover unaligned loads are handled
-               * using special shift/move operations between the two aligned packets
-               * overlaping the desired unaligned packet. This is *much* more efficient
-               * than basic unaligned loads.
-               */
-              Packet A01, A02, A03, b, A11, A12, A13;
-              A01 = ei_pload(&lhs1[alignedStart-1]);
-              A02 = ei_pload(&lhs2[alignedStart-2]);
-              A03 = ei_pload(&lhs3[alignedStart-3]);
-
-              for (int j = alignedStart; j<peeledSize; j+=peels*PacketSize)
-              {
-                b = ei_pload(&rhs[j]);
-                A11 = ei_pload(&lhs1[j-1+PacketSize]);  ei_palign<1>(A01,A11);
-                A12 = ei_pload(&lhs2[j-2+PacketSize]);  ei_palign<2>(A02,A12);
-                A13 = ei_pload(&lhs3[j-3+PacketSize]);  ei_palign<3>(A03,A13);
-
-                ptmp0 = ei_pmadd(b, ei_pload (&lhs0[j]), ptmp0);
-                ptmp1 = ei_pmadd(b, A01, ptmp1);
-                A01 = ei_pload(&lhs1[j-1+2*PacketSize]);  ei_palign<1>(A11,A01);
-                ptmp2 = ei_pmadd(b, A02, ptmp2);
-                A02 = ei_pload(&lhs2[j-2+2*PacketSize]);  ei_palign<2>(A12,A02);
-                ptmp3 = ei_pmadd(b, A03, ptmp3);
-                A03 = ei_pload(&lhs3[j-3+2*PacketSize]);  ei_palign<3>(A13,A03);
-
-                b = ei_pload(&rhs[j+PacketSize]);
-                ptmp0 = ei_pmadd(b, ei_pload (&lhs0[j+PacketSize]), ptmp0);
-                ptmp1 = ei_pmadd(b, A11, ptmp1);
-                ptmp2 = ei_pmadd(b, A12, ptmp2);
-                ptmp3 = ei_pmadd(b, A13, ptmp3);
-              }
-            }
-            for (int j = peeledSize; j<alignedSize; j+=PacketSize)
-              _EIGEN_ACCUMULATE_PACKETS(d,du,du);
-            break;
-          default:
-            for (int j = alignedStart; j<alignedSize; j+=PacketSize)
-              _EIGEN_ACCUMULATE_PACKETS(du,du,du);
-            break;
-        }
-        tmp0 += ei_predux(ptmp0);
-        tmp1 += ei_predux(ptmp1);
-        tmp2 += ei_predux(ptmp2);
-        tmp3 += ei_predux(ptmp3);
-      }
-    } // end explicit vectorization
-
-    // process remaining coeffs (or all if no explicit vectorization)
-    // FIXME this loop get vectorized by the compiler !
-    for (int j=alignedSize; j<size; ++j)
-    {
-      Scalar b = rhs[j];
-      tmp0 += b*lhs0[j]; tmp1 += b*lhs1[j]; tmp2 += b*lhs2[j]; tmp3 += b*lhs3[j];
-    }
-    res[i] += tmp0; res[i+offset1] += tmp1; res[i+2] += tmp2; res[i+offset3] += tmp3;
-  }
-
-  // process remaining first and last rows (at most columnsAtOnce-1)
-  int end = res.size();
-  int start = rowBound;
-  do
-  {
-    for (int i=start; i<end; ++i)
-    {
-      Scalar tmp0 = Scalar(0);
-      Packet ptmp0 = ei_pset1(tmp0);
-      const Scalar* lhs0 = lhs + i*lhsStride;
-      // process first unaligned result's coeffs
-      // FIXME this loop get vectorized by the compiler !
-      for (int j=0; j<alignedStart; ++j)
-        tmp0 += rhs[j] * lhs0[j];
-
-      if (alignedSize>alignedStart)
-      {
-        // process aligned rhs coeffs
-        if ((size_t(lhs0+alignedStart)%sizeof(Packet))==0)
-          for (int j = alignedStart;j<alignedSize;j+=PacketSize)
-            ptmp0 = ei_pmadd(ei_pload(&rhs[j]), ei_pload(&lhs0[j]), ptmp0);
-        else
-          for (int j = alignedStart;j<alignedSize;j+=PacketSize)
-            ptmp0 = ei_pmadd(ei_pload(&rhs[j]), ei_ploadu(&lhs0[j]), ptmp0);
-        tmp0 += ei_predux(ptmp0);
-      }
-
-      // process remaining scalars
-      // FIXME this loop get vectorized by the compiler !
-      for (int j=alignedSize; j<size; ++j)
-        tmp0 += rhs[j] * lhs0[j];
-      res[i] += tmp0;
-    }
-    if (skipRows)
-    {
-      start = 0;
-      end = skipRows;
-      skipRows = 0;
-    }
-    else
-      break;
-  } while(PacketSize>1);
-
-  #undef _EIGEN_ACCUMULATE_PACKETS
-}
-
-#endif // EIGEN_CACHE_FRIENDLY_PRODUCT_H
diff --git a/extern/Eigen2/Eigen/src/Core/Coeffs.h b/extern/Eigen2/Eigen/src/Core/Coeffs.h
deleted file mode 100644 (file)
index 23a8422..0000000
+++ /dev/null
@@ -1,384 +0,0 @@
-// This file is part of Eigen, a lightweight C++ template library
-// for linear algebra. Eigen itself is part of the KDE project.
-//
-// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
-//
-// Eigen is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 3 of the License, or (at your option) any later version.
-//
-// Alternatively, you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as
-// published by the Free Software Foundation; either version 2 of
-// the License, or (at your option) any later version.
-//
-// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
-// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License and a copy of the GNU General Public License along with
-// Eigen. If not, see <http://www.gnu.org/licenses/>.
-
-#ifndef EIGEN_COEFFS_H
-#define EIGEN_COEFFS_H
-
-/** Short version: don't use this function, use
-  * \link operator()(int,int) const \endlink instead.
-  *
-  * Long version: this function is similar to
-  * \link operator()(int,int) const \endlink, but without the assertion.
-  * Use this for limiting the performance cost of debugging code when doing
-  * repeated coefficient access. Only use this when it is guaranteed that the
-  * parameters \a row and \a col are in range.
-  *
-  * If EIGEN_INTERNAL_DEBUGGING is defined, an assertion will be made, making this
-  * function equivalent to \link operator()(int,int) const \endlink.
-  *
-  * \sa operator()(int,int) const, coeffRef(int,int), coeff(int) const
-  */
-template<typename Derived>
-EIGEN_STRONG_INLINE const typename ei_traits<Derived>::Scalar MatrixBase<Derived>
-  ::coeff(int row, int col) const
-{
-  ei_internal_assert(row >= 0 && row < rows()
-                     && col >= 0 && col < cols());
-  return derived().coeff(row, col);
-}
-
-/** \returns the coefficient at given the given row and column.
-  *
-  * \sa operator()(int,int), operator[](int) const
-  */
-template<typename Derived>
-EIGEN_STRONG_INLINE const typename ei_traits<Derived>::Scalar MatrixBase<Derived>
-  ::operator()(int row, int col) const
-{
-  ei_assert(row >= 0 && row < rows()
-      && col >= 0 && col < cols());
-  return derived().coeff(row, col);
-}
-
-/** Short version: don't use this function, use
-  * \link operator()(int,int) \endlink instead.
-  *
-  * Long version: this function is similar to
-  * \link operator()(int,int) \endlink, but without the assertion.
-  * Use this for limiting the performance cost of debugging code when doing
-  * repeated coefficient access. Only use this when it is guaranteed that the
-  * parameters \a row and \a col are in range.
-  *
-  * If EIGEN_INTERNAL_DEBUGGING is defined, an assertion will be made, making this
-  * function equivalent to \link operator()(int,int) \endlink.
-  *
-  * \sa operator()(int,int), coeff(int, int) const, coeffRef(int)
-  */
-template<typename Derived>
-EIGEN_STRONG_INLINE typename ei_traits<Derived>::Scalar& MatrixBase<Derived>
-  ::coeffRef(int row, int col)
-{
-  ei_internal_assert(row >= 0 && row < rows()
-                     && col >= 0 && col < cols());
-  return derived().coeffRef(row, col);
-}
-
-/** \returns a reference to the coefficient at given the given row and column.
-  *
-  * \sa operator()(int,int) const, operator[](int)
-  */
-template<typename Derived>
-EIGEN_STRONG_INLINE typename ei_traits<Derived>::Scalar& MatrixBase<Derived>
-  ::operator()(int row, int col)
-{
-  ei_assert(row >= 0 && row < rows()
-      && col >= 0 && col < cols());
-  return derived().coeffRef(row, col);
-}
-
-/** Short version: don't use this function, use
-  * \link operator[](int) const \endlink instead.
-  *
-  * Long version: this function is similar to
-  * \link operator[](int) const \endlink, but without the assertion.
-  * Use this for limiting the performance cost of debugging code when doing
-  * repeated coefficient access. Only use this when it is guaranteed that the
-  * parameter \a index is in range.
-  *
-  * If EIGEN_INTERNAL_DEBUGGING is defined, an assertion will be made, making this
-  * function equivalent to \link operator[](int) const \endlink.
-  *
-  * \sa operator[](int) const, coeffRef(int), coeff(int,int) const
-  */
-template<typename Derived>
-EIGEN_STRONG_INLINE const typename ei_traits<Derived>::Scalar MatrixBase<Derived>
-  ::coeff(int index) const
-{
-  ei_internal_assert(index >= 0 && index < size());
-  return derived().coeff(index);
-}
-
-/** \returns the coefficient at given index.
-  *
-  * This method is allowed only for vector expressions, and for matrix expressions having the LinearAccessBit.
-  *
-  * \sa operator[](int), operator()(int,int) const, x() const, y() const,
-  * z() const, w() const
-  */
-template<typename Derived>
-EIGEN_STRONG_INLINE const typename ei_traits<Derived>::Scalar MatrixBase<Derived>
-  ::operator[](int index) const
-{
-  ei_assert(index >= 0 && index < size());
-  return derived().coeff(index);
-}
-
-/** \returns the coefficient at given index.
-  *
-  * This is synonymous to operator[](int) const.
-  *
-  * This method is allowed only for vector expressions, and for matrix expressions having the LinearAccessBit.
-  *
-  * \sa operator[](int), operator()(int,int) const, x() const, y() const,
-  * z() const, w() const
-  */
-template<typename Derived>
-EIGEN_STRONG_INLINE const typename ei_traits<Derived>::Scalar MatrixBase<Derived>
-  ::operator()(int index) const
-{
-  ei_assert(index >= 0 && index < size());
-  return derived().coeff(index);
-}
-
-/** Short version: don't use this function, use
-  * \link operator[](int) \endlink instead.
-  *
-  * Long version: this function is similar to
-  * \link operator[](int) \endlink, but without the assertion.
-  * Use this for limiting the performance cost of debugging code when doing
-  * repeated coefficient access. Only use this when it is guaranteed that the
-  * parameters \a row and \a col are in range.
-  *
-  * If EIGEN_INTERNAL_DEBUGGING is defined, an assertion will be made, making this
-  * function equivalent to \link operator[](int) \endlink.
-  *
-  * \sa operator[](int), coeff(int) const, coeffRef(int,int)
-  */
-template<typename Derived>
-EIGEN_STRONG_INLINE typename ei_traits<Derived>::Scalar& MatrixBase<Derived>
-  ::coeffRef(int index)
-{
-  ei_internal_assert(index >= 0 && index < size());
-  return derived().coeffRef(index);
-}
-
-/** \returns a reference to the coefficient at given index.
-  *
-  * This method is allowed only for vector expressions, and for matrix expressions having the LinearAccessBit.
-  *
-  * \sa operator[](int) const, operator()(int,int), x(), y(), z(), w()
-  */
-template<typename Derived>
-EIGEN_STRONG_INLINE typename ei_traits<Derived>::Scalar& MatrixBase<Derived>
-  ::operator[](int index)
-{
-  ei_assert(index >= 0 && index < size());
-  return derived().coeffRef(index);
-}
-
-/** \returns a reference to the coefficient at given index.
-  *
-  * This is synonymous to operator[](int).
-  *
-  * This method is allowed only for vector expressions, and for matrix expressions having the LinearAccessBit.
-  *
-  * \sa operator[](int) const, operator()(int,int), x(), y(), z(), w()
-  */
-template<typename Derived>
-EIGEN_STRONG_INLINE typename ei_traits<Derived>::Scalar& MatrixBase<Derived>
-  ::operator()(int index)
-{
-  ei_assert(index >= 0 && index < size());
-  return derived().coeffRef(index);
-}
-
-/** equivalent to operator[](0).  */
-template<typename Derived>
-EIGEN_STRONG_INLINE const typename ei_traits<Derived>::Scalar MatrixBase<Derived>
-  ::x() const { return (*this)[0]; }
-
-/** equivalent to operator[](1).  */
-templa