We are happy to announce that Eigen 3.3.8 has been released today!
This is a maintenance release fixing minor bugs and compilation issues. For more
details have a look at the changelog pasted below and on
The sources are available on GitLab:
Thanks to the community for helping us to bring Eigen development up to speed
again!
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
------------
Commit 5f1082d0b: Fix QuaternionBase::cast for quaternion map and wrapper.
Commit a153dbae9: Fix case issue with Lapack unit tests.
Commit 3d7e2a1f3: Fix possible conflict with an externally defined "real" type
when using gcc-5.
Commit 1760432f6: Provide numext::[u]int{32,64}_t.
Commit 3d18879fc: Initialize isometric transforms like affine transforms.
Commit 160c0a340: Change typedefs from private to protected to fix MSVC
compilation.
Commit 3cf273591: Fix compilation of FFTW unit test..
Commit 6abc9e537: Fix compilation of BLAS backend and frontend.
Commit 47e2f8a42: Fix real/imag namespace conflict.
Commit 71d0402e3: Avoid throwing in destructors.
Commit 0dd9643ad: Fix precision issue in SelfAdjointEigenSolver.h
Commit 6ed74ac97: Make digits10() return an integer.
Commit 841d844f9: Use pade for matrix exponential also for complex values.
Commit 4387298e8: Cast Index to RealScalar in SVDBase to fix an issue when
RealScalar is not implicitly convertible to Index.
Commit fe8cd812b: Provide EIGEN_HAS_C99_MATH when using MSVC.
Commit 7c4208450: Various fixes in polynomial solver and its unit tests.
Commit e777674a8
and 4415d4e2d: Extend polynomial solver unit tests to complexes.
Commit 222ce4b49: Automatically switch between EigenSolver and
ComplexEigenSolver, and fix a few Real versus Scalar issues.
Commit 7b93328ba: Enable construction of Ref<VectorType> from a runtime vector.
Commit c28ba89fe: Fix a problem of old gcc versions having problems with
recursive #pragma GCC diagnostic push/pop.
Commit 210d510a9: Fix compilation with _expression_ template scalar type.
Commit efd72cddc: Backport AVX512 implementation to 3.3.
Commit 5e484fa11: Fix StlDeque compilation issue with GCC 10.
Commit a796be81a: Avoid false-positive test results in non-linear optimization
tests
Commit 9f202c6f1: Fix undefined behaviour caused by uncaught exceptions in OMP
section of parallel GEBP kernel.
Commit 4707c3aa8: Fix a bug with half-precision floats on GPUs.
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.