Difference between revisions of "ChangeLog"

From Eigen
Jump to: navigation, search
(Eigen 3.2-rc1)
(Eigen 3.3.9)
(131 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 +
== Eigen 3.3.9 ==
 +
 +
Released on December 4, 2020.
 +
 +
Changes since 3.3.8:
 +
 +
* [https://gitlab.com/libeigen/eigen/-/commit/4e5385c9053156dbb270e11b96388c9421d2439e Commit 4e5385c90]: Introduce rendering Doxygen math formulas with MathJax and the option EIGEN_DOC_USE_MATHJAX to control this.
 +
* [https://gitlab.com/libeigen/eigen/-/issues/1746 Issue 1746]: Removed implementation of standard copy-constructor and standard copy-assign-operator from PermutationMatrix and Transpositions to allow malloc-less std::move.
 +
* [https://gitlab.com/libeigen/eigen/-/issues/2036 Issue 2036]: Make sure the find_standard_math_library_test_program compiles and doesn't optimize away functions we try to test for.
 +
* [https://gitlab.com/libeigen/eigen/-/issues/2046 Issue 2046]: Rename test/array.cpp to test/array_cwise.cpp to fix an issue with the C++ standard library header "array"
 +
* [https://gitlab.com/libeigen/eigen/-/issues/2040 Issue 2040]: Fix an issue in test/ctorleak that occured when disabling exceptions.
 +
* [https://gitlab.com/libeigen/eigen/-/issues/2011 Issue 2011]: Remove error counting in OpenMP parallel section in Eigen's GEMM parallelizing logic.
 +
* [https://gitlab.com/libeigen/eigen/-/issues/2012 Issue 2012]: Define coeff-wise binary array operators for base class to fix an issue when using Eigen with C++20
 +
* [https://gitlab.com/libeigen/eigen/-/commit/bfdd4a9903a17ab02ed5fae34f9da8490bcb4192 Commit bfdd4a990]: Fix an issue with Intel® MKL PARDISO support.
 +
 +
== Eigen 3.3.8 ==
 +
 +
Released on October 5, 2020.
 +
 +
Changes since 3.3.7:
 +
 +
* General bug fixes
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1995 Issue #1995]: Fix a failure in the GEBP kernel when using small L1 cache sizes, OpenMP and FMA.
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1990 Issue #1990]: Make CMake accept installation paths relative to CMAKE_INSTALL_PREFIX.
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1974 Issue #1974]: Fix issue when reserving an empty sparse matrix 
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1823 Issue #1823]: Fix incorrect use of std::abs
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1788 Issue #1788]: Fix rule-of-three violations inside the stable modules. This fixes deprecated-copy warnings when compiling with GCC>=9 Also protect some additional Base-constructors from getting called by user code code ([https://gitlab.com/libeigen/eigen/-/issues/1587 Issue #1587])
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1796 Issue #1796]: Make matrix squareroot usable for Map and Ref types
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1281 Issue #1281]: Fix AutoDiffScalar's make_coherent for nested expression of constant ADs.
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1761 Issue #1761]: Fall back is_integral to std::is_integral in c++11 and fix internal::is_integral<size_t/ptrdiff_t> with MSVC 2013 and older.
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1741 Issue #1741]: Fix self-adjoint*matrix, triangular*matrix, and triangular^1*matrix with a destination having a non-trivial inner-stride
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1741 Issue #1741]: Fix SelfAdjointView::rankUpdate and product to triangular part for destination with non-trivial inner stride
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1741 Issue #1741]: Fix C.noalias() = A*C; with C.innerStride()!=1
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1695 Issue #1695]: Fix a numerical robustness issue in BDCSVD
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1692 Issue #1692]: Enable enum as sizes of Matrix and Array
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1689 Issue #1689]: Fix used-but-marked-unused warning
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1679 Issue #1679]: Avoid possible division by 0 in complex-schur
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1676 Issue #1676]: Fix C++17 template deduction in DenseBase
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1669 Issue #1669]: Fix PartialPivLU/inverse with zero-sized matrices.
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1557 Issue #1557]: Fix RealSchur and EigenSolver for matrices with only zeros on the diagonal.
 +
* Performance related fixes
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1562 Issue #1562]: Optimize evaluation of small products of the form s*A*B by rewriting them as: s*(A.lazyProduct(B)) to save a costly temporary. Measured speedup from 2x to 5x...
 +
** [https://gitlab.com/libeigen/eigen/-/commit/165db26dc07d9219524e10b69aa937536172e21c Commit 165db26dc] and [https://gitlab.com/libeigen/eigen/-/commit/8ee2e10af405f45a731f8466676580017c441c75 8ee2e10af]: Fix performance issue with SimplicialLDLT for complexes coefficients
 +
* Misc commits
 +
** [https://gitlab.com/libeigen/eigen/-/commit/5f1082d0b16e966c519dd7ffea90676bee6ef2b2 Commit 5f1082d0b]: Fix QuaternionBase::cast for quaternion map and wrapper.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/a153dbae9b04487500c30d3f8d27c1aa77b9c177 Commit a153dbae9]: Fix case issue with Lapack unit tests.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/3d7e2a1f3d47ac0eef5980407a8575adf5690ad5 Commit 3d7e2a1f3]: Fix possible conflict with an externally defined "real" type when using gcc-5.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/1760432f6e4fd04e1e203827fe10d47f67d746a1 Commit 1760432f6]: Provide numext::[u]int{32,64}_t.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/3d18879fc436b689580d81df7a59df0617127c51 Commit 3d18879fc]: Initialize isometric transforms like affine transforms.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/160c0a340410ab24f365a1e0eb19bdc00a0de635 Commit 160c0a340]: Change typedefs from private to protected to fix MSVC compilation.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/3cf273591a17d5a7ba1b3a5552f580aaec189d5b Commit 3cf273591]: Fix compilation of FFTW unit test.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/6abc9e5379ae897126c5ef1541b5abcd579f3650 Commit 6abc9e537]: Fix compilation of BLAS backend and frontend.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/47e2f8a42cf727ea817a074083cdf102e35d881c Commit 47e2f8a42]: Fix real/imag namespace conflict.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/71d0402e3e83cc414a8783729c18e6ae2152bf3b Commit 71d0402e3]: Avoid throwing in destructors.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/0dd9643ad547d3dd2e23ded1d3376d0f7bdc8ada Commit 0dd9643ad]: Fix precision issue in SelfAdjointEigenSolver.h
 +
** [https://gitlab.com/libeigen/eigen/-/commit/6ed74ac97cdd2ca3e837ccfdcc36434b88c08cec Commit 6ed74ac97]: Make digits10() return an integer.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/841d844f9cf0f81adc9419cc4aadd6abba64c21d Commit 841d844f9]: Use pade for matrix exponential also for complex values.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/4387298e806ff58bb25e7d6cb05018960f470276 Commit 4387298e8]: Cast Index to RealScalar in SVDBase to fix an issue when RealScalar is not implicitly convertible to Index.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/fe8cd812b05e910000bd31ab7c9b9ddfbbfa12fa Commit fe8cd812b]: Provide EIGEN_HAS_C99_MATH when using MSVC.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/7c420845034dadaaebc436b9b91a91ea97b47f68 Commit 7c4208450]: Various fixes in polynomial solver and its unit tests.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/e777674a87921c9184797d2dff42dac5485ff045 Commit e777674a8] and [https://gitlab.com/libeigen/eigen/-/commit/4415d4e2d43aa1951dc49fef97a9652c09f83f62 4415d4e2d]: Extend polynomial solver unit tests to complexes.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/222ce4b49d8e1c85d7b4b71adc3480ba730b764f Commit 222ce4b49]: Automatically switch between EigenSolver and ComplexEigenSolver, and fix a few Real versus Scalar issues.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/7b93328baf13c860980665040ac490034821c9c9 Commit 7b93328ba]: Enable construction of Ref<VectorType> from a runtime vector.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/c28ba89fe2d3ce93ae5fcda6e087b7b50aa1da09 Commit c28ba89fe]: Fix a problem of old gcc versions having problems with recursive #pragma GCC diagnostic push/pop.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/210d510a90e3a718fb25850e44c06a4ad1407d0e Commit 210d510a9]: Fix compilation with expression template scalar type.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/efd72cddcd98de5feaa1de6013be2e827567b585 Commit efd72cddc]: Backport AVX512 implementation to 3.3.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/5e484fa11de4e90fc042a29e6cab04667bb2ef6c Commit 5e484fa11]: Fix StlDeque compilation issue with GCC 10.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/a796be81a4538708fd6a713b0c78a622db243f4b Commit a796be81a]: Avoid false-positive test results in non-linear optimization tests
 +
** [https://gitlab.com/libeigen/eigen/-/commit/9f202c6f1e991a986da225a0155ad10c0aea682c Commit 9f202c6f1]: Fix undefined behaviour caused by uncaught exceptions in OMP section of parallel GEBP kernel.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/4707c3aa86fb3d429eec1b85e5415e1a01609f5a Commit 4707c3aa8]: Fix a bug with half-precision floats on GPUs.
 +
* Fixed warnings
 +
** [https://gitlab.com/libeigen/eigen/-/commit/14db78c53bcfad7b12e17be757472865e47fe3eb Commit 14db78c53]: Fix some maybe-uninitialized warnings in AmbiVector.h and test bdcsvd.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/f1b1f13d3c4d8d7dce546944ff1f9e2d7afbd481 Commit f1b1f13d3]: silent cmake warnings in Lapack CMakeLists.txt
 +
** [https://gitlab.com/libeigen/eigen/-/commit/8fb28db12dc047aa6a5acb674ccf49d4236b1468 Commit 8fb28db12]: Rename variable which shadows class name in Polynomials module.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/f1c12d8ff0920c4b7487092314670db6969a9bcf Commit f1c12d8ff]: Workaround gcc's alloc-size-larger-than= warning in DenseStorage.h
 +
** [https://gitlab.com/libeigen/eigen/-/commit/6870a39feb548d968a835706af8c62f83fc58a9a Commit 6870a39fe]: Hide some unused variable warnings in g++8.1 in Tensor contraction mapper.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/bb9981e24b4dad71e16b55a6620a698d8cf0c63c Commit bb9981e24]: Fix gcc 8.1 warning: "maybe use uninitialized" in std tests
 +
** [https://gitlab.com/libeigen/eigen/-/commit/eea99eb4e04c2f607b6de01a04deb1f0dab615e9 Commit eea99eb4e]: Fix always true warning with gcc 4.7in test numext.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/65a6d41510cd2d8a20d6d94dee8e0955899d8dc4 Commit 65a6d4151]: Fix nonnull-compare warning in test geo_alignedbox.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/74a0c08d70a5afc01dff74b99695400c104579b8 Commit 74a0c08d7]: Disable ignoring attributes warning in vectorization logic test.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/6c4d57dc9e0d0c37a14a1f0ec44da4d101348427 Commit 6c4d57dc9]: Fix a gcc7 warning about bool * bool in abs2 default implementation.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/89a86ed422131dab04291b2a9c3ac18ed224ed21 Commit 89a86ed42]: Fix a warning in SparseSelfAdjointView about a branch statement always evaluation to false.
 +
 +
== Eigen 3.3.8-rc1 ==
 +
 +
Released on September 14, 2020.
 +
 +
Changes since 3.3.7:
 +
 +
* General bug fixes
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1974 Issue #1974]: Fix issue when reserving an empty sparse matrix 
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1823 Issue #1823]: Fix incorrect use of std::abs
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1788 Issue #1788]: Fix rule-of-three violations inside the stable modules. This fixes deprecated-copy warnings when compiling with GCC>=9 Also protect some additional Base-constructors from getting called by user code code ([https://gitlab.com/libeigen/eigen/-/issues/1587 Issue #1587 #1587])
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1796 Issue #1796]: Make matrix squareroot usable for Map and Ref types
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1281 Issue #1281]: Fix AutoDiffScalar's make_coherent for nested expression of constant ADs.
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1761 Issue #1761]: Fall back is_integral to std::is_integral in c++11 and fix internal::is_integral<size_t/ptrdiff_t> with MSVC 2013 and older.
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1741 Issue #1741]: Fix self-adjoint*matrix, triangular*matrix, and triangular^1*matrix with a destination having a non-trivial inner-stride
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1741 Issue #1741]: Fix SelfAdjointView::rankUpdate and product to triangular part for destination with non-trivial inner stride
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1741 Issue #1741]: Fix C.noalias() = A*C; with C.innerStride()!=1
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1695 Issue #1695]: Fix a numerical robustness issue in BDCSVD
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1692 Issue #1692]: Enable enum as sizes of Matrix and Array
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1689 Issue #1689]: Fix used-but-marked-unused warning
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1679 Issue #1679]: Avoid possible division by 0 in complex-schur
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1676 Issue #1676]: Fix C++17 template deduction in DenseBase
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1669 Issue #1669]: Fix PartialPivLU/inverse with zero-sized matrices.
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1557 Issue #1557]: Fix RealSchur and EigenSolver for matrices with only zeros on the diagonal.
 +
* Performance related fixes
 +
** [https://gitlab.com/libeigen/eigen/-/issues/1562 Issue #1562]: Optimize evaluation of small products of the form s*A*B by rewriting them as: s*(A.lazyProduct(B)) to save a costly temporary. Measured speedup from 2x to 5x...
 +
** [https://gitlab.com/libeigen/eigen/-/commit/165db26dc07d9219524e10b69aa937536172e21c Commit 165db26dc] and [https://gitlab.com/libeigen/eigen/-/commit/8ee2e10af405f45a731f8466676580017c441c75 8ee2e10af]: Fix performance issue with SimplicialLDLT for complexes coefficients
 +
* Misc commits
 +
** [https://gitlab.com/libeigen/eigen/-/commit/5f1082d0b16e966c519dd7ffea90676bee6ef2b2 Commit 5f1082d0b]: Fix QuaternionBase::cast for quaternion map and wrapper.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/a153dbae9b04487500c30d3f8d27c1aa77b9c177 Commit a153dbae9]: Fix case issue with Lapack unit tests.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/3d7e2a1f3d47ac0eef5980407a8575adf5690ad5 Commit 3d7e2a1f3]: Fix possible conflict with an externally defined "real" type when using gcc-5.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/1760432f6e4fd04e1e203827fe10d47f67d746a1 Commit 1760432f6]: Provide numext::[u]int{32,64}_t.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/3d18879fc436b689580d81df7a59df0617127c51 Commit 3d18879fc]: Initialize isometric transforms like affine transforms.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/160c0a340410ab24f365a1e0eb19bdc00a0de635 Commit 160c0a340]: Change typedefs from private to protected to fix MSVC compilation.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/3cf273591a17d5a7ba1b3a5552f580aaec189d5b Commit 3cf273591]: Fix compilation of FFTW unit test.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/6abc9e5379ae897126c5ef1541b5abcd579f3650 Commit 6abc9e537]: Fix compilation of BLAS backend and frontend.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/47e2f8a42cf727ea817a074083cdf102e35d881c Commit 47e2f8a42]: Fix real/imag namespace conflict.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/71d0402e3e83cc414a8783729c18e6ae2152bf3b Commit 71d0402e3]: Avoid throwing in destructors.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/0dd9643ad547d3dd2e23ded1d3376d0f7bdc8ada Commit 0dd9643ad]: Fix precision issue in SelfAdjointEigenSolver.h
 +
** [https://gitlab.com/libeigen/eigen/-/commit/6ed74ac97cdd2ca3e837ccfdcc36434b88c08cec Commit 6ed74ac97]: Make digits10() return an integer.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/841d844f9cf0f81adc9419cc4aadd6abba64c21d Commit 841d844f9]: Use pade for matrix exponential also for complex values.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/4387298e806ff58bb25e7d6cb05018960f470276 Commit 4387298e8]: Cast Index to RealScalar in SVDBase to fix an issue when RealScalar is not implicitly convertible to Index.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/fe8cd812b05e910000bd31ab7c9b9ddfbbfa12fa Commit fe8cd812b]: Provide EIGEN_HAS_C99_MATH when using MSVC.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/7c420845034dadaaebc436b9b91a91ea97b47f68 Commit 7c4208450]: Various fixes in polynomial solver and its unit tests.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/e777674a87921c9184797d2dff42dac5485ff045 Commit e777674a8] and [https://gitlab.com/libeigen/eigen/-/commit/4415d4e2d43aa1951dc49fef97a9652c09f83f62 4415d4e2d]: Extend polynomial solver unit tests to complexes.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/222ce4b49d8e1c85d7b4b71adc3480ba730b764f Commit 222ce4b49]: Automatically switch between EigenSolver and ComplexEigenSolver, and fix a few Real versus Scalar issues.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/5110d803e44bfa89d4d702f909038dc87adf1906 Commit 5110d803e]: Change license from LGPL to MPL2 with agreement from David Harmon. (grafted from 2df4f0024666a9085fe47f14e2290bd61676dbbd )
 +
** [https://gitlab.com/libeigen/eigen/-/commit/7b93328baf13c860980665040ac490034821c9c9 Commit 7b93328ba]: Enable construction of Ref<VectorType> from a runtime vector.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/c28ba89fe2d3ce93ae5fcda6e087b7b50aa1da09 Commit c28ba89fe]: Fix a problem of old gcc versions having problems with recursive #pragma GCC diagnostic push/pop.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/210d510a90e3a718fb25850e44c06a4ad1407d0e Commit 210d510a9]: Fix compilation with expression template scalar type.
 +
* Fixed warnings
 +
** [https://gitlab.com/libeigen/eigen/-/commit/14db78c53bcfad7b12e17be757472865e47fe3eb Commit 14db78c53]: Fix some maybe-uninitialized warnings in AmbiVector.h and test bdcsvd.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/f1b1f13d3c4d8d7dce546944ff1f9e2d7afbd481 Commit f1b1f13d3]: silent cmake warnings in Lapack CMakeLists.txt
 +
** [https://gitlab.com/libeigen/eigen/-/commit/8fb28db12dc047aa6a5acb674ccf49d4236b1468 Commit 8fb28db12]: Rename variable which shadows class name in Polynomials module.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/f1c12d8ff0920c4b7487092314670db6969a9bcf Commit f1c12d8ff]: Workaround gcc's alloc-size-larger-than= warning in DenseStorage.h
 +
** [https://gitlab.com/libeigen/eigen/-/commit/6870a39feb548d968a835706af8c62f83fc58a9a Commit 6870a39fe]: Hide some unused variable warnings in g++8.1 in Tensor contraction mapper.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/bb9981e24b4dad71e16b55a6620a698d8cf0c63c Commit bb9981e24]: Fix gcc 8.1 warning: "maybe use uninitialized" in std tests
 +
** [https://gitlab.com/libeigen/eigen/-/commit/eea99eb4e04c2f607b6de01a04deb1f0dab615e9 Commit eea99eb4e]: Fix always true warning with gcc 4.7in test numext.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/65a6d41510cd2d8a20d6d94dee8e0955899d8dc4 Commit 65a6d4151]: Fix nonnull-compare warning in test geo_alignedbox.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/74a0c08d70a5afc01dff74b99695400c104579b8 Commit 74a0c08d7]: Disable ignoring attributes warning in vectorization logic test.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/6c4d57dc9e0d0c37a14a1f0ec44da4d101348427 Commit 6c4d57dc9]: Fix a gcc7 warning about bool * bool in abs2 default implementation.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/efd72cddcd98de5feaa1de6013be2e827567b585 Commit efd72cddc]: Backport AVX512 implementation to 3.3.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/5e484fa11de4e90fc042a29e6cab04667bb2ef6c Commit 5e484fa11]: Fix StlDeque compilation issue with GCC 10.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/89a86ed422131dab04291b2a9c3ac18ed224ed21 Commit 89a86ed42]: Fix a warning in SparseSelfAdjointView about a branch statement always evaluation to false.
 +
** [https://gitlab.com/libeigen/eigen/-/commit/4707c3aa86fb3d429eec1b85e5415e1a01609f5a Commit dd6de618]: Fix a bug with half-precision floats on GPUs.
 +
 +
== Eigen 3.3.7 ==
 +
 +
Released on December 11, 2018.
 +
 +
Changes since 3.3.6:
 +
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1643 Bug 1643]: Fix compilation with GCC>=6 and compiler optimization turned off.
 +
 +
== Eigen 3.3.6 ==
 +
 +
Released on December 10, 2018.
 +
 +
Changes since 3.3.5:
 +
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1617 Bug 1617]: Fix triangular solve crashing for empty matrix.
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=785 Bug 785]: Make dense Cholesky decomposition work for empty matrices.
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1634 Bug 1634]: Remove double copy in move-ctor of non movable Matrix/Array.
 +
* [https://bitbucket.org/eigen/eigen/commits/588e1eb34eff Changeset 588e1eb34eff]: Workaround weird MSVC bug.
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1637 Bug 1637] Workaround performance regression in matrix products with gcc>=6 and clang>=6.0.
 +
* [https://bitbucket.org/eigen/eigen/commits/bf0f100339c1 Changeset bf0f100339c1]: Fix some implicit 0 to Scalar conversions.
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1605 Bug 1605]: Workaround ABI issue with vector types (aka __m128) versus scalar types (aka float).
 +
* [https://bitbucket.org/eigen/eigen/commits/d1421c479baa Changeset d1421c479baa]: Fix for gcc<4.6 regarding usage of #pragma GCC diagnostic push/pop.
 +
* [https://bitbucket.org/eigen/eigen/commits/c20b83b9d736 Changeset c20b83b9d736]: Fix conjugate-gradient for right-hand-sides with a very small magnitude.
 +
* [https://bitbucket.org/eigen/eigen/commits/281a877a3bf7 Changeset 281a877a3bf7]: Fix product of empty arrays (returned 0 instead of 1).
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1590 Bug 1590]: Fix collision with some system headers defining the macro FP32.
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1584 Bug 1584]: Fix possible undefined behavior in random generation.
 +
* [https://bitbucket.org/eigen/eigen/commits/d632d18db8ca Changeset d632d18db8ca]: Fix fallback to BLAS for rankUpdate.
 +
* Fixes for NVCC 9.
 +
* Fix matrix-market IO.
 +
* Various fixes in the doc.
 +
* Various minor warning fixes/workarounds.
 +
 +
== Eigen 3.3.5 ==
 +
 +
Released on July 23, 2018.
 +
 +
Changes since 3.3.4:
 +
 +
* General bug fixes:
 +
** Fix GeneralizedEigenSolver when requesting for eigenvalues only ([https://bitbucket.org/eigen/eigen/commits/0d15855abb30 0d15855abb30])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1560 Bug 1560] fix product with a 1x1 diagonal matrix ([https://bitbucket.org/eigen/eigen/commits/90d7654f4a59 90d7654f4a59])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1543 Bug 1543]: fix linear indexing in generic block evaluation
 +
** Fix compilation of product with inverse transpositions (e.g., mat * Transpositions().inverse()) ([https://bitbucket.org/eigen/eigen/commits/14a13748d761 14a13748d761])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1509 Bug 1509]: fix computeInverseWithCheck for complexes ([https://bitbucket.org/eigen/eigen/commits/8be258ef0b6d 8be258ef0b6d])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1521 Bug 1521]: avoid signalling NaN in hypot and make it std::complex<> friendly ([https://bitbucket.org/eigen/eigen/commits/a9c06b854991 a9c06b854991]).
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1517 Bug 1517]: fix triangular product with unit diagonal and nested scaling factor: (s*A).triangularView<UpperUnit>()*B ([https://bitbucket.org/eigen/eigen/commits/a546d43bdd4f a546d43bdd4f])
 +
** Fix compilation of stableNorm for some odd expressions as input ([https://bitbucket.org/eigen/eigen/commits/499e982b9281 499e982b9281])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1485 Bug 1485]: fix linking issue of non template functions ([https://bitbucket.org/eigen/eigen/commits/ae28c2aaeeda ae28c2aaeeda])
 +
** Fix overflow issues in BDCSVD ([https://bitbucket.org/eigen/eigen/commits/92060f82e1de 92060f82e1de])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1468 Bug 1468] : add missing std:: to memcpy ([https://bitbucket.org/eigen/eigen/commits/4565282592ae 4565282592ae])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1453 Bug 1453]: fix Map with non-default inner-stride but no outer-stride ([https://bitbucket.org/eigen/eigen/commits/af00212cf3a4 af00212cf3a4])
 +
** Fix mixing types in sparse matrix products ([https://bitbucket.org/eigen/eigen/commits/7e5fcd0008bd 7e5fcd0008bd])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1544 Bug 1544]: Generate correct Q matrix in complex case ([https://bitbucket.org/eigen/eigen/commits/c0c410b508a1 c0c410b508a1])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1461 Bug 1461]: fix compilation of Map<const Quaternion>::x() ([https://bitbucket.org/eigen/eigen/commits/69652a06967d 69652a06967d])
 +
 +
* Backends:
 +
** Fix MKL backend for symmetric eigenvalues on row-major matrices ([https://bitbucket.org/eigen/eigen/commits/4726d6a24f69 4726d6a24f69])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1527 Bug 1527]: fix support for MKL's VML ([https://bitbucket.org/eigen/eigen/commits/972424860545 972424860545])
 +
** Fix incorrect ldvt in LAPACKE call from JacobiSVD ([https://bitbucket.org/eigen/eigen/commits/88c4604601b9 88c4604601b9])
 +
** Fix support for MKL's BLAS when using MKL_DIRECT_CALL ([https://bitbucket.org/eigen/eigen/commits/205731b87e19 205731b87e19], [https://bitbucket.org/eigen/eigen/commits/b88c70c6ced7 b88c70c6ced7], [https://bitbucket.org/eigen/eigen/commits/46e2367262e1 46e2367262e1])
 +
** Use MKL's lapacke.h header when using MKL ([https://bitbucket.org/eigen/eigen/commits/19bc9df6b726 19bc9df6b726])
 +
 +
* Diagnostics:
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1516 Bug 1516]: add assertion for out-of-range diagonal index in MatrixBase::diagonal(i) ([https://bitbucket.org/eigen/eigen/commits/783d38b3c78c 783d38b3c78c])
 +
** Add static assertion for fixed sizes Ref<> ([https://bitbucket.org/eigen/eigen/commits/e1203d5ceb8e e1203d5ceb8e])
 +
** Add static assertion on selfadjoint-view's UpLo parameter. ([https://bitbucket.org/eigen/eigen/commits/b84db94c677e b84db94c677e], [https://bitbucket.org/eigen/eigen/commits/0ffe8a819801 0ffe8a819801])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1479 Bug 1479]: fix failure detection in LDLT ([https://bitbucket.org/eigen/eigen/commits/67719139abc3 67719139abc3])
 +
 +
* Compiler support:
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1555 Bug 1555]: compilation fix with XLC
 +
** Workaround MSVC 2013 ambiguous calls ([https://bitbucket.org/eigen/eigen/commits/1c7b59b0b5f4 1c7b59b0b5f4])
 +
** Adds missing EIGEN_STRONG_INLINE to help MSVC properly inlining small vector calculations ([https://bitbucket.org/eigen/eigen/commits/1ba3f10b91f2 1ba3f10b91f2])
 +
** Several minor warning fixes: [https://bitbucket.org/eigen/eigen/commits/3c87fc0f1042 3c87fc0f1042], [https://bitbucket.org/eigen/eigen/commits/ad6bcf0e8efc ad6bcf0e8efc], "used uninitialized" ([https://bitbucket.org/eigen/eigen/commits/20efc44c5500 20efc44c5500]), Wint-in-bool-context ([https://bitbucket.org/eigen/eigen/commits/131da2cbc695 131da2cbc695], [https://bitbucket.org/eigen/eigen/commits/b4f969795d1b b4f969795d1b])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1428 Bug 1428]: make NEON vectorization compilable by MSVC. (* [https://bitbucket.org/eigen/eigen/commits/3d1b3dbe5927 3d1b3dbe5927], [https://bitbucket.org/eigen/eigen/commits/4e1b7350182a 4e1b7350182a])
 +
** Fix compilation and SSE support with PGI compiler ([https://bitbucket.org/eigen/eigen/commits/faabf000855d faabf000855d] [https://bitbucket.org/eigen/eigen/commits/90d33b09040f 90d33b09040f])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1555 Bug 1555]: compilation fix with XLC ([https://bitbucket.org/eigen/eigen/commits/23eb37691f14 23eb37691f14])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1520 Bug 1520]: workaround some -Wfloat-equal warnings by calling std::equal_to ([https://bitbucket.org/eigen/eigen/commits/7d9a9456ed7c 7d9a9456ed7c])
 +
** Make the TensorStorage class compile with clang 3.9 ([https://bitbucket.org/eigen/eigen/commits/eff7001e1f0a eff7001e1f0a])
 +
** Misc: some old compiler fixes ([https://bitbucket.org/eigen/eigen/commits/493691b29be1 493691b29be1])
 +
** Fix MSVC warning C4290: C++ exception specification ignored except to indicate a function is not __declspec(nothrow) ([https://bitbucket.org/eigen/eigen/commits/524918622506 524918622506])
 +
 +
* Architecture support:
 +
** Several AVX512 fixes for log, sqrt, rsqrt, non AVX512ER CPUs, apply_rotation_in_the_plane [https://bitbucket.org/eigen/eigen/commits/b64275e912ba b64275e912ba] [https://bitbucket.org/eigen/eigen/commits/cab3d626a59e cab3d626a59e] [https://bitbucket.org/eigen/eigen/commits/7ce234652ab9 7ce234652ab9], [https://bitbucket.org/eigen/eigen/commits/d89b9a754371 d89b9a754371].
 +
** AltiVec fixes: [https://bitbucket.org/eigen/eigen/commits/9450038e380d 9450038e380d]
 +
** NEON fixes: const-cast ([https://bitbucket.org/eigen/eigen/commits/e8a69835ccda e8a69835ccda]), compilation of Jacobi rotations ([https://bitbucket.org/eigen/eigen/commits/c06cfd545b15 c06cfd545b15],[http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1436 bug 1436]).
 +
** [https://bitbucket.org/eigen/eigen/commits/d0658cc9d4a2 Changeset d0658cc9d4a2]: Define pcast<> for SSE types even when AVX is enabled. (otherwise float are silently reinterpreted as int instead of being converted)
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1494 Bug 1494]: makes pmin/pmax behave on Altivec/VSX as on x86 regarding NaNs ([https://bitbucket.org/eigen/eigen/commits/d0af83f82b19 d0af83f82b19])
 +
 +
* Documentation:
 +
** Update manual pages regarding BDCSVD ([http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1538 bug 1538])
 +
** Add aliasing in common pitfaffs ([https://bitbucket.org/eigen/eigen/commits/2a5a8408fdc5 2a5a8408fdc5])
 +
** Update aligned_allocator ([https://bitbucket.org/eigen/eigen/commits/21e03aef9f2b 21e03aef9f2b])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1456 Bug 1456]: add perf recommendation for LLT and storage format ([https://bitbucket.org/eigen/eigen/commits/c8c154ebf130 c8c154ebf130],  [https://bitbucket.org/eigen/eigen/commits/9aef1e23dbe0 9aef1e23dbe0])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1455 Bug 1455]: Cholesky module depends on Jacobi for rank-updates ([https://bitbucket.org/eigen/eigen/commits/2e6e26b851a8 2e6e26b851a8])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1458 Bug 1458]: fix documentation of LLT and LDLT info() method ([https://bitbucket.org/eigen/eigen/commits/2a4cf4f473dd 2a4cf4f473dd])
 +
** Warn about constness in LLT::solveInPlace ([https://bitbucket.org/eigen/eigen/commits/518f97b69bdf 518f97b69bdf])
 +
** Fix lazyness of operator* with CUDA ([https://bitbucket.org/eigen/eigen/commits/c4dbb556bd36 c4dbb556bd36])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=336 Bug 336]: improve doc for PlainObjectBase::Map ([https://bitbucket.org/eigen/eigen/commits/13dc446545fe 13dc446545fe])
 +
 +
* Other general improvements:
 +
** Enable linear indexing in generic block evaluation ([https://bitbucket.org/eigen/eigen/commits/31537598bf83 31537598bf83], [https://bitbucket.org/eigen/eigen/commits/5967bc3c2cdb 5967bc3c2cdb], [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1543 bug 1543]).
 +
** Fix packet and alignment propagation logic of Block<Xpr> expressions. In particular, (A+B).col(j) now preserve vectorisation. ([https://bitbucket.org/eigen/eigen/commits/b323cc9c2c7f b323cc9c2c7f])
 +
** Several fixes regarding custom scalar type support: hypot ([https://bitbucket.org/eigen/eigen/commits/f8d6c791791d f8d6c791791d]), boost-multiprec ([https://bitbucket.org/eigen/eigen/commits/acb8ef9b2478 acb8ef9b2478]), literal casts ([https://bitbucket.org/eigen/eigen/commits/6bbd97f17534 6bbd97f17534], [https://bitbucket.org/eigen/eigen/commits/39f65d65894f 39f65d65894f]),
 +
** LLT: avoid making a copy when decomposing in place ([https://bitbucket.org/eigen/eigen/commits/2f7e28920f4e 2f7e28920f4e]), const the arg to solveInPlace() to allow passing .transpose(), .block(), etc. ([https://bitbucket.org/eigen/eigen/commits/c31c0090e998 c31c0090e998]).
 +
** Add possibility to overwrite EIGEN_STRONG_INLINE ([https://bitbucket.org/eigen/eigen/commits/7094bbdf3f4d 7094bbdf3f4d])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1528 Bug 1528]: use numeric_limits::min() instead of 1/highest() that might underflow ([https://bitbucket.org/eigen/eigen/commits/dd823c64ade7 dd823c64ade7])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1532 Bug 1532]: disable stl::*_negate in C++17 (they are deprecated) ([https://bitbucket.org/eigen/eigen/commits/88e9452099d5 88e9452099d5])
 +
** Add C++11 max_digits10 for half ([https://bitbucket.org/eigen/eigen/commits/faf74dde8ed1 faf74dde8ed1])
 +
** Make sparse QR result sizes consistent with dense QR ([https://bitbucket.org/eigen/eigen/commits/4638bc4d0f96 4638bc4d0f96])
 +
 +
* Unsupported/unit-tests/cmake/unvisible internals/etc.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1484 Bug 1484]: restore deleted line for 128 bits long doubles, and improve dispatching logic. ([https://bitbucket.org/eigen/eigen/commits/dffc0f957f19 dffc0f957f19])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1462 Bug 1462]: remove all occurences of the deprecated __CUDACC_VER__ macro by introducing EIGEN_CUDACC_VER ([https://bitbucket.org/eigen/eigen/commits/a201b8438d36 a201b8438d36])
 +
** [https://bitbucket.org/eigen/eigen/commits/2722aa8eb93f Changeset 2722aa8eb93f]: Fix oversharding bug in parallelFor.
 +
** [https://bitbucket.org/eigen/eigen/commits/ea1db80eab46 Changeset ea1db80eab46]: commit 45e9c9996da790b55ed9c4b0dfeae49492ac5c46 (HEAD -> memory_fix)
 +
** [https://bitbucket.org/eigen/eigen/commits/350957be012c Changeset 350957be012c]: Fix int versus Index
 +
** [https://bitbucket.org/eigen/eigen/commits/424038431015 Changeset 424038431015]: fix linking issue
 +
** [https://bitbucket.org/eigen/eigen/commits/3f938790b7e0 Changeset 3f938790b7e0]: Fix short vs long
 +
** [https://bitbucket.org/eigen/eigen/commits/ba14974d054a Changeset ba14974d054a]: Fix cmake scripts with no fortran compiler
 +
** [https://bitbucket.org/eigen/eigen/commits/2ac088501976 Changeset 2ac088501976]: add cmake-option to enable/disable creation of tests
 +
** [https://bitbucket.org/eigen/eigen/commits/56996c54158b Changeset 56996c54158b]: Use col method for column-major matrix
 +
** [https://bitbucket.org/eigen/eigen/commits/762373ca9793 Changeset 762373ca9793]: [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1449 Bug 1449]: fix redux_3 unit test
 +
** [https://bitbucket.org/eigen/eigen/commits/eda96fd2fa30 Changeset eda96fd2fa30]: Fix uninitialized output argument.
 +
** [https://bitbucket.org/eigen/eigen/commits/75a12dff8ca4 Changeset 75a12dff8ca4]: Handle min/max/inf/etc issue in cuda_fp16.h directly in test/main.h
 +
** [https://bitbucket.org/eigen/eigen/commits/568614bf79b8 Changeset 568614bf79b8]: Add tests for sparseQR results (value and size) covering bugs 1522 and 1544
 +
** [https://bitbucket.org/eigen/eigen/commits/12c9ece47d14 Changeset 12c9ece47d14]: SelfAdjointView<...,Mode> causes a static assert since commit c73a77e47db8
 +
** [https://bitbucket.org/eigen/eigen/commits/899fd2ef704f Changeset 899fd2ef704f]: weird compilation issue in mapped_matrix.cpp
 +
 +
== Eigen 3.3.4 ==
 +
 +
Released on June 15, 2017.
 +
 +
Changes since 3.3.3:
 +
 +
* General:
 +
** Improve speed of Jacobi rotation when mixing complex and real types.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1405 Bug 1405]: enable StrictlyLower/StrictlyUpper triangularView as the destination of matrix*matrix products.
 +
** UmfPack support: enable changes in the control settings and add report functions.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1423 Bug 1423]: fix LSCG's Jacobi preconditioner for row-major matrices.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1424 Bug 1424]: fix compilation issue with abs and unsigned integers as scalar type.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1410 Bug 1410]: fix lvalue propagation of Array/Matrix-Wrapper with a const nested expression.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1403 Bug 1403]: fix several implicit scalar type conversion making SVD decompositions compatible with ceres::Jet.
 +
** Fix some real-to-scalar-to-real useless conversions in  ColPivHouseholderQR.
 +
* Regressions:
 +
** Fix dense * sparse-selfadjoint-view product.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1417 Bug 1417]: make LinSpace compatible with std::complex.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1400 Bug 1400]: fix stableNorm alignment issue with EIGEN_DONT_ALIGN_STATICALLY.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1411 Bug 1411]: fix alignment issue in Quaternion.
 +
** Fix compilation of operations between nested Arrays.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1435 Bug 1435]: fix aliasing issue in expressions like: A = C - B*A.
 +
* Others:
 +
** Fix compilation with gcc 4.3 and ARM NEON.
 +
** Fix prefetches on ARM64 and ARM32.
 +
** Fix out-of-bounds check in COLAMD.
 +
** Few minor fixes regarding nvcc/CUDA support, including [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1396 bug 1396].
 +
** Improve cmake scripts for Pastix and BLAS detection.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1401 Bug 1401]: fix compilation of "cond ? x : -x" with x an AutoDiffScalar
 +
** Fix compilation of matrix log with Map as input.
 +
** Add specializations of std::numeric_limits for Eigen::half and and AutoDiffScalar
 +
** Fix compilation of streaming nested Array, i.e., cout << Array<Array<>>
 +
 +
== Eigen 3.3.3 ==
 +
 +
Released on February 21, 2017.
 +
 +
Changes since 3.3.2:
 +
 +
* General:
 +
** Improve multi-threading heuristic for matrix products with a small number of columns.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1395 Bug 1395]: fix compilation of JacobiSVD for vectors type.
 +
** Fix pruning in (sparse*sparse).pruned() when the result is nearly dense.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1382 Bug 1382]: move using std::size_t/ptrdiff_t to Eigen's namespace.
 +
** Fix compilation and inlining when using clang-cl with visual studio.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1392 Bug 1392]: fix #include <Eigen/Sparse> with mpl2-only.
 +
* Regressions:
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1379 Bug 1379]: fix compilation in sparse*diagonal*dense with OpenMP.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1373 Bug 1373]: add missing assertion on size mismatch with compound assignment operators (e.g., mat += mat.col(j))
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1375 Bug 1375]: fix cmake installation with cmake 2.8.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1383 Bug 1383]: fix LinSpaced with integers for LinPspaced(n,0,n-1) with n==0 or the high<low case.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1381 Bug 1381]: fix sparse.diagonal() used as a rvalue.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1384 Bug 1384]:  fix evaluation of "sparse/scalar" that used the wrong evaluation path.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=478 Bug 478]: fix regression in the eigen decomposition of zero matrices.
 +
** Fix a compilation issue with MSVC regarding the usage of CUDACC_VER
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1393 Bug 1393]: enable Matrix/Array explicit constructor from types with conversion operators.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1394 Bug 1394]: fix compilation of SelfAdjointEigenSolver<Matrix>(sparse*sparse).
 +
* Others:
 +
** Fix ARM NEON wrapper for 16 byte systems.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1391 Bug 1391]: include IO.h before DenseBase to enable its usage in DenseBase plugins.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1389 Bug 1389]: fix std containers support with MSVC and AVX.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1380 Bug 1380]: fix matrix exponential with Map<>.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1369 Bug 1369]: fix type mismatch warning with OpenMP.
 +
** Fix usage of size_t instead of Index in sefl-adjoint matrix * vector
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1378 Bug 1378]: fix doc (DiagonalIndex vs Diagonal).
 +
 +
== Eigen 3.3.2 ==
 +
 +
Released on January 18, 2017.
 +
 +
Changes since 3.3.1:
 +
 +
* General:
 +
** Add transpose, adjoint, conjugate methods to SelfAdjointView (useful to write generic code)
 +
** Make sure that HyperPlane::transform maintains a unit normal vector in the Affine case.
 +
** Several documentation improvements, including: several doxygen workarounds, [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1336 bug 1336], [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1370 Bug 1370], StorageIndex, selfadjointView, sparseView(), sparse triangular solve, AsciiQuickReference.txt, ...)
 +
* Regressions:
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1358 Bug 1358]: fix compilation of sparse += sparse.selfadjointView();
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1359 Bug 1359]: fix compilation of sparse /=scalar, sparse *=scalar, and col_major_sparse.row() *= scalar.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1361 Bug 1361]:  fix compilation of mat=perm.inverse()
 +
** Some fixes in sparse coeff-wise binary operations: add missing .outer() member to iterators, and properly report storage order.
 +
** Fix aliasing issue in code as A.triangularView() = B*A.sefladjointView()*B.adjoint()
 +
* Performance:
 +
** Improve code generation for mat*vec on some compilers.
 +
** Optimize horizontal adds in SSE3 and AVX.
 +
** Speed up row-major TRSM (triangular solve with a matrix as right-hand-side) by reverting "vec/y" to "vec*(1/y)". The rationale is:
 +
*** div is extremely costly
 +
*** this is consistent with the column-major case
 +
*** this is consistent with all other BLAS implementations
 +
** Remove one temporary in SparseLU::solve()
 +
* Others:
 +
** Fix BLAS backend for symmetric rank K updates.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1360 Bug 1360]: fix -0 vs +0 issue with Altivec
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1363 Bug 1363]: fix mingw's ABI issue
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1367 Bug 1367]: fix compilation with gcc 4.1.
 +
** Fix ABI issue with AVX and old gcc versions.
 +
** Fix some warnings with ICC, Power8, etc.
 +
** Fix compilation with MSVC 2017
 +
 +
== Eigen 3.3.1 ==
 +
 +
Released on December 06, 2016.
 +
 +
Changes since 3.3.0:
 +
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=426 Bug 426]: add operators && and || to dense and sparse matrices (only dense arrays were supported)
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1319 Bug 1319]: add support for CMake's imported targets.
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1343 Bug 1343]: fix compilation regression in array = matrix_product and mat+=selfadjoint_view
 +
* Fix regression in assignment of sparse block to sparse block.
 +
* Fix a memory leak in Ref<SparseMatrix> and Ref<SparseVector>.
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1351 Bug 1351]: fix compilation of random with old compilers.
 +
* Fix a performance regression in (mat*mat)*vec for which mat*mat was evaluated multiple times.
 +
* Fix a regression in SparseMatrix::ReverseInnerIterator
 +
* Fix performance issue of products for dynamic size matrices with fixed max size.
 +
* implement float/std::complex<float> for ZVector
 +
* Some fixes for expression-template scalar-types
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1356 Bug 1356]: fix undefined behavior with nullptr.
 +
* Workaround some compilation errors with MSVC and MSVC/clr
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1348 Bug 1348]: document EIGEN_MAX_ALIGN_BYTES and EIGEN_MAX_STATIC_ALIGN_BYTES, and reflect in the doc that EIGEN_DONT_ALIGN* are deprecated.
 +
* Bugs [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1346 1346],[http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1347 1347]: make Eigen's installation relocatable.
 +
* Fix some harmless compilation warnings.
 +
 +
== Eigen 3.3 ==
 +
 +
Released on November 10, 2016
 +
 +
For a comprehensive list of change since the 3.2 series, see this [[3.3|page]].
 +
 +
 +
Main changes since 3.3-rc2:
 +
* Fix regression in printing sparse expressions.
 +
* Fix sparse solvers when using a SparseVector as the result and/or right-hand-side.
 +
 +
== Eigen 3.3-rc2 ==
 +
 +
Released on November 04, 2016
 +
 +
For a comprehensive list of change since the 3.2 series, see this [[3.3|page]].
 +
 +
Main changes since 3.3-rc1:
 +
* Core module
 +
** Add supports for AVX512 SIMD instruction set.
 +
** Bugs [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=698 698] and  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1004 1004]: Improve numerical robustness of LinSpaced methods for both real and integer scalar types ([http://eigen.tuxfamily.org/dox-devel/classEigen_1_1DenseBase.html#aaef589c1dbd7fad93f97bd3fa1b1e768 details]).
 +
** Fix a regression in X = (X*X.transpose())/scalar with X rectangular (X was resized before the evaluation).
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1311 Bug 1311]: Fix alignment logic in some cases of (scalar*small).lazyProduct(small)
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1317 Bug 1317]:  fix a performance regression from 3.2 with clang and some nested block expressions.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1308 Bug 1308]: fix compilation of some small products involving nullary-expressions.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1333 Bug 1333]: Fix a regression with mat.array().sum()
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1328 Bug 1328]: Fix a compilation issue with old compilers introduced in 3.3-rc1.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1325 Bug 1325]: Fix compilation on NEON with clang
 +
** Properly handle negative inputs in vectorized sqrt.
 +
** Improve cost-model to determine the ideal number of threads in matrix-matrix products.
 +
* Geometry module
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1304 Bug 1304]: Fix Projective * scaling and Projective *= scaling.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1310 Bug 1310]: Workaround a compilation regression from 3.2 regarding triangular * homogeneous
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1312 Bug 1312]: Quaternion to AxisAngle conversion now ensures the angle will be in the range [0,pi]. This also increases accuracy when q_w is negative.
 +
* Tensor module
 +
** Add support for OpenCL.
 +
** Improved random number generation.
 +
* Other
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1330 Bug 1330]: SuiteSparse, explicitly handle the fact that Cholmod does not support single precision float numbers.
 +
** SuiteSparse, fix SPQR for rectangular matrices
 +
** Fix compilation of qr.inverse() for column and full pivoting variants
 +
 +
== Eigen 3.2.10 ==
 +
 +
Released on October 04, 2016
 +
 +
Changes since 3.2.9:
 +
 +
Main fixes and improvements:
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1272 Bug 1272]: Core module, improve comma-initializer in handling empty matrices.
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1276 Bug 1276]: Core module, remove all references to std::binder* when C++11 is enabled (those are deprecated).
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1304 Bug 1304]: Geometry module, fix Projective * scaling and Projective *= scaling.
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1300 Bug 1300]: Sparse module, compilation fix for some block expression and SPQR support.
 +
* Sparse module, fix support for row (resp. column) of a column-major (resp. row-major) sparse matrix.
 +
* LU module, fix 4x4 matrix inversion for non-linear destinations.
 +
* Core module, a few fixes regarding custom complex types.
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1275 Bug 1275]: backported improved random generator from 3.3
 +
* Workaround MSVC 2013 compilation issue in Reverse
 +
* Fix UmfPackLU constructor for expressions.
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1273 Bug 1273]: fix shortcoming in eigen_assert macro
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1249 Bug 1249]:  disable the use of __builtin_prefetch for compilers other than GCC, clang, and ICC.
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1265 Bug 1265]: fix doc of QR decompositions
 +
 +
== Eigen 3.3-rc1 ==
 +
 +
Released on September 22, 2016
 +
 +
For a comprehensive list of change since the 3.2 series, see this [[3.3|page]].
 +
 +
Main changes since 3.3-beta2:
 +
 +
* New features and improvements:
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=645 Bug 645]: implement eigenvector computation in GeneralizedEigenSolver
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1271 Bug 1271]: add a SparseMatrix::coeffs() method returning a linear view of the non-zeros (for compressed mode only).
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1286 Bug 1286]: Improve support for custom nullary functors: now the functor only has to expose one relevant operator among f(), f(i), f(i,j).
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1272 Bug 1272]: improve comma-initializer in handling empty matrices.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1268 Bug 1268]: detect failure in LDLT and report them through info()
 +
** Add support for scalar factor in sparse-selfadjoint * dense products, and enable +=/-= assignment for such products.
 +
** Remove temporaries in product expressions matching "d?=a-b*c" by rewriting them as "d?=a; d?=b*c;"
 +
** Vectorization improvements for some small product cases.
 +
 +
* Doc:
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1265 Bug 1265]: fix outdated doc in QR facto
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=828 Bug 828]: improve documentation of sparse block methods, and sparse unary methods.
 +
** Improve documentation regarding nullary functors, and add an example demonstrating the use of nullary expression to perform fancy matrix manipulations.
 +
** Doc: explain how to use Accelerate as a LAPACK backend.
 +
 +
* Bug fixes and internal changes:
 +
** Numerous fixes regarding support for custom complex types.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1273 Bug 1273]: fix shortcoming in eigen_assert macro
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1278 Bug 1278]: code formatting
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1270 Bug 1270]: by-pass hand written pmadd with recent clang versions.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1282 Bug 1282]: fix implicit double to float conversion warning
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1167 Bug 1167]: simplify installation of header files using cmake's install(DIRECTORY ...) command
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1283 Bug 1283]: fix products involving an uncommon vector.block(..) expressions.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1285 Bug 1285]: fix a minor regression in LU factorization.
 +
** JacobiSVD now consider any denormal number as zero.
 +
** Numerous fixes regarding support for CUDA/NVCC (including bugs [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1266 1266]:
 +
** Fix an alignment issue in gemv, symv, and trmv for statically allocated temporaries.
 +
** Fix 4x4 matrix inversion for non-linear destinations.
 +
** Numerous improvements and fixes in half precision scalar type.
 +
** Fix vectorization logic for coeff-based product for some corner cases
 +
** Bugs [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1260 1260], [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1261 1261], [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1264 1264]: several fixes in AutoDiffScalar.
 +
 +
== Eigen 3.3-beta2 ==
 +
 +
Released on July 26, 2016
 +
 +
For a comprehensive list of change since the 3.2 series, see this [[3.3|page]].
 +
 +
Main changes since 3.3-beta1:
 +
 +
* Dense features:
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=707 Bug 707]: Add support for [http://eigen.tuxfamily.org/dox-devel/group__InplaceDecomposition.html inplace] dense decompositions.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=977 Bug 977]: normalize(d) left the input unchanged if its norm is 0 or too close to 0.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=977 Bug 977]: add stableNormalize[d] methods: they are analogues to normalize[d] but with carefull handling of under/over-flow.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=279 Bug 279]: Implement generic scalar*expr and expr*scalar operators. This is especially useful for custom scalar types, e.g., to enable float*expr<multi_prec> without conversion.
 +
** New unsupported/Eigen/SpecialFunctions module providing the following coefficient-wise math functions: erf, erfc, lgamma, digamma, polygamma, igamma, igammac, zeta, betainc.
 +
** Add fast reciprocal condition estimators in dense LU and Cholesky factorizations.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1230 Bug 1230]: add support for SelfadjointView::triangularView() and diagonal()
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=823 Bug 823]: add Quaternion::UnitRandom() method.
 +
** Add exclusive or operator for bool arrays.
 +
** Relax dependency on MKL for EIGEN_USE_BLAS and EIGEN_USE_LAPACKE: any BLAS and LAPACK libraries can now be used as backend (see  [http://eigen.tuxfamily.org/dox-devel/TopicUsingBlasLapack.html doc]).
 +
** Add static assertion to x(), y(), z(), w() accessors
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=51 Bug 51]: avoid dynamic memory allocation in fixed-size rank-updates, matrix products evaluated within a triangular part, and selfadjoint times matrix products.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=696 Bug 696]: enable zero-sized block at compile-time by relaxing the respective assertion
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=779 Bug 779]: in Map, allows non aligned buffers for buffers smaller than the requested alignment.
 +
** Add a complete orthogonal decomposition class: [http://eigen.tuxfamily.org/dox-devel/classEigen_1_1CompleteOrthogonalDecomposition.html CompleteOrthogonalDecomposition]
 +
** Improve robustness of JacoviSVD with complexes (underflow, noise amplification in complex to real conversion, compare off-diagonal entries to the current biggest diagonal entry instead of the global biggest, null inputs).
 +
** Change Eigen's ColPivHouseholderQR to use a numerically stable norm downdate formula (changeset 9da6c621d055)
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1214 Bug 1214]: consider denormals as zero in D&C SVD. This also workaround infinite binary search when compiling with ICC's unsafe optimizations.
 +
** Add log1p for arrays.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1193 Bug 1193]: now lpNorm<Infinity> supports empty inputs.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1151 Bug 1151]: remove useless critical section in matrix product
 +
** Add missing non-const reverse method in VectorwiseOp (e.g., this enables A.rowwise().reverse() = ...)
 +
** Update RealQZ to reduce 2x2 diagonal block of T corresponding to non reduced diagonal block of S to positive diagonal form.
 +
 +
* Sparse features:
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=632 Bug 632]: add support for "dense +/- sparse" operations. The current implementation is based on SparseView to make the dense subexpression compatible with the sparse one.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1095 Bug 1095]: add Cholmod*::logDeterminant/determinant functions.
 +
** Add SparseVector::conservativeResize() method
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=946 Bug 946]: generalize Cholmod::solve to handle any rhs expressions.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1150 Bug 1150]: make IncompleteCholesky more robust by iteratively increase the shift until the factorization succeed (with at most 10 attempts)
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=557 Bug 557]: make InnerIterator of sparse storage types more versatile by adding default-ctor, copy-ctor/assignment.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=694 Bug 694]: document that SparseQR::matrixR is not sorted.
 +
** Block expressions now expose all the information defining the block.
 +
** Fix GMRES returned error.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1119 Bug 1119]: add support for SuperLU 5
 +
 +
* Performance improvements:
 +
**  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=256 Bug 256]: enable vectorization with unaligned loads/stores. This concerns all architectures and all sizes. This new behavior can be disabled by defining EIGEN_UNALIGNED_VECTORIZE=0
 +
** Add support for s390x(zEC13) ZVECTOR instruction set.
 +
** Optimize mixing of real with complex matrices by avoiding a conversion from real to complex when the real types do not match exactly. (see [https://bitbucket.org/eigen/eigen/commits/bccae23d7018 bccae23d7018])
 +
** Speedup square roots in performance critical methods such as norm, normalize(d).
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1154 Bug 1154]: use dynamic scheduling for spmv products.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=667 Bug 667],  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1181 1181]: improve perf with MSVC and ICC through FORCE_INLINE
 +
** Improve heuristics for switching between coeff-based and general matrix product implementation at compile-time.
 +
** Add vectorization of tanh for float (SSE/AVX)
 +
** Improve cost estimates of numerous functors.
 +
** Numerous improvements regarding half-packet vectorization: coeff-based products (e.g.,  Matrix4f*Vector4f is now vectorized again when using AVX), reductions, linear vs inner traversals.
 +
** Fix performance regression: with AVX, unaligned stores were emitted instead of aligned ones for fixed size assignment.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1201 Bug 1201]: optimize affine*vector products.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1191 Bug 1191]: prevent Clang/ARM from rewriting VMLA into VMUL+VADD.
 +
** Small speed-up in Quaternion::slerp.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1201 Bug 1201]:  improve code generation of affine*vec with MSVC
 +
 +
* Doc:
 +
** Add [http://eigen.tuxfamily.org/dox-devel/group__MatrixfreeSolverExample.html documentation and exemple] for matrix-free solving.
 +
** A new documentation [http://eigen.tuxfamily.org/dox-devel/group__CoeffwiseMathFunctions.html page] summarizing coefficient-wise math functions.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1144 Bug 1144]: clarify the doc about aliasing in case of resizing and matrix product.
 +
** A new documentation [http://eigen.tuxfamily.org/dox-devel/group__DenseDecompositionBenchmark.html page] summarizing the true performance of Eigen's dense decomposition algorithms.
 +
 +
* Misc improvements:
 +
** Allow one generic scalar argument for all binary operators/functions.
 +
** Add a EIGEN_MAX_CPP_VER option to limit the C++ version to be used, as well as [http://eigen.tuxfamily.org/dox-devel/TopicPreprocessorDirectives.html#title1 fine grained options] to control individual language features.
 +
** A new [http://eigen.tuxfamily.org/dox-devel/structEigen_1_1ScalarBinaryOpTraits.html ScalarBinaryOpTraits] class allowing to control how different scalar types are mixed.
 +
** NumTraits now exposes a digits10 function making internal::significant_decimals_impl deprecated.
 +
** Countless improvements and fixes in Tensors module.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1156 Bug 1156]: fix several function declarations whose arguments were passed by value instead of being passed by reference
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1164 Bug 1164]: fix std::list and std::deque specializations such that our aligned allocator is automatically activated only when the user did not specified an allocator (or specified the default std::allocator).
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=795 Bug 795]: mention allocate_shared as a candidate for aligned_allocator.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1170 Bug 1170]: skip calls to memcpy/memmove for empty inputs.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1203 Bug 1203]: by-pass large stack-allocation in stableNorm if EIGEN_STACK_ALLOCATION_LIMIT is too small
 +
** Improve constness of blas level-2/3 interface.
 +
** Implement stricter argument checking for SYRK and SY2K
 +
** Countless improvements in the documentations.
 +
** Internal: Remove posix_memalign, _mm_malloc, and _aligned_malloc special paths.
 +
** Internal: Remove custom unaligned loads for SSE
 +
** Internal: introduce [U]IntPtr types to be used for casting pointers to integers.
 +
** Internal: NumTraits now exposes infinity()
 +
** Internal: EvalBeforeNestingBit is now deprecated.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1213 Bug 1213]: workaround gcc linking issue with anonymous enums.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1242 Bug 1242]: fix comma initializer with empty matrices.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=725 Bug 725]: make move ctor/assignment noexcept
 +
** Add minimal support for Array<string>
 +
** Improve support for custom scalar types bases on expression template (e.g., boost::multiprecision::number<> type). All dense decompositions are successfully tested.
 +
 +
* Most visible fixes:
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1144 Bug 1144]: fix regression in x=y+A*x  (aliasing issue)
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1140 Bug 1140]: fix usage of _mm256_set_m128 and _mm256_setr_m128 in AVX support
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1141 Bug 1141]: fix some missing initializations in CholmodSupport
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1143 Bug 1143]: workaround gcc bug #10200
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1145 Bug 1145], [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1147 1147],  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1148 1148],  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1149 1149]: numerous fixes in PastixSupport
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1153 Bug 1153]: don't rely on __GXX_EXPERIMENTAL_CXX0X__ to detect C++11 support.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1152 Bug 1152]: fix data race in static initialization of blas routines.
 +
** fix some buffer overflow in product block size computation.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=96 Bug 96],  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id1006 1006]: fix by value argument in result_of
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=178 Bug 178]: clean several const_cast.
 +
** Fix compilation in ceil() function.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=698 Bug 698]: fix linspaced for integer types.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1161 Bug 1161]: fix division by zero for huge scalar types in cache block size computation.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=774 Bug 774]: fix a numerical issue in Umeyama algorithm that produced unwanted reflections.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=901 Bug 901]: fix triangular-view with unit diagonal of sparse rectangular matrices.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1166 Bug 1166]: fix shortcoming in gemv when the destination is not a vector at compile-time.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1172 Bug 1172]: make SparseMatrix::valuePtr and innderIndexPtr properly return null for empty matrices
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=537 Bug 537]:  fix a compilation issue in Quaternion with Apples's compiler
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1186 Bug 1186]: fix usage of vreinterpretq_u64_f64 (NEON)
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1190 Bug 1190]: fix usage of __ARM_FEATURE_FMA on Clang/ARM
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1189 Bug 1189]:  fix pow/atan2 compilation for AutoDiffScalar
 +
** Fix detection of same input-output when applied permutations, or on solve operations.
 +
** Workaround a division by zero in triangular solve when outerstride==0
 +
** Fix compilation of sparse.cast<>().transpose().
 +
** Fix double-conversion warnings throughout the code.
 +
**  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1207 Bug 1207]: fix logical-op warnings
 +
**  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1222 Bug 1222],  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1223 1223]: fix compilation in AutoDiffScalar.
 +
**  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1229 Bug 1229]: fix usage of Derived::Options in MatrixFunctions.
 +
**  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1224 Bug 1224]: fix regression in (dense*dense).sparseView().
 +
**  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1231 Bug 1231]: fix compilation regression regarding complex_array/=real_array.
 +
**  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1221 Bug 1221]: disable gcc 6 warning: ignoring attributes on template argument.
 +
** Workaround clang/llvm bug 27908
 +
**  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1236 Bug 1236]: fix possible integer overflow in sparse matrix product.
 +
**  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1238 Bug 1238]: fix SparseMatrix::sum() overload for un-compressed mode
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1240 Bug 1240]: remove any assumption on NEON vector types
 +
** Improves support for MKL's PARDISO solver.
 +
** Fix support for Visual 2010.
 +
** Fix support for gcc 4.1.
 +
** Fix support for ICC 2016
 +
** Various Altivec/VSX fixes: exp, support for clang 3.9, 
 +
**  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1258 Bug 1258]: fix compilation of Map<SparseMatrix>::coeffRef
 +
**  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1249 Bug 1249]: fix compilation with compilers that do not support__builtin_prefetch .
 +
**  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1250 Bug 1250]: fix pow() for AutoDiffScalar with custom nested scalar type.
 +
 +
== Eigen 3.2.9 ==
 +
 +
Released on July 18, 2016
 +
 +
Changes since 3.2.8:
 +
 +
* Main fixes and improvements:
 +
** Improve numerical robustness of JacobiSVD (backported from 3.3)
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1017 Bug 1017]: prevents underflows in makeHouseholder
 +
** Fix numerical accuracy issue in the extraction of complex eigenvalue pairs in real generalized eigenvalue problems.
 +
** Fix support for vector.homogeneous().asDiagonal()
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1238 Bug 1238]: fix SparseMatrix::sum() overload for un-compressed mode
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1213 Bug 1213]: workaround gcc linking issue with anonymous enums.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1236 Bug 1236]: fix possible integer overflow in sparse-sparse product
 +
** Improve detection of identical matrices when applying a permutation (e.g., mat = perm * mat)
 +
** Fix usage of nesting type in blas_traits. In practice, this fixes compilation of expressions such as A*(A*A)^T
 +
** CMake: fixes support of Ninja generator
 +
** Add a StorageIndex typedef to sparse matrices and expressions to ease porting code to 3.3 (see http://eigen.tuxfamily.org/index.php?title=3.3#Index_typedef)
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1200 Bug 1200]: make aligned_allocator c++11 compatible (backported from 3.3)
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1182 Bug 1182]: improve generality of  abs2 (backported from 3.3)
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=537 Bug 537]: fix compilation of Quaternion with Apples's compiler
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1176 Bug 1176]: allow products between compatible scalar types
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1172 Bug 1172]: make valuePtr and innerIndexPtr properly return null for empty sparse matrices.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1170 Bug 1170]: skip calls to memcpy/memmove for empty inputs.
 +
 +
* Others:
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1242 Bug 1242]: fix comma initializer with empty matrices.
 +
** Improves support for MKL's PARDISO solver.
 +
** Fix a compilation issue with Pastix solver.
 +
** Add some missing explicit scalar conversions
 +
** Fix a compilation issue with matrix exponential (unsupported MatrixFunctions module).
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=734 Bug 734]: fix a storage order issue in unsupported Spline module
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1222 Bug 1222]: fix a compilation issue in AutoDiffScalar
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1221 Bug 1221]: shutdown some GCC6's warnings.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1175 Bug 1175]: fix index type conversion warnings in sparse to dense conversion.
 +
 +
== Eigen 3.2.8 ==
 +
 +
Released on February 16, 2016
 +
 +
Changes since 3.2.7:
 +
 +
* Main fixes and improvements:
 +
** Make FullPivLU::solve use rank() instead of nonzeroPivots().
 +
** Add EIGEN_MAPBASE_PLUGIN
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1166 Bug 1166]: fix issue in matrix-vector products when the destination is not a vector at compile-time.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1100 Bug 1100]: Improve cmake/pkg-config support.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1113 Bug 1113]: fix name conflict with C99's "I".
 +
** Add missing delete operator overloads in EIGEN_MAKE_ALIGNED_OPERATOR_NEW
 +
** Fix (A*B).maxCoeff(i) and similar.
 +
** Workaround an ICE with VC2015 Update1 x64.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1156 Bug 1156]: fix several function declarations whose arguments were passed by value instead of being passed by reference
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1164 Bug 1164]: fix std::list and std::deque specializations such that our aligned allocator is automatically activatived only when the user did not specified an allocator (or specified the default std::allocator).
 +
 +
* Others:
 +
** Fix BLAS backend (aka MKL) for empty matrix products.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1134 Bug 1134]: fix JacobiSVD pre-allocation.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1111 Bug 1111]: fix infinite recursion in sparse-column-major.row(i).nonZeros() (it now produces a compilation error)
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1106 Bug 1106]: workaround a compilation issue in Sparse module for msvc-icc combo
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1153 Bug 1153]: remove the usage of __GXX_EXPERIMENTAL_CXX0X__ to detect C++11 support
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1143 Bug 1143]: work-around gcc bug in COLAMD
 +
** Improve support for matrix products with empty factors.
 +
** Fix and clarify documentation of Transform wrt operator*(MatrixBase)
 +
** Add a matrix-free conjugate gradient example.
 +
** Fix cost computation in CwiseUnaryView (internal)
 +
** Remove custom unaligned loads for SSE.
 +
** Some warning fixes.
 +
** Several other documentation clarifications.
 +
 +
== Eigen 3.3-beta1 ==
 +
 +
Released on December 16, 2015
 +
 +
For a comprehensive list of change since the 3.2 series, see this [[3.3|page]].
 +
 +
Main changes since 3.3-alpha1:
 +
 +
* Dense features:
 +
** Add LU::transpose().solve() and LU::adjoint().solve() API.
 +
** Add Array::rsqrt() method as a more efficient shorcut for sqrt().inverse().
 +
** Add Array::sign() method for real and complexes.
 +
** Add lgamma, erf, and erfc functions for arrays.
 +
** Add support for row/col-wise lpNorm().
 +
** Add missing Rotation2D::operator=(Matrix2x2).
 +
** Add support for permutation * homogenous.
 +
** Improve numerical accuracy in LLT and triangular solve by using true scalar divisions (instead of x * (1/y)).
 +
** Add EIGEN_MAPBASE_PLUGIN and EIGEN_QUATERNION_PLUGIN.
 +
**  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1074 Bug 1074]: forbid the creation of PlainObjectBase objects.
 +
 +
* Sparse features:
 +
** Add IncompleteCholesky preconditioner.
 +
** Improve support for [http://eigen.tuxfamily.org/dox/group__MatrixfreeSolverExample.html matrix-free iterative solvers]
 +
** Extend setFromTripplets API to allow passing a functor object controlling how to collapse duplicated entries.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=918 Bug 918]: add access to UmfPack return code and parameters.
 +
** Add support for dense.cwiseProduct(sparse), thus enabling (dense*sparse).diagonal() expressions.
 +
** Add support to directly evaluate the product of two sparse matrices within a dense matrix.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1064 Bug 1064]: add support for Ref<SparseVector>.
 +
** Add supports for real mul/div sparse<complex> operations.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1086 Bug 1086]: replace deprecated UF_long by SuiteSparse_long.
 +
** Make Ref<SparseMatrix> more versatile.
 +
 +
* Performance improvements:
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1115 Bug 1115]: enable static alignment and thus small size vectorization on ARM.
 +
** Add temporary-free evaluation of "D.nolias() ?= C + A*B".
 +
** Add vectorization of round, ceil and floor for SSE4.1/AVX.
 +
** Optimize assignment into a Block<SparseMatrix> by using Ref and avoiding useless updates in non-compressed mode. This make row-by-row filling of a row-major sparse matrix very efficient.
 +
** Improve internal cost model leading to faster code in some cases (see changeset [https://bitbucket.org/eigen/eigen/commits/1bcb41187a45 1bcb41187a45]).
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1090 Bug 1090]: improve redux evaluation logic.
 +
** Enable unaligned vectorization of small fixed size matrix products.
 +
 +
* Misc improvements:
 +
** Improve support for isfinite/isnan/isinf in fast-math mode.
 +
** Make the IterativeLinearSolvers module compatible with MPL2-only mode by defaulting to COLAMDOrdering and NaturalOrdering for ILUT and ILLT respectively.
 +
** Avoid any OpenMP calls if multi-threading is explicitly disabled at runtime.
 +
** Make abs2 compatible with custom complex types.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1109 Bug 1109]: use noexcept instead of throw for C++11 compilers.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1100 Bug 1100]: Improve cmake/pkg-config support.
 +
** Countless improvements and fixes in Tensors module.
 +
 +
* Most visible fixes:
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1105 Bug 1105]: fix default preallocation when moving from compressed to uncompressed mode in SparseMatrix.
 +
** Fix UmfPackLU constructor for expressions.
 +
** Fix degenerate cases in syrk and trsm BLAS API.
 +
** Fix matrix to quaternion (and angleaxis) conversion for matrix expression.
 +
** Fix compilation of sparse-triangular to dense assignment.
 +
** Fix several minor performance issues in the nesting of matrix products.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1092 Bug 1092]: fix iterative solver ctors for expressions as input.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1099 Bug 1099]: fix missing include for CUDA.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1102 Bug 1102]: fix multiple definition linking issue.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1088 Bug 1088]: fix setIdenity for non-compressed sparse-matrix.
 +
** Fix SparseMatrix::insert/coeffRef for non-empty compressed matrix.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1113 Bug 1113]: fix name conflict with C99's "I".
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1075 Bug 1075]: fix AlignedBox::sample for runtime dimension.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1103 Bug 1103]: fix NEON vectorization of complex<double> multiplication.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1134 Bug 1134]: fix JacobiSVD pre-allocation.
 +
** Fix ICE with VC2015 Update1.
 +
** Improve cmake install scripts.
 +
 +
== Eigen 3.2.7 ==
 +
 +
Released on November 5, 2015
 +
 +
Changes since 3.2.6:
 +
 +
* Main fixes and improvements:
 +
** Add support for dense.cwiseProduct(sparse).
 +
** Fix a regression regarding (dense*sparse).diagonal().
 +
** Make the IterativeLinearSolvers module compatible with MPL2-only mode by defaulting to COLAMDOrdering and NaturalOrdering for ILUT and ILLT respectively.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=266 Bug 266]: backport support for c++11 move semantic
 +
** operator/=(Scalar) now performs a true division (instead of mat*(1/s))
 +
** Improve numerical accuracy in LLT and triangular solve by using true scalar divisions (instead of mat * (1/s))
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1092 Bug 1092]: fix iterative solver constructors for expressions as input
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1088 Bug 1088]: fix setIdenity for non-compressed sparse-matrix
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1086 Bug 1086]: add support for recent SuiteSparse versions
 +
 +
* Others:
 +
** Add overloads for real-scalar times SparseMatrix<complex> operations. This avoids real to complex conversions, and also fixes a compilation issue with MSVC.
 +
** Use explicit Scalar types for AngleAxis initialization
 +
** Fix several shortcomings in cost computation (avoid multiple re-evaluation in some very rare cases).
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1090 Bug 1090]: fix a shortcoming in redux logic for which slice-vectorization plus unrolling might happen.
 +
** Fix compilation issue with MSVC by backporting DenseStorage::operator= from devel branch.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1063 Bug 1063]: fix nesting of unsupported/AutoDiffScalar to prevent dead references when computing second-order derivatives
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1100 Bug 1100]: remove explicit CMAKE_INSTALL_PREFIX prefix to conform to cmake install's DESTINATION parameter.
 +
** unsupported/ArpackSupport is now properly installed by make install.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1080 Bug 1080]: warning fixes
 +
 +
== Eigen 3.2.6 ==
 +
 +
Released on October 1, 2015
 +
 +
Changes since 3.2.5:
 +
 +
* fix some compilation issues with MSVC 2013, including bugs [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1000 1000] and [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1057 1057]
 +
* SparseLU: fixes to support EIGEN_DEFAULT_TO_ROW_MAJOR ([http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1053 bug 1053]), and for empty ([http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1026 bug 1026]) and some structurally rank deficient matrices ([http://eigen.tuxfamily.org/bz/show_bug.cgi?id=792 bug 792])
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1075 Bug 1075]: fix AlignedBox::sample() for Dynamic dimension
 +
* fix regression in AMD ordering when a column has only one off-diagonal non-zero (used in sparse Cholesky)
 +
* fix Jacobi preconditioner with zero diagonal entries
 +
* fix Quaternion identity initialization for non-implicitly convertible types
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1059 Bug 1059]: fix predux_max<Packet4i> for NEON
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1039 Bug 1039]: fix some issues when redefining EIGEN_DEFAULT_DENSE_INDEX_TYPE
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1062 Bug 1062]: fix SelfAdjointEigenSolver for RowMajor matrices
 +
* MKL: fix support for the 11.2 version, and fix a naming conflict ([http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1067 bug 1067])
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1033 Bug 1033]: explicit type conversion from 0 to RealScalar
 +
 +
== Eigen 3.3-alpha1 ==
 +
 +
Released on September 4, 2015
 +
 +
See the [[3.3|announcement]].
 +
 +
== Eigen 3.2.5 ==
 +
 +
Released on June 16, 2015
 +
 +
Changes since 3.2.4:
 +
 +
* Changes with main impact:
 +
** Improve robustness of SimplicialLDLT to semidefinite problems by correctly handling structural zeros in AMD reordering
 +
** Re-enable supernodes in SparseLU (fix a performance regression in SparseLU)
 +
** Use zero guess in ConjugateGradients::solve
 +
** Add PermutationMatrix::determinant method
 +
** Fix SparseLU::signDeterminant() method, and add a SparseLU::determinant() method
 +
** Allows Lower|Upper as a template argument of CG and MINRES: in this case the full matrix will be considered
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=872 Bug 872]: remove usage of std::bind* functions (deprecated in c++11)
 +
 +
* Numerical robustness improvements:
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1014 Bug 1014]: improve numerical robustness of the 3x3 direct eigenvalue solver
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1013 Bug 1013]: fix 2x2 direct eigenvalue solver for identical eigenvalues
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=824 Bug 824]: improve accuracy of Quaternion::angularDistance
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=941 Bug 941]: fix an accuracy issue in ColPivHouseholderQR by continuing the decomposition on a small pivot
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=933 Bug 933]: improve numerical robustness in RealSchur
 +
** Fix default threshold value in SPQR
 +
 +
* Other changes:
 +
** Fix usage of EIGEN_NO_AUTOMATIC_RESIZING
 +
** Improved support for custom scalar types in SparseLU
 +
** Improve cygwin compatibility
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=650 Bug 650]: fix an issue with sparse-dense product and rowmajor matrices
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=704 Bug 704]: fix MKL support (HouseholderQR)
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=705 Bug 705]: fix handling of Lapack potrf return code (LLT)
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=714 Bug 714]: fix matrix product with OpenMP support
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=949 Bug 949]: add static assertions for incompatible scalar types in many of the dense decompositions
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=957 Bugs 957],  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1000 1000]: workaround MSVC/ICC compilation issues when using sparse blocks
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=969 Bug 969]: fix ambiguous calls to Ref
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=972 Bugs 972], [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=986 986]: add support for coefficient-based product with 0 depth
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=980 Bug 980]: fix taking a row (resp. column) of a column-major (resp. row-major) sparse matrix
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=983 Bug 983]: fix an alignement issue in Quaternion
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=985 Bug 985]: fix RealQZ when either matrix had zero rows or columns 
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=987 Bug 987]: fix alignement guess in diagonal product
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=993 Bug 993]: fix a pitfall with matrix.inverse()
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=996 Bugs 996], [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1016 1016]: fix scalar conversions
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1003 Bug 1003]: fix handling of pointers non aligned on scalar boundary in slice-vectorization
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1010 Bug 1010]: fix member initialization in IncompleteLUT
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1012 Bug 1012]: enable alloca on Mac OS or if alloca is defined as macro
 +
** Doc and build system: [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=733 733], [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=914 914], [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=952 952],  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=961 961], [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=999 999]
 +
 +
== Eigen 3.2.4 ==
 +
 +
Released on January 21, 2015
 +
 +
Changes since 3.2.3:
 +
 +
* Fix compilation regression in Rotation2D
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=920 Bug 920]: fix compilation issue with MSVC 2015.
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=921 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.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=859 Bug 859]: fix returned values for vectorized versions of exp(NaN), log(NaN), sqrt(NaN) and sqrt(-1).
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=879 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.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=854 Bug 854]: fix numerical issue in SelfAdjointEigenSolver::computeDirect for 3x3 matrices.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=884 Bug 884]: make sure there no call to malloc for zero-sized matrices or for a Ref<> without temporaries.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=890 Bug 890]: fix aliasing detection when applying a permutation.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=898 Bug 898]: MSVC optimization by adding inline hint to const_cast_ptr.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=853 Bug 853]: remove enable_if<> in Ref<> ctor.
 +
 +
* Dense solvers:
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=894 Bug 894]: fix the sign returned by LDLT for multiple calls to compute().
 +
** Fix JacobiSVD wrt underflow and overflow.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=791 Bug 791]: fix infinite loop in JacobiSVD in the presence of NaN.
 +
 +
* 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 ([http://eigen.tuxfamily.org/bz/show_bug.cgi?id= 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:
 +
** Various compilation fixes including: [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=821 bug 821],  [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=822 bug 822], [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=857 bug 857], [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=871 bug 871], [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=873 bug 873].
 +
** Fix many compilation warnings produced by recent compilers including: [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=909 bug 909].
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=861 Bug 861]: enable posix_memalign with PGI.
 +
** Fix BiCGSTAB doc example.
 +
 +
== 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".
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=839 Bug 839]: Fix 1x1 triangular matrix-vector product.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=755 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:[http://eigen.tuxfamily.org/bz/show_bug.cgi?id=843 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().
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=222 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.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=836 Bug 836]: extend SparseQR to support more columns than rows.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=808 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.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=647 Bug 647]: Use smart_copy instead of bitwise memcpy in CompressedStorage.
 +
** GMRES: Initialize essential Householder vector with correct dimension.
 +
 +
* Geometry:
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=807 Bug 807]: Missing scalar type cast in umeyama()
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=806 Bug 806]: Missing scalar type cast in Quaternion::setFromTwoVectors()
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=759 Bug 759]: Removed hard-coded double-math from Quaternion::angularDistance.
 +
 +
* OS, build system and doc:
 +
** Fix compilation with Windows CE.
 +
** Fix some ICEs with VC11.
 +
** Check IMKL version for compatibility with Eigen
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=754 Bug 754]: Only inserted (!defined(_WIN32_WCE)) analog to alloc and free implementation.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=803 Bug 803]: Avoid char* to int* conversion.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=819 Bug 819]: Include path of details.h file.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=738 Bug 738]: Use the "current" version of cmake project directories to ease the inclusion of Eigen within other projects.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=815 Bug 815]: Fix doc of FullPivLU wrt permutation matrices.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=632 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.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=654 Bug 654]: Allow construction of row vector from 1D array.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=679 Bug 679]: Support cwiseMin() and cwiseMax() on maps.
 +
** Support conservativeResize() on vectors.
 +
** Improve performance of vectorwise and replicate expressions.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=642 Bug 642]: Add vectorization of sqrt for doubles, and make sqrt really safe if EIGEN_FAST_MATH is disabled.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=616 Bug 616]: Try harder to align columns when printing matrices and arrays.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=579 Bug 579]: Add optional run-time parameter to fixed-size block methods.
 +
** Implement .all() and .any() for zero-sized objects
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=708 Bug 708]: Add placement new and delete for arrays.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=503 Bug 503]: Better C++11 support.
 +
* Dense linear algebra:
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=689 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.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=678 Bug 678]: Fix fullPivHouseholderQR for rectangular matrices.
 +
** Fix a 0/0 issue in JacobiSVD.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=736 Bug 736]: Wrong result in LDLT::isPositiveDefinite() for semi-definite matrices.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=740 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.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=635 Bug 635]: add isCompressed to MappedSparseMatrix for compatibility.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=664 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 ([http://eigen.tuxfamily.org/bz/show_bug.cgi?id=672 bug 672]).
 +
** Fixes in SparseQR: reduce explicit zero, assigning result to map, assert catching non-conforming sizes, memory leak.
 +
** [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=681 Bug 681]: Uninitialized value in CholmodSupport which may lead to incorrect results.
 +
** Fix some issues when using a non-standard index type ([http://eigen.tuxfamily.org/bz/show_bug.cgi?id=665 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 [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=744 744] and [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=748 748] and more).
 +
* Fix a few compiler warnings (bug [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=317 317] and more).
 +
* Documentation fixes (bugs [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=609 609], [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=638 638] and [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=739 739] and more).
 +
 +
== Eigen 3.1.4 ==
 +
 +
Released on August 02, 2013
 +
 +
Changes since 3.1.3:
 +
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=620 Bug 620]: Fix robustness and performance issues in JacobiSVD::solve.
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=613 Bug 613]: Fix accuracy of SSE sqrt for very small numbers.
 +
* [http://eigen.tuxfamily.org/bz/show_bug.cgi?id=608 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:
 +
 +
* Fix traits of Map<Quaternion>.
 +
* Fix a few warnings ([http://eigen.tuxfamily.org/bz/show_bug.cgi?id=507 507]) and documentation ([http://eigen.tuxfamily.org/bz/show_bug.cgi?id=531 531]).
 +
 +
== Eigen 3.2.0 ==
 +
 +
Released on July 24, 2013.
 +
 +
Major new features and optimizations since 3.1:
 +
 +
* Dense world
 +
** New [http://eigen.tuxfamily.org/dox-devel/classEigen_1_1Ref.html Ref<>] class allowing to write non templated function taking various kind of Eigen dense objects without copies.
 +
** New [http://eigen.tuxfamily.org/dox-devel/classEigen_1_1RealQZ.html RealQZ] factorization and [http://eigen.tuxfamily.org/dox-devel/classEigen_1_1GeneralizedEigenSolver.html 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 [http://eigen.tuxfamily.org/dox-devel/group__SparseLU__Module.html SparseLU] module: built-in sparse LU with supernodes and numerical row pivoting (port of SuperLU making the SuperLUSupport module obsolete).
 +
** New [http://eigen.tuxfamily.org/dox-devel/group__SparseQR__Module.html SparseQR] module: rank-revealing sparse QR factorization with numerical column pivoting.
 +
** New [http://eigen.tuxfamily.org/dox-devel/classEigen_1_1COLAMDOrdering.html COLAMD] ordering and unified [http://eigen.tuxfamily.org/dox-devel/group__OrderingMethods__Module.html 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 [http://eigen.tuxfamily.org/dox-devel/group__MetisSupport__Module.html MetisSupport] module: wrapper to the famous graph partitioning library.
 +
** New [http://eigen.tuxfamily.org/dox-devel/group__SPQRSupport__Module.html SPQRSupport] module: wrapper to suitesparse's supernodal QR solver.
 +
 +
Eigen 3.2 represents about 600 commits since Eigen 3.1.
 +
 +
== 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 ==
 
== Eigen 3.2-rc1 ==
  
Line 182: Line 1,265:
 
** Optimization of reductions via partial unrolling (e.g., dot, sum, norm, etc.)
 
** Optimization of reductions via partial unrolling (e.g., dot, sum, norm, etc.)
 
** Improved performance of small matrix-matrix products and some Transform<> operations
 
** Improved performance of small matrix-matrix products and some Transform<> operations
 +
 +
Eigen 3.1 represents about 600 commits since Eigen 3.0.
  
 
== Eigen 3.1.0-rc2 ==
 
== Eigen 3.1.0-rc2 ==
Line 561: Line 1,646:
 
Released July 5, 2010
 
Released July 5, 2010
  
See the [[3.0-beta1|announcement]].
+
See the [[3.0|announcement]].
  
 
== Eigen 2.0.14 ==
 
== Eigen 2.0.14 ==

Revision as of 22:30, 4 December 2020

Eigen 3.3.9

Released on December 4, 2020.

Changes since 3.3.8:

  • Commit 4e5385c90: Introduce rendering Doxygen math formulas with MathJax and the option EIGEN_DOC_USE_MATHJAX to control this.
  • Issue 1746: Removed implementation of standard copy-constructor and standard copy-assign-operator from PermutationMatrix and Transpositions to allow malloc-less std::move.
  • Issue 2036: Make sure the find_standard_math_library_test_program compiles and doesn't optimize away functions we try to test for.
  • Issue 2046: Rename test/array.cpp to test/array_cwise.cpp to fix an issue with the C++ standard library header "array"
  • Issue 2040: Fix an issue in test/ctorleak that occured when disabling exceptions.
  • Issue 2011: Remove error counting in OpenMP parallel section in Eigen's GEMM parallelizing logic.
  • Issue 2012: Define coeff-wise binary array operators for base class to fix an issue when using Eigen with C++20
  • Commit bfdd4a990: Fix an issue with Intel® MKL PARDISO support.

Eigen 3.3.8

Released on October 5, 2020.

Changes since 3.3.7:

  • General bug fixes
    • Issue #1995: Fix a failure in the GEBP kernel when using small L1 cache sizes, OpenMP and FMA.
    • Issue #1990: Make CMake accept installation paths relative to CMAKE_INSTALL_PREFIX.
    • Issue #1974: Fix issue when reserving an empty sparse matrix
    • Issue #1823: Fix incorrect use of std::abs
    • Issue #1788: Fix rule-of-three violations inside the stable modules. This fixes deprecated-copy warnings when compiling with GCC>=9 Also protect some additional Base-constructors from getting called by user code code (Issue #1587)
    • Issue #1796: Make matrix squareroot usable for Map and Ref types
    • Issue #1281: Fix AutoDiffScalar's make_coherent for nested expression of constant ADs.
    • Issue #1761: Fall back is_integral to std::is_integral in c++11 and fix internal::is_integral<size_t/ptrdiff_t> with MSVC 2013 and older.
    • Issue #1741: Fix self-adjoint*matrix, triangular*matrix, and triangular^1*matrix with a destination having a non-trivial inner-stride
    • Issue #1741: Fix SelfAdjointView::rankUpdate and product to triangular part for destination with non-trivial inner stride
    • Issue #1741: Fix C.noalias() = A*C; with C.innerStride()!=1
    • Issue #1695: Fix a numerical robustness issue in BDCSVD
    • Issue #1692: Enable enum as sizes of Matrix and Array
    • Issue #1689: Fix used-but-marked-unused warning
    • Issue #1679: Avoid possible division by 0 in complex-schur
    • Issue #1676: Fix C++17 template deduction in DenseBase
    • Issue #1669: Fix PartialPivLU/inverse with zero-sized matrices.
    • Issue #1557: Fix RealSchur and EigenSolver for matrices with only zeros on the diagonal.
  • Performance related fixes
    • Issue #1562: Optimize evaluation of small products of the form s*A*B by rewriting them as: s*(A.lazyProduct(B)) to save a costly temporary. Measured speedup from 2x to 5x...
    • Commit 165db26dc and 8ee2e10af: Fix performance issue with SimplicialLDLT for complexes coefficients
  • Misc commits
  • Fixed warnings
    • Commit 14db78c53: Fix some maybe-uninitialized warnings in AmbiVector.h and test bdcsvd.
    • Commit f1b1f13d3: silent cmake warnings in Lapack CMakeLists.txt
    • Commit 8fb28db12: Rename variable which shadows class name in Polynomials module.
    • Commit f1c12d8ff: Workaround gcc's alloc-size-larger-than= warning in DenseStorage.h
    • Commit 6870a39fe: Hide some unused variable warnings in g++8.1 in Tensor contraction mapper.
    • Commit bb9981e24: Fix gcc 8.1 warning: "maybe use uninitialized" in std tests
    • Commit eea99eb4e: Fix always true warning with gcc 4.7in test numext.
    • Commit 65a6d4151: Fix nonnull-compare warning in test geo_alignedbox.
    • Commit 74a0c08d7: Disable ignoring attributes warning in vectorization logic test.
    • Commit 6c4d57dc9: Fix a gcc7 warning about bool * bool in abs2 default implementation.
    • Commit 89a86ed42: Fix a warning in SparseSelfAdjointView about a branch statement always evaluation to false.

Eigen 3.3.8-rc1

Released on September 14, 2020.

Changes since 3.3.7:

  • General bug fixes
    • Issue #1974: Fix issue when reserving an empty sparse matrix
    • Issue #1823: Fix incorrect use of std::abs
    • Issue #1788: Fix rule-of-three violations inside the stable modules. This fixes deprecated-copy warnings when compiling with GCC>=9 Also protect some additional Base-constructors from getting called by user code code (Issue #1587 #1587)
    • Issue #1796: Make matrix squareroot usable for Map and Ref types
    • Issue #1281: Fix AutoDiffScalar's make_coherent for nested expression of constant ADs.
    • Issue #1761: Fall back is_integral to std::is_integral in c++11 and fix internal::is_integral<size_t/ptrdiff_t> with MSVC 2013 and older.
    • Issue #1741: Fix self-adjoint*matrix, triangular*matrix, and triangular^1*matrix with a destination having a non-trivial inner-stride
    • Issue #1741: Fix SelfAdjointView::rankUpdate and product to triangular part for destination with non-trivial inner stride
    • Issue #1741: Fix C.noalias() = A*C; with C.innerStride()!=1
    • Issue #1695: Fix a numerical robustness issue in BDCSVD
    • Issue #1692: Enable enum as sizes of Matrix and Array
    • Issue #1689: Fix used-but-marked-unused warning
    • Issue #1679: Avoid possible division by 0 in complex-schur
    • Issue #1676: Fix C++17 template deduction in DenseBase
    • Issue #1669: Fix PartialPivLU/inverse with zero-sized matrices.
    • Issue #1557: Fix RealSchur and EigenSolver for matrices with only zeros on the diagonal.
  • Performance related fixes
    • Issue #1562: Optimize evaluation of small products of the form s*A*B by rewriting them as: s*(A.lazyProduct(B)) to save a costly temporary. Measured speedup from 2x to 5x...
    • Commit 165db26dc and 8ee2e10af: Fix performance issue with SimplicialLDLT for complexes coefficients
  • Misc commits
  • Fixed warnings

Eigen 3.3.7

Released on December 11, 2018.

Changes since 3.3.6:

  • Bug 1643: Fix compilation with GCC>=6 and compiler optimization turned off.

Eigen 3.3.6

Released on December 10, 2018.

Changes since 3.3.5:

  • Bug 1617: Fix triangular solve crashing for empty matrix.
  • Bug 785: Make dense Cholesky decomposition work for empty matrices.
  • Bug 1634: Remove double copy in move-ctor of non movable Matrix/Array.
  • Changeset 588e1eb34eff: Workaround weird MSVC bug.
  • Bug 1637 Workaround performance regression in matrix products with gcc>=6 and clang>=6.0.
  • Changeset bf0f100339c1: Fix some implicit 0 to Scalar conversions.
  • Bug 1605: Workaround ABI issue with vector types (aka __m128) versus scalar types (aka float).
  • Changeset d1421c479baa: Fix for gcc<4.6 regarding usage of #pragma GCC diagnostic push/pop.
  • Changeset c20b83b9d736: Fix conjugate-gradient for right-hand-sides with a very small magnitude.
  • Changeset 281a877a3bf7: Fix product of empty arrays (returned 0 instead of 1).
  • Bug 1590: Fix collision with some system headers defining the macro FP32.
  • Bug 1584: Fix possible undefined behavior in random generation.
  • Changeset d632d18db8ca: Fix fallback to BLAS for rankUpdate.
  • Fixes for NVCC 9.
  • Fix matrix-market IO.
  • Various fixes in the doc.
  • Various minor warning fixes/workarounds.

Eigen 3.3.5

Released on July 23, 2018.

Changes since 3.3.4:

Eigen 3.3.4

Released on June 15, 2017.

Changes since 3.3.3:

  • General:
    • Improve speed of Jacobi rotation when mixing complex and real types.
    • Bug 1405: enable StrictlyLower/StrictlyUpper triangularView as the destination of matrix*matrix products.
    • UmfPack support: enable changes in the control settings and add report functions.
    • Bug 1423: fix LSCG's Jacobi preconditioner for row-major matrices.
    • Bug 1424: fix compilation issue with abs and unsigned integers as scalar type.
    • Bug 1410: fix lvalue propagation of Array/Matrix-Wrapper with a const nested expression.
    • Bug 1403: fix several implicit scalar type conversion making SVD decompositions compatible with ceres::Jet.
    • Fix some real-to-scalar-to-real useless conversions in ColPivHouseholderQR.
  • Regressions:
    • Fix dense * sparse-selfadjoint-view product.
    • Bug 1417: make LinSpace compatible with std::complex.
    • Bug 1400: fix stableNorm alignment issue with EIGEN_DONT_ALIGN_STATICALLY.
    • Bug 1411: fix alignment issue in Quaternion.
    • Fix compilation of operations between nested Arrays.
    • Bug 1435: fix aliasing issue in expressions like: A = C - B*A.
  • Others:
    • Fix compilation with gcc 4.3 and ARM NEON.
    • Fix prefetches on ARM64 and ARM32.
    • Fix out-of-bounds check in COLAMD.
    • Few minor fixes regarding nvcc/CUDA support, including bug 1396.
    • Improve cmake scripts for Pastix and BLAS detection.
    • Bug 1401: fix compilation of "cond ? x : -x" with x an AutoDiffScalar
    • Fix compilation of matrix log with Map as input.
    • Add specializations of std::numeric_limits for Eigen::half and and AutoDiffScalar
    • Fix compilation of streaming nested Array, i.e., cout << Array<Array<>>

Eigen 3.3.3

Released on February 21, 2017.

Changes since 3.3.2:

  • General:
    • Improve multi-threading heuristic for matrix products with a small number of columns.
    • Bug 1395: fix compilation of JacobiSVD for vectors type.
    • Fix pruning in (sparse*sparse).pruned() when the result is nearly dense.
    • Bug 1382: move using std::size_t/ptrdiff_t to Eigen's namespace.
    • Fix compilation and inlining when using clang-cl with visual studio.
    • Bug 1392: fix #include <Eigen/Sparse> with mpl2-only.
  • Regressions:
    • Bug 1379: fix compilation in sparse*diagonal*dense with OpenMP.
    • Bug 1373: add missing assertion on size mismatch with compound assignment operators (e.g., mat += mat.col(j))
    • Bug 1375: fix cmake installation with cmake 2.8.
    • Bug 1383: fix LinSpaced with integers for LinPspaced(n,0,n-1) with n==0 or the high<low case.
    • Bug 1381: fix sparse.diagonal() used as a rvalue.
    • Bug 1384: fix evaluation of "sparse/scalar" that used the wrong evaluation path.
    • Bug 478: fix regression in the eigen decomposition of zero matrices.
    • Fix a compilation issue with MSVC regarding the usage of CUDACC_VER
    • Bug 1393: enable Matrix/Array explicit constructor from types with conversion operators.
    • Bug 1394: fix compilation of SelfAdjointEigenSolver<Matrix>(sparse*sparse).
  • Others:
    • Fix ARM NEON wrapper for 16 byte systems.
    • Bug 1391: include IO.h before DenseBase to enable its usage in DenseBase plugins.
    • Bug 1389: fix std containers support with MSVC and AVX.
    • Bug 1380: fix matrix exponential with Map<>.
    • Bug 1369: fix type mismatch warning with OpenMP.
    • Fix usage of size_t instead of Index in sefl-adjoint matrix * vector
    • Bug 1378: fix doc (DiagonalIndex vs Diagonal).

Eigen 3.3.2

Released on January 18, 2017.

Changes since 3.3.1:

  • General:
    • Add transpose, adjoint, conjugate methods to SelfAdjointView (useful to write generic code)
    • Make sure that HyperPlane::transform maintains a unit normal vector in the Affine case.
    • Several documentation improvements, including: several doxygen workarounds, bug 1336, Bug 1370, StorageIndex, selfadjointView, sparseView(), sparse triangular solve, AsciiQuickReference.txt, ...)
  • Regressions:
    • Bug 1358: fix compilation of sparse += sparse.selfadjointView();
    • Bug 1359: fix compilation of sparse /=scalar, sparse *=scalar, and col_major_sparse.row() *= scalar.
    • Bug 1361: fix compilation of mat=perm.inverse()
    • Some fixes in sparse coeff-wise binary operations: add missing .outer() member to iterators, and properly report storage order.
    • Fix aliasing issue in code as A.triangularView() = B*A.sefladjointView()*B.adjoint()
  • Performance:
    • Improve code generation for mat*vec on some compilers.
    • Optimize horizontal adds in SSE3 and AVX.
    • Speed up row-major TRSM (triangular solve with a matrix as right-hand-side) by reverting "vec/y" to "vec*(1/y)". The rationale is:
      • div is extremely costly
      • this is consistent with the column-major case
      • this is consistent with all other BLAS implementations
    • Remove one temporary in SparseLU::solve()
  • Others:
    • Fix BLAS backend for symmetric rank K updates.
    • Bug 1360: fix -0 vs +0 issue with Altivec
    • Bug 1363: fix mingw's ABI issue
    • Bug 1367: fix compilation with gcc 4.1.
    • Fix ABI issue with AVX and old gcc versions.
    • Fix some warnings with ICC, Power8, etc.
    • Fix compilation with MSVC 2017

Eigen 3.3.1

Released on December 06, 2016.

Changes since 3.3.0:

  • Bug 426: add operators && and || to dense and sparse matrices (only dense arrays were supported)
  • Bug 1319: add support for CMake's imported targets.
  • Bug 1343: fix compilation regression in array = matrix_product and mat+=selfadjoint_view
  • Fix regression in assignment of sparse block to sparse block.
  • Fix a memory leak in Ref<SparseMatrix> and Ref<SparseVector>.
  • Bug 1351: fix compilation of random with old compilers.
  • Fix a performance regression in (mat*mat)*vec for which mat*mat was evaluated multiple times.
  • Fix a regression in SparseMatrix::ReverseInnerIterator
  • Fix performance issue of products for dynamic size matrices with fixed max size.
  • implement float/std::complex<float> for ZVector
  • Some fixes for expression-template scalar-types
  • Bug 1356: fix undefined behavior with nullptr.
  • Workaround some compilation errors with MSVC and MSVC/clr
  • Bug 1348: document EIGEN_MAX_ALIGN_BYTES and EIGEN_MAX_STATIC_ALIGN_BYTES, and reflect in the doc that EIGEN_DONT_ALIGN* are deprecated.
  • Bugs 1346,1347: make Eigen's installation relocatable.
  • Fix some harmless compilation warnings.

Eigen 3.3

Released on November 10, 2016

For a comprehensive list of change since the 3.2 series, see this page.


Main changes since 3.3-rc2:

  • Fix regression in printing sparse expressions.
  • Fix sparse solvers when using a SparseVector as the result and/or right-hand-side.

Eigen 3.3-rc2

Released on November 04, 2016

For a comprehensive list of change since the 3.2 series, see this page.

Main changes since 3.3-rc1:

  • Core module
    • Add supports for AVX512 SIMD instruction set.
    • Bugs 698 and 1004: Improve numerical robustness of LinSpaced methods for both real and integer scalar types (details).
    • Fix a regression in X = (X*X.transpose())/scalar with X rectangular (X was resized before the evaluation).
    • Bug 1311: Fix alignment logic in some cases of (scalar*small).lazyProduct(small)
    • Bug 1317: fix a performance regression from 3.2 with clang and some nested block expressions.
    • Bug 1308: fix compilation of some small products involving nullary-expressions.
    • Bug 1333: Fix a regression with mat.array().sum()
    • Bug 1328: Fix a compilation issue with old compilers introduced in 3.3-rc1.
    • Bug 1325: Fix compilation on NEON with clang
    • Properly handle negative inputs in vectorized sqrt.
    • Improve cost-model to determine the ideal number of threads in matrix-matrix products.
  • Geometry module
    • Bug 1304: Fix Projective * scaling and Projective *= scaling.
    • Bug 1310: Workaround a compilation regression from 3.2 regarding triangular * homogeneous
    • Bug 1312: Quaternion to AxisAngle conversion now ensures the angle will be in the range [0,pi]. This also increases accuracy when q_w is negative.
  • Tensor module
    • Add support for OpenCL.
    • Improved random number generation.
  • Other
    • Bug 1330: SuiteSparse, explicitly handle the fact that Cholmod does not support single precision float numbers.
    • SuiteSparse, fix SPQR for rectangular matrices
    • Fix compilation of qr.inverse() for column and full pivoting variants

Eigen 3.2.10

Released on October 04, 2016

Changes since 3.2.9:

Main fixes and improvements:

  • Bug 1272: Core module, improve comma-initializer in handling empty matrices.
  • Bug 1276: Core module, remove all references to std::binder* when C++11 is enabled (those are deprecated).
  • Bug 1304: Geometry module, fix Projective * scaling and Projective *= scaling.
  • Bug 1300: Sparse module, compilation fix for some block expression and SPQR support.
  • Sparse module, fix support for row (resp. column) of a column-major (resp. row-major) sparse matrix.
  • LU module, fix 4x4 matrix inversion for non-linear destinations.
  • Core module, a few fixes regarding custom complex types.
  • Bug 1275: backported improved random generator from 3.3
  • Workaround MSVC 2013 compilation issue in Reverse
  • Fix UmfPackLU constructor for expressions.
  • Bug 1273: fix shortcoming in eigen_assert macro
  • Bug 1249: disable the use of __builtin_prefetch for compilers other than GCC, clang, and ICC.
  • Bug 1265: fix doc of QR decompositions

Eigen 3.3-rc1

Released on September 22, 2016

For a comprehensive list of change since the 3.2 series, see this page.

Main changes since 3.3-beta2:

  • New features and improvements:
    • Bug 645: implement eigenvector computation in GeneralizedEigenSolver
    • Bug 1271: add a SparseMatrix::coeffs() method returning a linear view of the non-zeros (for compressed mode only).
    • Bug 1286: Improve support for custom nullary functors: now the functor only has to expose one relevant operator among f(), f(i), f(i,j).
    • Bug 1272: improve comma-initializer in handling empty matrices.
    • Bug 1268: detect failure in LDLT and report them through info()
    • Add support for scalar factor in sparse-selfadjoint * dense products, and enable +=/-= assignment for such products.
    • Remove temporaries in product expressions matching "d?=a-b*c" by rewriting them as "d?=a; d?=b*c;"
    • Vectorization improvements for some small product cases.
  • Doc:
    • Bug 1265: fix outdated doc in QR facto
    • Bug 828: improve documentation of sparse block methods, and sparse unary methods.
    • Improve documentation regarding nullary functors, and add an example demonstrating the use of nullary expression to perform fancy matrix manipulations.
    • Doc: explain how to use Accelerate as a LAPACK backend.
  • Bug fixes and internal changes:
    • Numerous fixes regarding support for custom complex types.
    • Bug 1273: fix shortcoming in eigen_assert macro
    • Bug 1278: code formatting
    • Bug 1270: by-pass hand written pmadd with recent clang versions.
    • Bug 1282: fix implicit double to float conversion warning
    • Bug 1167: simplify installation of header files using cmake's install(DIRECTORY ...) command
    • Bug 1283: fix products involving an uncommon vector.block(..) expressions.
    • Bug 1285: fix a minor regression in LU factorization.
    • JacobiSVD now consider any denormal number as zero.
    • Numerous fixes regarding support for CUDA/NVCC (including bugs 1266:
    • Fix an alignment issue in gemv, symv, and trmv for statically allocated temporaries.
    • Fix 4x4 matrix inversion for non-linear destinations.
    • Numerous improvements and fixes in half precision scalar type.
    • Fix vectorization logic for coeff-based product for some corner cases
    • Bugs 1260, 1261, 1264: several fixes in AutoDiffScalar.

Eigen 3.3-beta2

Released on July 26, 2016

For a comprehensive list of change since the 3.2 series, see this page.

Main changes since 3.3-beta1:

  • Dense features:
    • Bug 707: Add support for inplace dense decompositions.
    • Bug 977: normalize(d) left the input unchanged if its norm is 0 or too close to 0.
    • Bug 977: add stableNormalize[d] methods: they are analogues to normalize[d] but with carefull handling of under/over-flow.
    • Bug 279: Implement generic scalar*expr and expr*scalar operators. This is especially useful for custom scalar types, e.g., to enable float*expr<multi_prec> without conversion.
    • New unsupported/Eigen/SpecialFunctions module providing the following coefficient-wise math functions: erf, erfc, lgamma, digamma, polygamma, igamma, igammac, zeta, betainc.
    • Add fast reciprocal condition estimators in dense LU and Cholesky factorizations.
    • Bug 1230: add support for SelfadjointView::triangularView() and diagonal()
    • Bug 823: add Quaternion::UnitRandom() method.
    • Add exclusive or operator for bool arrays.
    • Relax dependency on MKL for EIGEN_USE_BLAS and EIGEN_USE_LAPACKE: any BLAS and LAPACK libraries can now be used as backend (see doc).
    • Add static assertion to x(), y(), z(), w() accessors
    • Bug 51: avoid dynamic memory allocation in fixed-size rank-updates, matrix products evaluated within a triangular part, and selfadjoint times matrix products.
    • Bug 696: enable zero-sized block at compile-time by relaxing the respective assertion
    • Bug 779: in Map, allows non aligned buffers for buffers smaller than the requested alignment.
    • Add a complete orthogonal decomposition class: CompleteOrthogonalDecomposition
    • Improve robustness of JacoviSVD with complexes (underflow, noise amplification in complex to real conversion, compare off-diagonal entries to the current biggest diagonal entry instead of the global biggest, null inputs).
    • Change Eigen's ColPivHouseholderQR to use a numerically stable norm downdate formula (changeset 9da6c621d055)
    • Bug 1214: consider denormals as zero in D&C SVD. This also workaround infinite binary search when compiling with ICC's unsafe optimizations.
    • Add log1p for arrays.
    • Bug 1193: now lpNorm<Infinity> supports empty inputs.
    • Bug 1151: remove useless critical section in matrix product
    • Add missing non-const reverse method in VectorwiseOp (e.g., this enables A.rowwise().reverse() = ...)
    • Update RealQZ to reduce 2x2 diagonal block of T corresponding to non reduced diagonal block of S to positive diagonal form.
  • Sparse features:
    • Bug 632: add support for "dense +/- sparse" operations. The current implementation is based on SparseView to make the dense subexpression compatible with the sparse one.
    • Bug 1095: add Cholmod*::logDeterminant/determinant functions.
    • Add SparseVector::conservativeResize() method
    • Bug 946: generalize Cholmod::solve to handle any rhs expressions.
    • Bug 1150: make IncompleteCholesky more robust by iteratively increase the shift until the factorization succeed (with at most 10 attempts)
    • Bug 557: make InnerIterator of sparse storage types more versatile by adding default-ctor, copy-ctor/assignment.
    • Bug 694: document that SparseQR::matrixR is not sorted.
    • Block expressions now expose all the information defining the block.
    • Fix GMRES returned error.
    • Bug 1119: add support for SuperLU 5
  • Performance improvements:
    • Bug 256: enable vectorization with unaligned loads/stores. This concerns all architectures and all sizes. This new behavior can be disabled by defining EIGEN_UNALIGNED_VECTORIZE=0
    • Add support for s390x(zEC13) ZVECTOR instruction set.
    • Optimize mixing of real with complex matrices by avoiding a conversion from real to complex when the real types do not match exactly. (see bccae23d7018)
    • Speedup square roots in performance critical methods such as norm, normalize(d).
    • Bug 1154: use dynamic scheduling for spmv products.
    • Bug 667, 1181: improve perf with MSVC and ICC through FORCE_INLINE
    • Improve heuristics for switching between coeff-based and general matrix product implementation at compile-time.
    • Add vectorization of tanh for float (SSE/AVX)
    • Improve cost estimates of numerous functors.
    • Numerous improvements regarding half-packet vectorization: coeff-based products (e.g., Matrix4f*Vector4f is now vectorized again when using AVX), reductions, linear vs inner traversals.
    • Fix performance regression: with AVX, unaligned stores were emitted instead of aligned ones for fixed size assignment.
    • Bug 1201: optimize affine*vector products.
    • Bug 1191: prevent Clang/ARM from rewriting VMLA into VMUL+VADD.
    • Small speed-up in Quaternion::slerp.
    • Bug 1201: improve code generation of affine*vec with MSVC
  • Doc:
    • Add documentation and exemple for matrix-free solving.
    • A new documentation page summarizing coefficient-wise math functions.
    • Bug 1144: clarify the doc about aliasing in case of resizing and matrix product.
    • A new documentation page summarizing the true performance of Eigen's dense decomposition algorithms.
  • Misc improvements:
    • Allow one generic scalar argument for all binary operators/functions.
    • Add a EIGEN_MAX_CPP_VER option to limit the C++ version to be used, as well as fine grained options to control individual language features.
    • A new ScalarBinaryOpTraits class allowing to control how different scalar types are mixed.
    • NumTraits now exposes a digits10 function making internal::significant_decimals_impl deprecated.
    • Countless improvements and fixes in Tensors module.
    • Bug 1156: fix several function declarations whose arguments were passed by value instead of being passed by reference
    • Bug 1164: fix std::list and std::deque specializations such that our aligned allocator is automatically activated only when the user did not specified an allocator (or specified the default std::allocator).
    • Bug 795: mention allocate_shared as a candidate for aligned_allocator.
    • Bug 1170: skip calls to memcpy/memmove for empty inputs.
    • Bug 1203: by-pass large stack-allocation in stableNorm if EIGEN_STACK_ALLOCATION_LIMIT is too small
    • Improve constness of blas level-2/3 interface.
    • Implement stricter argument checking for SYRK and SY2K
    • Countless improvements in the documentations.
    • Internal: Remove posix_memalign, _mm_malloc, and _aligned_malloc special paths.
    • Internal: Remove custom unaligned loads for SSE
    • Internal: introduce [U]IntPtr types to be used for casting pointers to integers.
    • Internal: NumTraits now exposes infinity()
    • Internal: EvalBeforeNestingBit is now deprecated.
    • Bug 1213: workaround gcc linking issue with anonymous enums.
    • Bug 1242: fix comma initializer with empty matrices.
    • Bug 725: make move ctor/assignment noexcept
    • Add minimal support for Array<string>
    • Improve support for custom scalar types bases on expression template (e.g., boost::multiprecision::number<> type). All dense decompositions are successfully tested.
  • Most visible fixes:
    • Bug 1144: fix regression in x=y+A*x (aliasing issue)
    • Bug 1140: fix usage of _mm256_set_m128 and _mm256_setr_m128 in AVX support
    • Bug 1141: fix some missing initializations in CholmodSupport
    • Bug 1143: workaround gcc bug #10200
    • Bug 1145, 1147, 1148, 1149: numerous fixes in PastixSupport
    • Bug 1153: don't rely on __GXX_EXPERIMENTAL_CXX0X__ to detect C++11 support.
    • Bug 1152: fix data race in static initialization of blas routines.
    • fix some buffer overflow in product block size computation.
    • Bug 96, 1006: fix by value argument in result_of
    • Bug 178: clean several const_cast.
    • Fix compilation in ceil() function.
    • Bug 698: fix linspaced for integer types.
    • Bug 1161: fix division by zero for huge scalar types in cache block size computation.
    • Bug 774: fix a numerical issue in Umeyama algorithm that produced unwanted reflections.
    • Bug 901: fix triangular-view with unit diagonal of sparse rectangular matrices.
    • Bug 1166: fix shortcoming in gemv when the destination is not a vector at compile-time.
    • Bug 1172: make SparseMatrix::valuePtr and innderIndexPtr properly return null for empty matrices
    • Bug 537: fix a compilation issue in Quaternion with Apples's compiler
    • Bug 1186: fix usage of vreinterpretq_u64_f64 (NEON)
    • Bug 1190: fix usage of __ARM_FEATURE_FMA on Clang/ARM
    • Bug 1189: fix pow/atan2 compilation for AutoDiffScalar
    • Fix detection of same input-output when applied permutations, or on solve operations.
    • Workaround a division by zero in triangular solve when outerstride==0
    • Fix compilation of sparse.cast<>().transpose().
    • Fix double-conversion warnings throughout the code.
    • Bug 1207: fix logical-op warnings
    • Bug 1222, 1223: fix compilation in AutoDiffScalar.
    • Bug 1229: fix usage of Derived::Options in MatrixFunctions.
    • Bug 1224: fix regression in (dense*dense).sparseView().
    • Bug 1231: fix compilation regression regarding complex_array/=real_array.
    • Bug 1221: disable gcc 6 warning: ignoring attributes on template argument.
    • Workaround clang/llvm bug 27908
    • Bug 1236: fix possible integer overflow in sparse matrix product.
    • Bug 1238: fix SparseMatrix::sum() overload for un-compressed mode
    • Bug 1240: remove any assumption on NEON vector types
    • Improves support for MKL's PARDISO solver.
    • Fix support for Visual 2010.
    • Fix support for gcc 4.1.
    • Fix support for ICC 2016
    • Various Altivec/VSX fixes: exp, support for clang 3.9,
    • Bug 1258: fix compilation of Map<SparseMatrix>::coeffRef
    • Bug 1249: fix compilation with compilers that do not support__builtin_prefetch .
    • Bug 1250: fix pow() for AutoDiffScalar with custom nested scalar type.

Eigen 3.2.9

Released on July 18, 2016

Changes since 3.2.8:

  • Main fixes and improvements:
    • Improve numerical robustness of JacobiSVD (backported from 3.3)
    • Bug 1017: prevents underflows in makeHouseholder
    • Fix numerical accuracy issue in the extraction of complex eigenvalue pairs in real generalized eigenvalue problems.
    • Fix support for vector.homogeneous().asDiagonal()
    • Bug 1238: fix SparseMatrix::sum() overload for un-compressed mode
    • Bug 1213: workaround gcc linking issue with anonymous enums.
    • Bug 1236: fix possible integer overflow in sparse-sparse product
    • Improve detection of identical matrices when applying a permutation (e.g., mat = perm * mat)
    • Fix usage of nesting type in blas_traits. In practice, this fixes compilation of expressions such as A*(A*A)^T
    • CMake: fixes support of Ninja generator
    • Add a StorageIndex typedef to sparse matrices and expressions to ease porting code to 3.3 (see http://eigen.tuxfamily.org/index.php?title=3.3#Index_typedef)
    • Bug 1200: make aligned_allocator c++11 compatible (backported from 3.3)
    • Bug 1182: improve generality of abs2 (backported from 3.3)
    • Bug 537: fix compilation of Quaternion with Apples's compiler
    • Bug 1176: allow products between compatible scalar types
    • Bug 1172: make valuePtr and innerIndexPtr properly return null for empty sparse matrices.
    • Bug 1170: skip calls to memcpy/memmove for empty inputs.
  • Others:
    • Bug 1242: fix comma initializer with empty matrices.
    • Improves support for MKL's PARDISO solver.
    • Fix a compilation issue with Pastix solver.
    • Add some missing explicit scalar conversions
    • Fix a compilation issue with matrix exponential (unsupported MatrixFunctions module).
    • Bug 734: fix a storage order issue in unsupported Spline module
    • Bug 1222: fix a compilation issue in AutoDiffScalar
    • Bug 1221: shutdown some GCC6's warnings.
    • Bug 1175: fix index type conversion warnings in sparse to dense conversion.

Eigen 3.2.8

Released on February 16, 2016

Changes since 3.2.7:

  • Main fixes and improvements:
    • Make FullPivLU::solve use rank() instead of nonzeroPivots().
    • Add EIGEN_MAPBASE_PLUGIN
    • Bug 1166: fix issue in matrix-vector products when the destination is not a vector at compile-time.
    • Bug 1100: Improve cmake/pkg-config support.
    • Bug 1113: fix name conflict with C99's "I".
    • Add missing delete operator overloads in EIGEN_MAKE_ALIGNED_OPERATOR_NEW
    • Fix (A*B).maxCoeff(i) and similar.
    • Workaround an ICE with VC2015 Update1 x64.
    • Bug 1156: fix several function declarations whose arguments were passed by value instead of being passed by reference
    • Bug 1164: fix std::list and std::deque specializations such that our aligned allocator is automatically activatived only when the user did not specified an allocator (or specified the default std::allocator).
  • Others:
    • Fix BLAS backend (aka MKL) for empty matrix products.
    • Bug 1134: fix JacobiSVD pre-allocation.
    • Bug 1111: fix infinite recursion in sparse-column-major.row(i).nonZeros() (it now produces a compilation error)
    • Bug 1106: workaround a compilation issue in Sparse module for msvc-icc combo
    • Bug 1153: remove the usage of __GXX_EXPERIMENTAL_CXX0X__ to detect C++11 support
    • Bug 1143: work-around gcc bug in COLAMD
    • Improve support for matrix products with empty factors.
    • Fix and clarify documentation of Transform wrt operator*(MatrixBase)
    • Add a matrix-free conjugate gradient example.
    • Fix cost computation in CwiseUnaryView (internal)
    • Remove custom unaligned loads for SSE.
    • Some warning fixes.
    • Several other documentation clarifications.

Eigen 3.3-beta1

Released on December 16, 2015

For a comprehensive list of change since the 3.2 series, see this page.

Main changes since 3.3-alpha1:

  • Dense features:
    • Add LU::transpose().solve() and LU::adjoint().solve() API.
    • Add Array::rsqrt() method as a more efficient shorcut for sqrt().inverse().
    • Add Array::sign() method for real and complexes.
    • Add lgamma, erf, and erfc functions for arrays.
    • Add support for row/col-wise lpNorm().
    • Add missing Rotation2D::operator=(Matrix2x2).
    • Add support for permutation * homogenous.
    • Improve numerical accuracy in LLT and triangular solve by using true scalar divisions (instead of x * (1/y)).
    • Add EIGEN_MAPBASE_PLUGIN and EIGEN_QUATERNION_PLUGIN.
    • Bug 1074: forbid the creation of PlainObjectBase objects.
  • Sparse features:
    • Add IncompleteCholesky preconditioner.
    • Improve support for matrix-free iterative solvers
    • Extend setFromTripplets API to allow passing a functor object controlling how to collapse duplicated entries.
    • Bug 918: add access to UmfPack return code and parameters.
    • Add support for dense.cwiseProduct(sparse), thus enabling (dense*sparse).diagonal() expressions.
    • Add support to directly evaluate the product of two sparse matrices within a dense matrix.
    • Bug 1064: add support for Ref<SparseVector>.
    • Add supports for real mul/div sparse<complex> operations.
    • Bug 1086: replace deprecated UF_long by SuiteSparse_long.
    • Make Ref<SparseMatrix> more versatile.
  • Performance improvements:
    • Bug 1115: enable static alignment and thus small size vectorization on ARM.
    • Add temporary-free evaluation of "D.nolias() ?= C + A*B".
    • Add vectorization of round, ceil and floor for SSE4.1/AVX.
    • Optimize assignment into a Block<SparseMatrix> by using Ref and avoiding useless updates in non-compressed mode. This make row-by-row filling of a row-major sparse matrix very efficient.
    • Improve internal cost model leading to faster code in some cases (see changeset 1bcb41187a45).
    • Bug 1090: improve redux evaluation logic.
    • Enable unaligned vectorization of small fixed size matrix products.
  • Misc improvements:
    • Improve support for isfinite/isnan/isinf in fast-math mode.
    • Make the IterativeLinearSolvers module compatible with MPL2-only mode by defaulting to COLAMDOrdering and NaturalOrdering for ILUT and ILLT respectively.
    • Avoid any OpenMP calls if multi-threading is explicitly disabled at runtime.
    • Make abs2 compatible with custom complex types.
    • Bug 1109: use noexcept instead of throw for C++11 compilers.
    • Bug 1100: Improve cmake/pkg-config support.
    • Countless improvements and fixes in Tensors module.
  • Most visible fixes:
    • Bug 1105: fix default preallocation when moving from compressed to uncompressed mode in SparseMatrix.
    • Fix UmfPackLU constructor for expressions.
    • Fix degenerate cases in syrk and trsm BLAS API.
    • Fix matrix to quaternion (and angleaxis) conversion for matrix expression.
    • Fix compilation of sparse-triangular to dense assignment.
    • Fix several minor performance issues in the nesting of matrix products.
    • Bug 1092: fix iterative solver ctors for expressions as input.
    • Bug 1099: fix missing include for CUDA.
    • Bug 1102: fix multiple definition linking issue.
    • Bug 1088: fix setIdenity for non-compressed sparse-matrix.
    • Fix SparseMatrix::insert/coeffRef for non-empty compressed matrix.
    • Bug 1113: fix name conflict with C99's "I".
    • Bug 1075: fix AlignedBox::sample for runtime dimension.
    • Bug 1103: fix NEON vectorization of complex<double> multiplication.
    • Bug 1134: fix JacobiSVD pre-allocation.
    • Fix ICE with VC2015 Update1.
    • Improve cmake install scripts.

Eigen 3.2.7

Released on November 5, 2015

Changes since 3.2.6:

  • Main fixes and improvements:
    • Add support for dense.cwiseProduct(sparse).
    • Fix a regression regarding (dense*sparse).diagonal().
    • Make the IterativeLinearSolvers module compatible with MPL2-only mode by defaulting to COLAMDOrdering and NaturalOrdering for ILUT and ILLT respectively.
    • Bug 266: backport support for c++11 move semantic
    • operator/=(Scalar) now performs a true division (instead of mat*(1/s))
    • Improve numerical accuracy in LLT and triangular solve by using true scalar divisions (instead of mat * (1/s))
    • Bug 1092: fix iterative solver constructors for expressions as input
    • Bug 1088: fix setIdenity for non-compressed sparse-matrix
    • Bug 1086: add support for recent SuiteSparse versions
  • Others:
    • Add overloads for real-scalar times SparseMatrix<complex> operations. This avoids real to complex conversions, and also fixes a compilation issue with MSVC.
    • Use explicit Scalar types for AngleAxis initialization
    • Fix several shortcomings in cost computation (avoid multiple re-evaluation in some very rare cases).
    • Bug 1090: fix a shortcoming in redux logic for which slice-vectorization plus unrolling might happen.
    • Fix compilation issue with MSVC by backporting DenseStorage::operator= from devel branch.
    • Bug 1063: fix nesting of unsupported/AutoDiffScalar to prevent dead references when computing second-order derivatives
    • Bug 1100: remove explicit CMAKE_INSTALL_PREFIX prefix to conform to cmake install's DESTINATION parameter.
    • unsupported/ArpackSupport is now properly installed by make install.
    • Bug 1080: warning fixes

Eigen 3.2.6

Released on October 1, 2015

Changes since 3.2.5:

  • fix some compilation issues with MSVC 2013, including bugs 1000 and 1057
  • SparseLU: fixes to support EIGEN_DEFAULT_TO_ROW_MAJOR (bug 1053), and for empty (bug 1026) and some structurally rank deficient matrices (bug 792)
  • Bug 1075: fix AlignedBox::sample() for Dynamic dimension
  • fix regression in AMD ordering when a column has only one off-diagonal non-zero (used in sparse Cholesky)
  • fix Jacobi preconditioner with zero diagonal entries
  • fix Quaternion identity initialization for non-implicitly convertible types
  • Bug 1059: fix predux_max<Packet4i> for NEON
  • Bug 1039: fix some issues when redefining EIGEN_DEFAULT_DENSE_INDEX_TYPE
  • Bug 1062: fix SelfAdjointEigenSolver for RowMajor matrices
  • MKL: fix support for the 11.2 version, and fix a naming conflict (bug 1067)
    • Bug 1033: explicit type conversion from 0 to RealScalar

Eigen 3.3-alpha1

Released on September 4, 2015

See the announcement.

Eigen 3.2.5

Released on June 16, 2015

Changes since 3.2.4:

  • Changes with main impact:
    • Improve robustness of SimplicialLDLT to semidefinite problems by correctly handling structural zeros in AMD reordering
    • Re-enable supernodes in SparseLU (fix a performance regression in SparseLU)
    • Use zero guess in ConjugateGradients::solve
    • Add PermutationMatrix::determinant method
    • Fix SparseLU::signDeterminant() method, and add a SparseLU::determinant() method
    • Allows Lower|Upper as a template argument of CG and MINRES: in this case the full matrix will be considered
    • Bug 872: remove usage of std::bind* functions (deprecated in c++11)
  • Numerical robustness improvements:
    • Bug 1014: improve numerical robustness of the 3x3 direct eigenvalue solver
    • Bug 1013: fix 2x2 direct eigenvalue solver for identical eigenvalues
    • Bug 824: improve accuracy of Quaternion::angularDistance
    • Bug 941: fix an accuracy issue in ColPivHouseholderQR by continuing the decomposition on a small pivot
    • Bug 933: improve numerical robustness in RealSchur
    • Fix default threshold value in SPQR
  • Other changes:
    • Fix usage of EIGEN_NO_AUTOMATIC_RESIZING
    • Improved support for custom scalar types in SparseLU
    • Improve cygwin compatibility
    • Bug 650: fix an issue with sparse-dense product and rowmajor matrices
    • Bug 704: fix MKL support (HouseholderQR)
    • Bug 705: fix handling of Lapack potrf return code (LLT)
    • Bug 714: fix matrix product with OpenMP support
    • Bug 949: add static assertions for incompatible scalar types in many of the dense decompositions
    • Bugs 957, 1000: workaround MSVC/ICC compilation issues when using sparse blocks
    • Bug 969: fix ambiguous calls to Ref
    • Bugs 972, 986: add support for coefficient-based product with 0 depth
    • Bug 980: fix taking a row (resp. column) of a column-major (resp. row-major) sparse matrix
    • Bug 983: fix an alignement issue in Quaternion
    • Bug 985: fix RealQZ when either matrix had zero rows or columns
    • Bug 987: fix alignement guess in diagonal product
    • Bug 993: fix a pitfall with matrix.inverse()
    • Bugs 996, 1016: fix scalar conversions
    • Bug 1003: fix handling of pointers non aligned on scalar boundary in slice-vectorization
    • Bug 1010: fix member initialization in IncompleteLUT
    • Bug 1012: enable alloca on Mac OS or if alloca is defined as macro
    • Doc and build system: 733, 914, 952, 961, 999

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:
    • Bug 894: fix the sign returned by LDLT for multiple calls to compute().
    • Fix JacobiSVD wrt underflow and overflow.
    • Bug 791: fix infinite loop in JacobiSVD in the presence of NaN.
  • 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:
    • Bug 807: Missing scalar type cast in umeyama()
    • Bug 806: Missing scalar type cast in Quaternion::setFromTwoVectors()
    • Bug 759: Removed hard-coded double-math from Quaternion::angularDistance.
  • 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:

  • Fix traits of Map<Quaternion>.
  • Fix a few warnings (507) and documentation (531).

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 represents about 600 commits since Eigen 3.1.

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.

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)
  • 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 represents about 600 commits since Eigen 3.0.

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:
    • Improve performance of some Transform<> operations by better preserving the alignment status.
    • Bug 415 - wrong return type in Rotation2D::operator*=
    • Bug 439 - add Quaternion::FromTwoVectors() static constructor
    • Bug 362 - missing specialization for affine-compact * projective
  • Others:
    • add support for RVCT 3.1 compiler
    • New tutorial page on Map
    • and many other bug fixes such as: Bug 417, Bug 419, Bug 450

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 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:


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