http://eigen.tuxfamily.org/index.php?title=ChangeLog#Eigen_3.2.4
Eigen 3.2.4
Released on January 21, 2015
Changes since 3.2.3:
- Fix compilation regression in Rotation2D
- Bug 920: fix compilation issue with MSVC 2015.
- Bug 921: fix utilization of bitwise operation on enums in first_aligned.
- Fix compilation with NEON on some platforms.
Eigen 3.2.3
Released on December 16, 2014
Changes since 3.2.2:
- Core:
- Enable Mx0 * 0xN matrix products.
- Bug 859: fix returned values for vectorized versions of exp(NaN), log(NaN), sqrt(NaN) and sqrt(-1).
- Bug 879: tri1 = mat * tri2 was compiling and running incorrectly if tri2 was not numerically triangular. Workaround the issue by evaluating mat*tri2 into a temporary.
- Bug 854: fix numerical issue in SelfAdjointEigenSolver::computeDirect for 3x3 matrices.
- Bug 884: make sure there no call to malloc for zero-sized matrices or for a Ref<> without temporaries.
- Bug 890: fix aliasing detection when applying a permutation.
- Bug 898: MSVC optimization by adding inline hint to const_cast_ptr.
- Bug 853: remove enable_if<> in Ref<> ctor.
- Dense solvers:
- Sparse:
- Fix out-of-bounds memory write when the product of two sparse matrices is completely dense and performed using pruning.
- UmfPack support: fix redundant evaluation/copies when calling compute(), add support for generic expressions as input, and fix extraction of the L and U factors (Bug 911).
- Improve SparseMatrix::block for const matrices (the generic path was used).
- Fix memory pre-allocation when permuting inner vectors of a sparse matrix.
- Fix SparseQR::rank for a completely empty matrix.
- Fix SparseQR for row-major inputs.
- Fix SparseLU::absDeterminant and add respective unit test.
- BiCGSTAB: make sure that good initial guesses are not destroyed by a bad preconditioner.
- Geometry:
- Fix Hyperplane::Through(a,b,c) when points are aligned or identical.
- Fix linking issues in OpenGLSupport.
- OS, build system and doc:
Eigen 3.2.2
Released on August 4, 2014
Changes since 3.2.1:
- Core:
- Relax Ref such that Ref<MatrixXf> accepts a RowVectorXf which can be seen as a degenerate MatrixXf(1,N)
- Fix performance regression for the vectorization of sub columns/rows of matrices.
- EIGEN_STACK_ALLOCATION_LIMIT: Raise its default value to 128KB, make use of it to assert on maximal fixed size object, and allows it to be 0 to mean "no limit".
- Bug 839: Fix 1x1 triangular matrix-vector product.
- Bug 755: CommaInitializer produced wrong assertions in absence of Return-Value-Optimization.
- Dense solvers:
- Add a rank() method with threshold control to JacobiSVD, and make solve uses it to return the minimal norm solution for rank-deficient problems.
- Various numerical fixes in JacobiSVD, including:bug 843, and the move from Lapack to Matlab strategy for the default threshold.
- Various numerical fixes in LDLT, including the case of semi-definite complex matrices.
- Fix ColPivHouseholderQR::rank().
- Bug 222: Make temporary matrix column-major independently of EIGEN_DEFAULT_TO_ROW_MAJOR in BlockHouseholder.
- Sparse:
- http://eigen.tuxfamily.org/bz/show_bug.cgi?id=838 Bug 838]: Fix dense * sparse and sparse * dense outer products and detect outer products from either the lhs or rhs.
- Make the ordering method of SimplicialL[D]LT configurable.
- Fix regression in the restart mechanism of BiCGSTAB.
- Bug 836: extend SparseQR to support more columns than rows.
- Bug 808: Use double instead of float for the increasing size ratio in CompressedStorage::resize, fix implicit conversions from int/longint to float/double, and fix set_from_triplets temporary matrix type.
- Bug 647: Use smart_copy instead of bitwise memcpy in CompressedStorage.
- GMRES: Initialize essential Householder vector with correct dimension.
- Geometry:
- OS, build system and doc:
- Fix compilation with Windows CE.
- Fix some ICEs with VC11.
- Check IMKL version for compatibility with Eigen
- Bug 754: Only inserted (!defined(_WIN32_WCE)) analog to alloc and free implementation.
- Bug 803: Avoid char* to int* conversion.
- Bug 819: Include path of details.h file.
- Bug 738: Use the "current" version of cmake project directories to ease the inclusion of Eigen within other projects.
- Bug 815: Fix doc of FullPivLU wrt permutation matrices.
- Bug 632: doc: Note that dm2 = sm1 + dm1 is not possible
- Extend AsciiQuickReference (real, imag, conjugate, rot90)
Eigen 3.2.1
Released on February 26, 2014
Changes since 3.2.0:
- Eigen2 support is now deprecated and will be removed in version 3.3.
- Core:
- Bug fix for Ref object containing a temporary matrix.
- Bug 654: Allow construction of row vector from 1D array.
- Bug 679: Support cwiseMin() and cwiseMax() on maps.
- Support conservativeResize() on vectors.
- Improve performance of vectorwise and replicate expressions.
- Bug 642: Add vectorization of sqrt for doubles, and make sqrt really safe if EIGEN_FAST_MATH is disabled.
- Bug 616: Try harder to align columns when printing matrices and arrays.
- Bug 579: Add optional run-time parameter to fixed-size block methods.
- Implement .all() and .any() for zero-sized objects
- Bug 708: Add placement new and delete for arrays.
- Bug 503: Better C++11 support.
- Dense linear algebra:
- Bug 689: Speed up some matrix-vector products by using aligned loads if possible.
- Make solve in FullPivHouseholderQR return least-square solution if there is no exact solution.
- Bug 678: Fix fullPivHouseholderQR for rectangular matrices.
- Fix a 0/0 issue in JacobiSVD.
- Bug 736: Wrong result in LDLT::isPositiveDefinite() for semi-definite matrices.
- Bug 740: Fix overflow issue in stableNorm().
- Make pivoting HouseholderQR compatible with custom scalar types.
- Geometry:
- Fix compilation of Transform * UniformScaling
- Sparse matrices:
- Fix elimination tree and SparseQR for fat rectangular matrices.
- Bug 635: add isCompressed to MappedSparseMatrix for compatibility.
- Bug 664: Support iterators without operator< in setFromTriplets().
- Fixes in SparseLU: infinite loop, aliasing issue when solving, overflow in memory allocation, use exceptions only if enabled (bug 672).
- Fixes in SparseQR: reduce explicit zero, assigning result to map, assert catching non-conforming sizes, memory leak.
- Bug 681: Uninitialized value in CholmodSupport which may lead to incorrect results.
- Fix some issues when using a non-standard index type (bug 665 and more)
- Update constrained CG (unsupported module) to Eigen3.
- OS and build system:
- MacOS put OpenGL header files somewhere else from where we expected it.
- Do not assume that alloca() is 16-byte aligned on Windows.
- Compilation fixes when using ICC with Visual Studio.
- Fix Fortran compiler detection in CMake files.
- Fix some of our tests (bugs 744 and 748 and more).
- Fix a few compiler warnings (bug 317 and more).
- Documentation fixes (bugs 609, 638 and 739 and more).
Eigen 3.1.4
Released on August 02, 2013
Changes since 3.1.3:
- Bug 620: Fix robustness and performance issues in JacobiSVD::solve.
- Bug 613: Fix accuracy of SSE sqrt for very small numbers.
- Bug 608: Fix sign computation in LDLT.
- Fix write access to CwiseUnaryView expressions.
- Fix compilation of transposeInPlace() for Array expressions.
- Fix non const data() member in Array and Matrix wrappers.
- Fix a few warnings and compilation issues with recent compiler versions.
- Documentation fixes.
Eigen 3.0.7
Released on August 02, 2013
Changes since 3.0.6:
Eigen 3.2.0
Released on July 24, 2013.
Major new features and optimizations since 3.1:
- Dense world
- New Ref<> class allowing to write non templated function taking various kind of Eigen dense objects without copies.
- New RealQZ factorization and GeneralizedEigenSolver.
- Add vector-wise normalized and normalize functions, and hasNaN/allFinite members.
- Add mixed static/dynamic-size .block<.,.>() functions.
- Optimize outer products for non rank-1 update operations.
- Optimize diagonal products (enable vectorization in more cases).
- Improve robustness and performance in JacobiSVD::solve().
- Sparse world
- New SparseLU module: built-in sparse LU with supernodes and numerical row pivoting (port of SuperLU making the SuperLUSupport module obsolete).
- New SparseQR module: rank-revealing sparse QR factorization with numerical column pivoting.
- New COLAMD ordering and unified ordering API.
- Add support for generic blocks of sparse matrices (read-only).
- Add conservative resize feature on sparse matrices.
- Add uniform support for solving sparse systems with sparse right hand sides.
- Add support for sparse matrix time sparse self-adjoint view products.
- Improve BiCGSTAB robustness with restart.
- Support to external libraries
- New MetisSupport module: wrapper to the famous graph partitioning library.
- New SPQRSupport module: wrapper to suitesparse's supernodal QR solver.
Eigen 3.2-rc2
Released on July 19, 2013.
Changes since 3.2-rc1:
- Rename DenseBase::isFinite() to allFinite() to avoid a future naming collision.
- Fix an ICE with ICC 11.1.
Eigen 3.2-rc1
Released on July 17, 2013.
Main changes since 3.2-beta1:
- New features:
- Bug 562: Add vector-wise normalized and normalize functions.
- Bug 564: Add hasNaN and isFinite members.
- Bug 579: Add support for mixed static/dynamic-size .block().
- Bug 588: Add support for determinant in SparseLU.
- Add support in SparseLU to solve with L and U factors independently.
- Allow multiplication-like binary operators to be applied on type combinations supported by scalar_product_traits.
- Bug 596: Add conversion from SparseQR::matrixQ() to a SparseMatrix.
- Bug 553: Add support for sparse matrix time sparse self-adjoint view products.
- Accuracy and performance:
- Improve BiCGSTAB robustness: fix a divide by zero and allow to restart with a new initial residual reference.
- Bug 71: Enable vectorization of diagonal products in more cases.
- Bug 620: Fix robustness and performance issues in JacobiSVD::solve.
- Bug 609: Improve accuracy and consistency of the eulerAngles functions.
- Bug 613: Fix accuracy of SSE sqrt for very small numbers.
- Enable SSE with ICC even when it mimics a gcc version lower than 4.2.
- Add SSE4 min/max for integers.
- Bug 590 & 591: Minor improvements in NEON vectorization.
- Bug fixes:
- Fix HouseholderSequence::conjugate() and ::adjoint().
- Fix SparseLU for dense matrices and matrices in non compressed mode.
- Fix SparseMatrix::conservativeResize() when one dimension is null.
- Fix transposeInpPlace for arrays.
- Fix handmade_aligned_realloc.
- Bug 554: Fix detection of the presence of posix_memalign with mingw.
- Bug 556: Workaround mingw bug with -O3 or -fipa-cp-clone options.
- Bug 608: Fix sign computation in LDLT.
- Bug 567: Fix iterative solvers to immediately return when the initial guess is the true solution and for trivial solution.
- Bug 607: Fix support for implicit transposition from dense to sparse vectors.
- Bug 611: Fix support for products of the form diagonal_matrix * sparse_matrix * diagonal_matrix.
- Others:
- Bug 583: Add compile-time assertion to check DenseIndex is signed.
- Bug 63: Add lapack unit tests. They are automatically downloaded and configured if EIGEN_ENABLE_LAPACK_TESTS is ON.
- Bug 563: Assignment to Block<SparseMatrix> is now allowed on non-compressed matrices.
- Bug 626: Add assertion on input ranges for coeff* and insert members for sparse objects.
- Bug 314: Move special math functions from internal to numext namespace.
- Fix many warnings and compilation issues with recent compiler versions.
- Many other fixes including Bug 230, Bug 482, Bug 542, Bug 561, Bug 564, Bug 565, Bug 566, Bug 578, Bug 581, Bug 595, Bug 597, Bug 598, Bug 599, Bug 605, Bug 606, Bug 615.
Eigen 3.1.3
Released on April 16, 2013
Changes since 3.1.2:
- Bug 526 - Fix linear vectorized transversal in linspace.
- Bug 551 - Fix compilation issue when using EIGEN_DEFAULT_DENSE_INDEX_TYPE.
- Bug 533 - Fix some missing const qualifiers in Transpose
- Fix a compilation with CGAL::Gmpq by adding explicit internal:: namespace when calling abs().
- Fix computation of outer-stride when calling .real() or .imag().
- Fix handmade_aligned_realloc (affected conservativeResize()).
- Fix sparse vector assignment from a sparse matrix.
- Fix log(0) with SSE.
- Fix bug in aligned_free with windows CE.
- Fix traits of Map<Quaternion.
- Fix a few warnings (507, 535, 581).
- Enable SSE with ICC even when it mimics a gcc version lower than 4.2
- Workaround gcc-4.7 bug #53900 (too aggressive optimization in our alignment check)
Eigen 3.2-beta1
Released on March 07, 2013
Main changes since 3.1:
- Dense modules
- A new Ref<> class allowing to write non templated function taking various kind of Eigen dense objects without copies.
- New RealQZ factorization and GeneralizedEigenSolver
- Optimized outer products for non rank-1 update operations.
- Sparse modules
- New SparseLU module: built-in sparse LU with supernodes and numerical row pivoting (port of SuperLU making the SuperLUSupport module obsolete).
- New SparseQR module: rank-revealing sparse QR factorization with numerical column pivoting.
- OrderingMethods: extended with COLAMD ordering and a unified ordering API.
- Support for generic blocks of sparse matrices.
- Add conservative resize feature on sparse matrices.
- Add uniform support for solving sparse systems with sparse right hand sides.
- Support to external libraries
- New MetisSupport module: wrapper to the famous graph partitioning library.
- New SPQRSupport module: wrapper to suitesparse's supernodal QR solver.
- Misc
- Improved presentation and clarity of Doxygen generated documentation (modules are now organized into chapters, treeview panel and search engine for quick navagitation).
- New compilation token EIGEN_INITIALIZE_MATRICES_BY_NAN to help debugging.
- All bug fixes of the 3.1 branch, plus a couple of other fixes (including 211, 479, 496, 508, 552)
Eigen 3.1.2
Released on Nov 05, 2012
Changes since 3.1.1:
- Bug 524 - Pardiso's parameter array does not have to be aligned!
- Bug 521 - Disable __cpuidex on architectures different that x86 or x86-64 with MSVC.
- Bug 519 - AlignedBox::dim() was wrong for dynamic dimensions.
- Bug 515 - Fix missing explicit scalar conversion.
- Bug 511 - Fix pretty printers on windows.
- Bug 509 - Fix warnings with gcc 4.7
- Bug 501 - Remove aggressive mat/scalar optimization (was replaced by mat*(1/scalar) for non integer types).
- Bug 479 - Use EISPACK's strategy re max number of iters in Schur decomposition.
- Add support for scalar multiple of diagonal matrices.
- Forward resize() function from Array/Matrix wrappers to the nested expression such that mat.array().resize(a,b) is now allowed.
- Windows CE: fix the lack of the aligned_malloc function on this platform.
- Fix comma initializer when inserting empty matrices.
- Fix dense=sparse*diagonal products.
- Fix compilation with m.array().min(scalar) and m.array().max(scalar).
- Fix out-of-range memory access in GEMV (the memory was not used for the computation, only to assemble unaligned packets from aligned packet loads).
- Fix various regressions with MKL support.
- Fix aliasing issue in sparse matrix assignment.
- Remove stupid assert in blue norm.
- Workaround a weird compilation error with MSVC.
Eigen 3.1.1
Released on July 22, 2012
Changes since 3.1.0:
- relicense to MPL2
- add a EIGEN_MPL2_ONLY build option to generate compiler errors when including non-MPL2 modules
- remove dynamic allocation for triangular matrix-matrix products of fixed size objects
- Fix possible underflow issues in SelfAdjointEigenSolver
- Fix issues with fixed-size Diagonal (sub/super diagonal size computation was wrong)
- Bug 487 - Geometry module: isometry * scaling compilation error
- Bug 486 - MKL support: fixed multiple-references linker errors with various decompositions
- Bug 480 - work around compilation error on Android NDK due to isfinite being defined as a macro
- Bug 485 - IterativeLinearSolvers: conflict between a typedef and template type parameter
- Bug 479 - Eigenvalues/Schur: Adjust max iterations count to matrix size
- Fixed Geometry module compilation under MSVC
- Fixed Sparse module compilation under MSVC 2005
Eigen 3.0.6
Released on July 9, 2012
Changes since 3.0.5:
- Bug 447 - fix infinite recursion in ProductBase::coeff()
- Bug 478 - fix RealSchur on a zero matrix
- Bug 477 - fix warnings with gcc 4.7
- Bug 475 - .exp() now returns +inf when overflow occurs (SSE)
- Bug 466 - fix a possible race condition in OpenMP environment (for non OpenMP thread model it is recommended to upgrade to 3.1)
- Bug 362 - fix missing specialization for affine-compact * projective
- Bug 451 - fix a clang warning
- Fix compilation of "somedensematrix.llt().matrixL().transpose()"
- Fix miss-use of the cost-model in Replicate
- Fix use of int versus Index types for Block::m_outerStride
- Fix ambiguous calls to some std functions
- Fix geometry tutorial on scalings
- Fix RVCT 3.1 compiler errors
- Fix implicit scalar conversion in Transform
- Fix typo in NumericalDiff (unsupported module)
- Fix LevenbergMarquart for non double scalar type (unsupported module)
Eigen 3.1.0
Released on June 24, 2012.
Major changes between Eigen 3.0 and Eigen 3.1:
- New features
- New set of officially supported Sparse Modules
- This includes sparse matrix storage, assembly, and many built-in (Cholesky, CG, BiCGSTAB, ILU), and third-party (PaStiX, Cholmod, UmfPack, SuperLU, Pardiso) solvers
- See this page for an overview of the features
- Optional support for Intel MKL
- This includes the BLAS, LAPACK, VML, and Pardiso components
- See this page for the details
- Core
- New vector-wise operators: *, /, *=, /=
- New coefficient-wise operators: &&, ||, min(Scalar), max(Scalar), pow, operator/(Scalar,ArrayBase)
- Decompositions
- Add incremental rank-updates in LLTand LDLT
- New SelfAdjointEigenSolver::computeDirect() function for fast eigen-decomposition through closed-form formulas (only for 2x2 and 3x3 real matrices)
- New set of officially supported Sparse Modules
- Optimizations
- Memory optimizations in JacobiSVD and triangular solves.
- Optimization of reductions via partial unrolling (e.g., dot, sum, norm, etc.)
- Improved performance of small matrix-matrix products and some Transform<> operations
Eigen 3.1.0-rc2
Released on June 21, 2012.
Changes since 3.1.0-rc1:
- Fix a couple of compilation warnings
- Improved documentation, in particular regarding the Geometry and Sparse tutorials, and sparse solver modules
- Fix double preconditioner allocation in JacobiSVD
- Bug 466:RealSchur failed on a zero matrix
- Update Adolc and MPReal support modules
Eigen 3.1.0-rc1
Released on June 14, 2012
Main changes since 3.1.0-beta1:
- Bug 466: fix a possible race condition issue. from now, multithreaded applications that call Eigen from multiple thread must initialize Eigen by calling initParallel().
- For consistency, SimplicialLLT and SimplicialLDLT now factorizes P A P^-1 (instead of P^-1 A P).
- Bug 475: now the vectorized exp operator returns +inf when overflow occurs
- Fix the use of MKL with MSVC by disabling MKL's pow functions.
- Avoid dynamic allocation for fixed size triangular solving
- Fix a compilation issue with ICC 11.1
- Fix ambiguous calls in the math functors
- Fix BTL interface.
Eigen 3.1.0-beta1
Released on June 7, 2012
Main changes since 3.1.0-alpha2:
- API changes
- SimplicialLLt and SimplicialLDLt are now renamed SimplicialLLT and SimplicialLDLT for consistency with the other modules.
- The Pardiso support module is now spelled "PardisoSupport"
- Dense modules:
- Add operator/(Scalar,ArrayBase) and coefficient-wise pow operator.
- Fix automatic evaluation of expressions nested by Replicate (performance improvement)
- Bug 447 - fix infinite recursion in ProductBase::coeff()
- Bug 455 - add support for c++11 in aligned_allocator
- LinSpace: add a missing variant, and fix the size=1 case
- Sparse modules:
- Add an IncompleteLU preconditioner with dual thresholding.
- Add an interface to the parallel Pastix solver
- Improve applicability of permutations (add SparseMatrixBase::twistedBy, handle non symmetric permutations)
- CholmodDecomposition now has explicit variants: CholmodSupernodalLLT, CholmodSimplicialLLT, CholmodSimplicialLDLT
- Add analysePattern/factorize methods to iterative solvers
- Preserve explicit zero in a sparse assignment
- Speedup sparse*dense products
- Fix a couple of issues with Pardiso support
- Geometry module:
- Others:
Eigen 3.0.5
Released February 10, 2012
Changes since 3.0.4:
- Bug 417 - fix nesting of Map expressions
- Bug 415 - fix return value of Rotation2D::operator*=
- Bug 410 - fix a possible out of range access in EigenSolver
- Bug 406 - fix infinite loop/deadlock when using OpenMP and Eigen
- Changeset 4462 - fix broken asserts revealed by Clang
- Changeset 4457 - fix description of rankUpdate() in quick reference guide
- Changeset 4455 - fix out-of-range int constant in 4x4 inverse
- Bug 398 - fix in slerp: the returned quaternion was not always normalized
- Changeset 4432 - fix asserts in eigenvalue decompositions
- Changeset 4416 - fix MSVC integer overflow warning
Eigen 3.1.0-alpha2
Released February 6, 2012
Main changes since 3.0.1-alpha1:
- New optional support for Intel MKL and other BLAS including: (details)
- BLAS (arbitrary BLAS)
- Intel LAPACKE
- Intel VML (coefficient-wise math operations)
- Intel PARDISO (sparse direct solver)
- Dense modules:
- improved performance of small matrix-matrix products
- Feature 319 - add a rankUpdate function to LDLt and LLT for updates/downdates
- Feature 400 - new coefficient wise min/max functions taking one scalar argument
- Sparse modules:
- new fast sparse matrix assembly interface from a random list of triplets (see SparseMatrix::setFromTriplets())
- new shifting feature in SimplicialCholesky (see SimplicialCholeskyBase::setShift())
- add checks for positive definiteness in SimplicialCholesky
- improved heuristic to predict the nnz of a saprse*sparse product
- add support for uncompressed SparseMatrix in CholmodSupport
- Geometry module:
- Feature 297 - add ParametrizedLine::intersectionPoint() and intersectionParam() functions
- Others:
- fix many warnings and compilation issues with ICC 12 and -strict-ansi
- fix some ICE with MSVC10
- add the possibility to disable calls to cpuid (-DEIGEN_NO_CPUID) and other asm directives
- and many other bug fixes such as: 406, 410, 398, 396, 394, 354, 352, 301,
Eigen 3.1.0-alpha1
Released December 6, 2011
Main changes since 3.0:
- Officially supported set of sparse modules. See this page for an overview of the features. Main changes:
- new SparseCore module equivalent to the old Sparse module, the Sparse module is now a super module including all sparse-related modules
- the SparseMatrix class is now more versatile and supports an uncompressed mode for fast element insertion
- the SparseMatrix class now offer a unique and simplified API to insert elements
- DynamicSparseMatrix has been deprecated (moved into unsupported/SparseExtra)
- new conservative sparse * sparse matrix product which is also used by default
- new SparseCholesky module featuring the SimplicialLLT and SimplicialLDLT built-in solvers
- new IterativeLinearSolvers module featuring a conjugate gradient and stabilized bi-conjugate gradient iterative solvers with a basic Jacobi preconditioner
- new SparseCore module equivalent to the old Sparse module, the Sparse module is now a super module including all sparse-related modules
- New SelfAdjointEigenSolver::computeDirect() function for fast eigen-decomposition through closed-form formulas (only for 2x2 and 3x3 real matrices)
- New LLT::rankUpdate() function supporting both updates and down-dates
- Optimization of reduction via partial unrolling (e.g., dot, sum, norm, etc.)
- New coefficient-wise operators: && and ||
- Feature 157 - New vector-wise operations for arrays: *, /, *=, and /=.
- Feature 206 - Pre-allocation of intermediate buffers in JacobiSVD
- Feature 370 - New typedefs for AlignedBox
- All the fixes and improvements of the 3.0 branch up to the 3.0.4 release (see below)
Eigen 3.0.4
Released December 6, 2011
Changes since 3.0.3:
- Bug 363 - check for integer overflow in size computations
- Bug 369 - Quaternion alignment is broken (and more alignment fixes)
- Bug 354 - Converge better in SelfAdjointEigenSolver, and allow better handling of non-convergent cases
- Bug 347 - Fix compilation on ARM NEON with LLVM 3.0 and iOS SDK 5.0
- Bug 372 - Put unsupported modules documentation at the right place
- Bug 383 - Fix C++11 compilation problem due to some constructs mis-interpreted as c++11 user-defined literals
- Bug 373 - Compilation error with clang 2.9 when exceptions are disabled
- Fix compilation issue with QuaternionBase::cast
Eigen 2.0.17
Released December 6, 2011
Changes since 2.0.16:
- Fix a compilation bug in aligned_allocator: the allocate method should take a void pointer
- Fix a typo in ParametrizedLine documentation
Eigen 3.0.3
Released October 6, 2011
Changes since 3.0.2:
- Fix compilation errors when Eigen2 support is enabled.
- Fix bug in evaluating expressions of the form matrix1 * matrix2 * scalar1 * scalar2.
- Fix solve using LDLT for singular matrices if solution exists.
- Fix infinite loop when computing SVD of some matrices with very small numbers.
- Allow user to specify pkgconfig destination.
- Several improvements to the documentation.
Eigen 3.0.2
Released August 26, 2011
Changes since 3.0.1:
- Windows.h: protect min/max calls from macros having the same name (no need to #undef min/max anymore).
- MinGW: fix compilation issues and pretty gdb printer.
- Standard compliance: fix aligned_allocator and remove uses of long long.
- MPReal: updates for the new version.
- Other fixes:
- fix aligned_stack_memory_handler for null pointers.
- fix std::vector support with gcc 4.6.
- fix linking issue with OpenGL support.
- fix SelfAdjointEigenSolver for 1x1 matrices.
- fix a couple of warnings with new compilers.
- fix a few documentation issues.
Eigen 3.0.1
Released May 30, 2011
Changes since 3.0.0:
- Fix many bugs regarding ARM and NEON (Now all tests succeed on ARM/NEON).
- Fix compilation on gcc 4.6
- Improved support for custom scalar types:
- Fix memory leak issue for scalar types throwing exceptions.
- Fix implicit scalar type conversion.
- Math functions can be defined in the scalar type's namespace.
- Fix bug in trapezoidal matrix time matrix product.
- Fix asin.
- Fix compilation with MSVC 2005 (SSE was wrongly enabled).
- Fix bug in EigenSolver: normalize the eigen vectors.
- Fix Qt support in Transform.
- Improved documentation.
Eigen 2.0.16
Released May 28, 2011
Changes since 2.0.15:
- Fix bug in 3x3 tridiagonlisation (and consequently in 3x3 selfadjoint eigen decomposition).
- Fix compilation for new gcc 4.6.
- Fix performance regression since 2.0.12: in some matrix-vector product, complex matrix expressions were not pre-evaluated.
- Fix documentation of Least-Square.
- New feature: support for part<SelfAdjoint>.
- Fix bug in SparseLU::setOrderingMethod.
Eigen 3.0.0
Released March 19, 2011, at the meeting.
See the Eigen 3.0 release notes.
Only change since 3.0-rc1:
- Fixed compilation of the unsupported 'openglsupport' test.
Eigen 3.0-rc1
Released March 14, 2011.
Main changes since 3.0-beta4:
- Core: added new EIGEN_RUNTIME_NO_MALLOC option and new set_is_malloc_allowed() option to finely control where dynamic memory allocation is allowed. Useful for unit-testing of functions that must not cause dynamic memory allocations.
- Core: SSE performance fixes (follow-up from Bug 203).
- Core: Fixed crashes when using EIGEN_DONT_ALIGN or EIGEN_DONT_ALIGN_STATICALLY (Bug 213 and friends).
- Core: EIGEN_DONT_ALIGN and EIGEN_DONT_ALIGN_STATICALLY are now covered by unit tests.
- Geometry: Fixed transform * matrix products (Bug 207).
- Geometry: compilation fix for mixing CompactAffine with Homogeneous objects
- Geometry: compilation fix for 1D transform
- SVD: fix non-computing constructors (correctly forward computationOptions) (Bug 206)
- Sparse: fix resizing when the destination sparse matrix is row major (Bug 37)
- more Eigen2Support improvements
- more unit test fixes/improvements
- more documentation improvements
- more compiler warnings fixes
- fixed GDB pretty-printer for dynamic-size matrices (Bug 210)
Eigen 3.0-beta4
Released February 28, 2011.
Main changes since 3.0-beta3:
- Non-vectorization bug fixes:
- fix Bug 89: work around an extremely evil compiler bug on old GCC (<= 4.3) with the standard assert() macro
- fix Umfpack back-end in the complex case
- Vectorization bug fixes:
- fix a segfault in "slice vectorization" when the destination might not be aligned on a scalar (complex<double>)
- fix Bug 195: fast SSE unaligned loads fail on GCC/i386 and on Clang
- fix Bug 186: worked around a GCC 4.3 i386 backend issue with SSE
- fix Bug 203: SSE: a workaround used in pset1() resulted in poor assembly
- worked around a GCC 4.2.4 internal compiler error with vectorization of complex numbers
- lots of AltiVec compilation fixes
- NEON compilation fixes
- API additions and error messages improvements
- Transform: prevent bad user code from compiling
- fix Bug 190: directly pass Transform Options to Matrix, allowing to use RowMajor. Fix issues in Transform with non-default Options.
- factorize implementation of standard real unary math functions, and add acos, asin
- Build/tests system
- Lots of unit test improvements
- fix installation of unsupported modules
- fixed many compiler warnings, especially on the Intel compiler and on LLVM/Clang
- CTest/CMake improvements
- added option to build in 32bit mode
- BLAS/LAPACK implementation improvements
- The Blas library and tests are now automatically built as part of the tests.
- expanded LAPACK interface (including syev)
- now Sparse solver backends use our own BLAS/LAPACK implementation
- fix Bug 189 (cblat1 test failure)
- Documentation
- improved conservativeResize methods documentation
- documented sorting of eigenvalues
- misc documentation improvements
- improve documentation of plugins
Eigen 3.0-beta3
Released February 12, 2011.
The biggest news is that the API is now 100% stable.
Main changes since 3.0-beta2:
- The "too many to list them all" category:
- lots of bug fixes
- lots of performance fixes
- lots of compiler support fixes
- lots of warning fixes
- lots of unit tests improvements and fixes
- lots of documentation improvements
- lots of build system fixes
- API changes:
- replaced ei_ prefix by internal:: namespace. For example, ei_cos(x) becomes internal::cos(x).
- renamed PlanarRotation -> JacobiRotation
- renamed DenseStorageBase -> PlainObjectBase
- HouseholderSequence API cleanup
- refactored internal metaprogramming helpers to follow closely the standard library
- made UpperBidiagonalization internal
- made BandMatrix/TridiagonalMatrix internal
- Core: also see below, "const correctness".
- Sparse: EIGEN_YES_I_KNOW_SPARSE_MODULE_IS_NOT_STABLE_YET must be defined to use Eigen/Sparse
- Core: random<interger type>() now spans over range of width RAND_MAX
- New API:
- Core: added Map static methods taking strides
- SVD: added jacobiSvd() method
- Sparse: many misc improvements and new features. Improved support for Cholmod, Amd, SuperLU and other back-ends.
- Core: allow mixed real-complex dot products
- Geometry: allow mixed real-complex cross products
- Geometry: allow to pass Options parameters to Transform, Quaternion and other templates, to control memory alignment
- QR: add threshold API to FullPivHouseholderQR
- Core: added tan function
- Const correctness:
- Eigen now properly enforces const-correctness everywhere, for example with Map objects. This will break compilation of code that relied on former behavior.
- A new kind of test suite was added to check that, 'failtest'.
- BLAS/LAPACK:
- Complete BLAS library built on top of Eigen. Imported BLAS test suite, which allowed to fix many issues.
- Partial LAPACK implementation. Passing part of the LAPACK test suite, which also allowed to fix some issues.
- Eigen 2 Support:
- tons of improvements in EIGEN2_SUPPORT
- new incremental migration path: see http://eigen.tuxfamily.org/dox-devel/Eigen2SupportModes.html
- imported a copy of the Eigen 2 test suite, made sure that Eigen 3 passes it. That also allowed to fix several issues.
Eigen 3.0-beta2
Released October 15, 2010.
Main changes since 3.0-beta1:
- Add support for the vectorization of std::complex<> with SSE, AltiVec and NEON.
- Add support for mixed real * complex matrix products with vectorization.
- Finalize the JacobiSVD class with: compile time options, thin/full decompositions, and least-square solving.
- Several improvement of the Transform class. In particular, there is no default mode anymore.
- New methods: middleRows(), middleCols(), TriangularMatrix::conjugate()
- New unsupported modules: OpenGL, MPFR C++
- Many improvements in the support of empty objects.
- Many improvements of the vectorization logic.
- Add the possibility to extend QuaternionBase.
- Vectorize Quaternion multiplication with double.
- Significant improvements of the documentation.
- Improved compile time errors.
- Enforce static allocation of temporary buffers in gemm (when possible).
- Fix aligned_delete for null pointers and non trivial dtors.
- Fix eigen decomposition of 3x3 float matrices.
- Fix 4x4 matrix inversions (vectorization).
- Many fixes in QR: solving with m>n, use of rank, etc.
- Fixes for MSVC for windows mobile and CLang.
- Remove the Taucs backend (obsolete).
- Remove the old SVD class (was causing too much troubles, a new decompozition based on bidiagonalisation/householder should come back soon, JacobiSVD can be used meanwhile).
Eigen 2.0.15
Released July 16, 2010
Changes since 2.0.14:
- Fix bug: certain cases of matrix-vector product (depending on storage order) were blocked by an assertion failure.
- Fix LU and QR solve when rank==0, fix LLT when the matrix is purely 0.
- Fix a couple of bugs with QR solving especially with rows>cols.
- Fix bug with custom scalar types that have non-trivial destructor.
- Fix for ICC in SSE code.
- Fix some C++ issues found by Clang (patch by Nick Lewycky).
Eigen 3.0-beta1
Released July 5, 2010
See the announcement.
Eigen 2.0.14
Released June 22, 2010
Changes since 2.0.13:
- Fix #141: crash in SSE (alignment problem) when using dynamic-size matrices with a max-size fixed at compile time that is not a multiple of 16 bytes. For example, Matrix<double,Dynamic,Dynamic,AutoAlign,5,5>.
- Fix #142: LU of fixed-size matrices was causing dynamic memory allocation (patch by Stuart Glaser).
- Fix #127: remove useless static keywords (also fixes warnings with clang++).
Eigen 2.0.13
Released June 10, 2010
Changes since 2.0.12:
- Fix #132: crash in certain matrix-vector products. Unit test added.
- Fix #125: colwise norm() and squaredNorm() on complex types do not return real types
- Fully support the QCC/QNX compiler (thanks to Piotr Trojanek). The support in 2.0.12 was incomplete. The whole test suite is now successful.
- As part of the QCC support work, a lot of standards compliance work: put std:: in front of a lot of things such as size_t, check whether the math library needs to be linked to explicitly...
- Fix precision issues in LDLT. The isPositiveDefinite() method is now always returning true, but it was conceptually broken anyway, since a non-pivoting LDLT decomposition can't know that.
- Compilation fix in ldlt() on expressions.
- Actually install the Eigen/Eigen and Eigen/Dense public headers!
- Fix readcost for complex types.
- Fix compilation of the BTL benchmarks.
- Some dox updates.
Eigen 2.0.12
Released February 12, 2010
Changes since 2.0.11:
- EIGEN_DEFAULT_TO_ROW_MAJOR is fully supported and tested.
- Several important fixes for row-major matrices.
- Fix support of several algorithms for mixed fixed-dynamic size matrices where the fixed dimension is greater than the dynamic dimension. For example: Matrix<float,3,Dynamic>(3,2)
- fix EIGEN_DONT_ALIGN: now it _really_ disables vectorization (was giving a #error unless you also used EIGEN_DONT_VECTORIZE).
- Fix #92: Support QNX's QCC compiler (patch by Piotr Trojanek)
- Fix #90, missing type cast in LU, allow to use LU with MPFR (patch by 'Wolf').
- Fix ICC compiler support: work around a bug present at least in ICC 11.1.
- Compilation fixes for computeInverse() on expressions.
- Fix a gap in a unit-test (thanks to Jitse Niesen)
- Backport improvements to benchmarking code.
- Documentation fixes
Eigen 2.0.11
Released January 10, 2010
Changes since 2.0.10:
- Complete rewrite of the 4x4 matrix inversion: we now use the usual cofactors approach, so no numerical stability problems anymore (bug #70)
- Still 4x4 matrix inverse: SSE path for the float case, borrowing code by Intel, giving very high performance.
- Fix crash happening on 32-bit x86 Linux with SSE, when double's were created at non-8-byte-aligned locations (bug #79).
- Fix bug in Part making it crash in certain products (bug #80).
- Precision improvements in Quaternion SLERP (bug #71).
- Fix sparse triangular solver for lower/row-major matrices (bug #74).
- Fix MSVC 2010 compatibility.
- Some documentation improvements.
Eigen 2.0.10
Released November 25, 2009
Changes since 2.0.9:
- Rewrite 4x4 matrix inverse to improve precision, and add a new unit test to guarantee that precision. It's less fast, but it's still faster than the cofactors method.
- Fix bug #62: crash in SSE code with MSVC 2008 (Thanks to Hauke Heibel).
- Fix bug #65: MatrixBase::nonZeros() was recursing infinitely
- Fix PowerPC platform detection on Mac OSX.
- Prevent the construction of bogus MatrixBase objects and generate good compilation errors for that. Done by making the default constructor protected, and adding some private constructors.
- Add option to initialize all matrices by zero: just #define EIGEN_INITIALIZE_MATRICES_BY_ZERO
- Improve Map documentation
- Install the pkg-config file to share/pkgconfig, instead of lib/pkgconfig (thanks to Thomas Capricelli)
- fix warnings
- fix compilation with MSVC 2010
- adjust to repository name change
Eigen 2.0.9
Released October 24, 2009
Changes since 2.0.8:
- Really fix installation and the pkg-config file.
- Install the NewStdVector header that was introduced in 2.0.6.
Eigen 2.0.8
Released October 23, 2009
Changes since 2.0.7:
- fix installation error introduced in 2.0.7: it was choking on the pkg-config file eigen2.pc not being found. The fix had been proposed long ago by Ingmar Vanhassel for the development branch, and when recently the pkg-config support was back-ported to the 2.0 branch, nobody thought of backporting this fix too, and apparently nobody tested "make install" !
- SVD: add default constructor. Users were relying on the compiler to generate one, and apparenty 2.0.7 triggered a little MSVC 2008 subtlety in this respect. Also added an assert.
Eigen 2.0.7
Released October 22, 2009
Changes since 2.0.6:
- fix bug #61: crash when using Qt QVector on Windows 32-bit. By Hauke Heibel.
- fix bug #10: the reallocateSparse function was half coded
- fix bug in SparseMatrix::resize() not correctly initializing by zero
- fix another bug in SparseMatrix::resize() when outerSize==0. By Hauke Heibel.
- fully support GCC 3.3. It was working in 2.0.2, there was a compilation error in 2.0.6, now for the first time in 2.0.7 it's 100% tested (the test suite passes without any errors, warnings, or failed tests).
- SVD: add missing assert (help catch mistakes)
- fixed warnings in unit-tests (Hauke Heibel)
- finish syncing Memory.h with the devel branch. This is cleaner and fixes a warning. The choice of system aligned malloc function may be affected by this change.
- add pkg-config support by Rhys Ulerich.
- documentation fix and doc-generation-script updates by Thomas Capricelli
Eigen 2.0.6
Released September 23, 2009
Changes since 2.0.5:
- fix bug: visitors didn't work on row-vectors.
- fix bug #50: compilation errors with swap().
- fix bug #42: Add Transform::Identity() as mentioned in the tutorial.
- allow to disable all alignment code by defining EIGEN_DONT_ALIGN (backport from devel branch).
- backport the devel branch's StdVector header as NewStdVector. You may also #define EIGEN_USE_NEW_STDVECTOR to make StdVector use it automatically. However, by default it isn't used by StdVector, to preserve compatibility.
- Vectorized quaternion product (for float) by Rohit Garg (backport from devel branch).
- allow to override EIGEN_RESTRICT and add EIGEN_DONT_USE_RESTRICT_KEYWORD
- fix a warning in ei_aligned_malloc; fixed by backporting the body from the devel branch; may result in a different choice of system aligned malloc function.
- update the documentation.
Eigen 2.0.5
Released August 22, 2009
Changes since 2.0.4:
- fix bug: in rare situations involving mixed storage orders, a matrix product could be evaluated as its own transpose
- fix bug: LU::solve() crashed when called on the LU decomposition of a zero matrix
- fix bug: EIGEN_STACK_ALLOCATION_LIMIT was too high, resulting in stack overflow for a user. Now it is set as in the devel branch.
- fix compilation bug: our StdVector header didn't work with GCC 4.1. (Bug #41)
- fix compilation bug: missing return statement in Rotation2D::operator*= (Bug #36)
- in StdVector, a more useful #error message about the #including order
- add EIGEN_TRANSFORM_PLUGIN allowing to customize the Transform class
- fix a warning with MSVC
- fix a bug in our cmake code when building unit-tests (thanks to Marcus Hanwell)
- work around a bug in cmake that made it fail to build unit-tests when fortran wasn't installed
- in our cmake code, remove the part about retrieving the mercurial info and appending it to the version number in the dox
- dox: remove the old example list
- fix the option to build a binary library, although it's not very useful and will be removed
- add basic .hgignore file and script to build the docs (thanks to Thomas Capricelli)
Eigen 2.0.4
Released August 1, 2009
Changes since 2.0.3:
- Several fixes in the overloaded new and delete operators. Thanks to Hauke Heibel.
- compilation fix: add the missing ei_atan2 function. Thanks to Manuel Yguel.
- Use ei_atan2 instead of using std::atan2 directly.
- several compilation fixes in the Qt interoperability code: methods toQTransform() and toQMatrix(). Thanks to Anthony Truchet.
- compilation fix and simplification in Matrix assignment
- compilation fixes in "a *= b" and "a=a*b" when a has to be resized.
- remove a "stupid" version of ei_pow. for integers for gcc >= 4.3
- bug fix in Quaternion::setFromTwoVectors()
- several ctest improvements: use our own dashboard, use a separate project for the 2.0 branch.
- documentation: improvement on the pages on unaligned arrays (the online copies have been updated immediately).
Eigen 2.0.3
Released June 21, 2009
Changes since 2.0.2:
- precision and reliability fixes in various algorithms, especially LLT, QR, Tridiagonalization, and also a precision improvement in LU.
- fix LLT and LDLT solve() on uninitialized result (was causing an assertion).
- add Eigen/Eigen and Eigen/Dense headers for convenience
- document a newly found cause for the "unaligned array" assertion
- backport documentation improvements on transpose() and adjoint()
- updates in the Sparse module (was needed to support KDE 4.3)
Eigen 2.0.2
Released May 22, 2009
Changes since 2.0.1:
- Fix linearRegression() compilation, actually it is reimplemented using the better fitHyperplane() which does total least-squares.
- Add missing setZero() etc... variants taking size parameters and resizing. These were mentioned in the tutorial but weren't implemented.
- Fix posix_memalign platform check. This fixes portability issues. Thanks to Ross Smith.
- Fix detection of SSE2 on the Windows 64-bit platform.
- Fix compatibility with the old GCC 3.3: it is now fully supported again.
- Fix warnings with recent GCC (4.4.0 and 4.3.3).
Eigen 2.0.1
Released April 14, 2009
Changes since 2.0.0:
- disable alignment altogether on exotic platforms on which we don't vectorize anyway. This allows e.g. to use Eigen on ARM platforms.
- new StdVector header with a new workaround for the problems with std::vector.
- workarounds for MSVC internal compiler errors
- MSVC 9 compilation fix (patch by Hauke Heibel)
- fixes for various bugs in Maps/Blocks that could give wrong results
- fix bug in 4x4 matrix inverse that could give wrong results
- compilation fix in SliceVectorization
- fix wrong static assertion (patch by Markus Moll)
- add missing operators in aligned_allocator (thanks to Hauke Heibel)
Eigen 2.0.0
Released February 2, 2009