Upstream changes:
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:
General bug fixes:
Fix GeneralizedEigenSolver when requesting for eigenvalues only (0d15855abb30)
Bug 1560 fix product with a 1x1 diagonal matrix (90d7654f4a59)
Bug 1543: fix linear indexing in generic block evaluation
Fix compilation of product with inverse transpositions (e.g., mat * Transpositions().inverse()) (14a13748d761)
Bug 1509: fix computeInverseWithCheck for complexes (8be258ef0b6d)
Bug 1521: avoid signalling NaN in hypot and make it std::complex<> friendly (a9c06b854991).
Bug 1517: fix triangular product with unit diagonal and nested scaling factor: (s*A).triangularView<UpperUnit>()*B (a546d43bdd4f)
Fix compilation of stableNorm for some odd expressions as input (499e982b9281)
Bug 1485: fix linking issue of non template functions (ae28c2aaeeda)
Fix overflow issues in BDCSVD (92060f82e1de)
Bug 1468 : add missing std:: to memcpy (4565282592ae)
Bug 1453: fix Map with non-default inner-stride but no outer-stride (af00212cf3a4)
Fix mixing types in sparse matrix products (7e5fcd0008bd)
Bug 1544: Generate correct Q matrix in complex case (c0c410b508a1)
Bug 1461: fix compilation of Map<const Quaternion>::x() (69652a06967d)
Backends:
Fix MKL backend for symmetric eigenvalues on row-major matrices (4726d6a24f69)
Bug 1527: fix support for MKL's VML (972424860545)
Fix incorrect ldvt in LAPACKE call from JacobiSVD (88c4604601b9)
Fix support for MKL's BLAS when using MKL_DIRECT_CALL (205731b87e19, b88c70c6ced7, 46e2367262e1)
Use MKL's lapacke.h header when using MKL (19bc9df6b726)
Diagnostics:
Bug 1516: add assertion for out-of-range diagonal index in MatrixBase::diagonal(i) (783d38b3c78c)
Add static assertion for fixed sizes Ref<> (e1203d5ceb8e)
Add static assertion on selfadjoint-view's UpLo parameter. (b84db94c677e, 0ffe8a819801)
Bug 1479: fix failure detection in LDLT (67719139abc3)
Compiler support:
Bug 1555: compilation fix with XLC
Workaround MSVC 2013 ambiguous calls (1c7b59b0b5f4)
Adds missing EIGEN_STRONG_INLINE to help MSVC properly inlining small vector calculations (1ba3f10b91f2)
Several minor warning fixes: 3c87fc0f1042, ad6bcf0e8efc, "used uninitialized" (20efc44c5500), Wint-in-bool-context (131da2cbc695, b4f969795d1b)
Bug 1428: make NEON vectorization compilable by MSVC. (* 3d1b3dbe5927, 4e1b7350182a)
Fix compilation and SSE support with PGI compiler (faabf000855d 90d33b09040f)
Bug 1555: compilation fix with XLC (23eb37691f14)
Bug 1520: workaround some -Wfloat-equal warnings by calling std::equal_to (7d9a9456ed7c)
Make the TensorStorage class compile with clang 3.9 (eff7001e1f0a)
Misc: some old compiler fixes (493691b29be1)
Fix MSVC warning C4290: C++ exception specification ignored except to indicate a function is not __declspec(nothrow) (524918622506)
Architecture support:
Several AVX512 fixes for log, sqrt, rsqrt, non AVX512ER CPUs, apply_rotation_in_the_plane b64275e912ba cab3d626a59e 7ce234652ab9, d89b9a754371.
AltiVec fixes: 9450038e380d
NEON fixes: const-cast (e8a69835ccda), compilation of Jacobi rotations (c06cfd545b15,bug 1436).
Changeset d0658cc9d4a2: Define pcast<> for SSE types even when AVX is enabled. (otherwise float are silently reinterpreted as int instead of being converted)
Bug 1494: makes pmin/pmax behave on Altivec/VSX as on x86 regarding NaNs (d0af83f82b19)
Documentation:
Update manual pages regarding BDCSVD (bug 1538)
Add aliasing in common pitfaffs (2a5a8408fdc5)
Update aligned_allocator (21e03aef9f2b)
Bug 1456: add perf recommendation for LLT and storage format (c8c154ebf130, 9aef1e23dbe0)
Bug 1455: Cholesky module depends on Jacobi for rank-updates (2e6e26b851a8)
Bug 1458: fix documentation of LLT and LDLT info() method (2a4cf4f473dd)
Warn about constness in LLT::solveInPlace (518f97b69bdf)
Fix lazyness of operator* with CUDA (c4dbb556bd36)
Bug 336: improve doc for PlainObjectBase::Map (13dc446545fe)
Other general improvements:
Enable linear indexing in generic block evaluation (31537598bf83, 5967bc3c2cdb, bug 1543).
Fix packet and alignment propagation logic of Block<Xpr> expressions. In particular, (A+B).col(j) now preserve vectorisation. (b323cc9c2c7f)
Several fixes regarding custom scalar type support: hypot (f8d6c791791d), boost-multiprec (acb8ef9b2478), literal casts (6bbd97f17534, 39f65d65894f),
LLT: avoid making a copy when decomposing in place (2f7e28920f4e), const the arg to solveInPlace() to allow passing .transpose(), .block(), etc. (c31c0090e998).
Add possibility to overwrite EIGEN_STRONG_INLINE (7094bbdf3f4d)
Bug 1528: use numeric_limits::min() instead of 1/highest() that might underflow (dd823c64ade7)
Bug 1532: disable stl::*_negate in C++17 (they are deprecated) (88e9452099d5)
Add C++11 max_digits10 for half (faf74dde8ed1)
Make sparse QR result sizes consistent with dense QR (4638bc4d0f96)
Unsupported/unit-tests/cmake/unvisible internals/etc.
Bug 1484: restore deleted line for 128 bits long doubles, and improve dispatching logic. (dffc0f957f19)
Bug 1462: remove all occurences of the deprecated __CUDACC_VER__ macro by introducing EIGEN_CUDACC_VER (a201b8438d36)
Changeset 2722aa8eb93f: Fix oversharding bug in parallelFor.
Changeset ea1db80eab46: commit 45e9c9996da790b55ed9c4b0dfeae49492ac5c46 (HEAD -> memory_fix)
Changeset 350957be012c: Fix int versus Index
Changeset 424038431015: fix linking issue
Changeset 3f938790b7e0: Fix short vs long
Changeset ba14974d054a: Fix cmake scripts with no fortran compiler
Changeset 2ac088501976: add cmake-option to enable/disable creation of tests
Changeset 56996c54158b: Use col method for column-major matrix
Changeset 762373ca9793: Bug 1449: fix redux_3 unit test
Changeset eda96fd2fa30: Fix uninitialized output argument.
Changeset 75a12dff8ca4: Handle min/max/inf/etc issue in cuda_fp16.h directly in test/main.h
Changeset 568614bf79b8: Add tests for sparseQR results (value and size) covering bugs 1522 and 1544
Changeset 12c9ece47d14: SelfAdjointView<...,Mode> causes a static assert since commit c73a77e47db8
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.
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<>>
Changes that might impact existing code
Eigen 3.3 fixes a few shortcomings that might impact existing code:
* Eigen 3.3 clarifies the usage of the Index type in SparseMatrix,
PermutationMatrix, Transpositions, as detailed below.
* The normalize and normalized methods will now leave their input
unchanged if its norm is 0 or too close to 0. Previously this
resulted in a vector containing NaNs or infinities.
* internal::significant_decimals_impl is deprecated and users of
custom scalar types are encouraged to overload
NumTraits<>::digits10().
In Eigen 3.3, the evaluation mechanism of expressions has been
completely rewritten. c.f. http://eigen.tuxfamily.org/index.php?title=3.3
Looks as though C++11 support was added and Eigen 2 support removed.
Detailed changelog:
http://eigen.tuxfamily.org/index.php?title=ChangeLog#Eigen_3.3.4
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.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.
+ [59]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))
+ [60]Bug 1092: fix iterative solver constructors for
expressions as input
+ [61]Bug 1088: fix setIdenity for non-compressed sparse-matrix
+ [62]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).
+ [63]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.
+ [64]Bug 1063: fix nesting of unsupported/AutoDiffScalar to
prevent dead references when computing second-order
derivatives
+ [65]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.
+ [66]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 [67]1000
and [68]1057
* SparseLU: fixes to support EIGEN_DEFAULT_TO_ROW_MAJOR ([69]bug
1053), and for empty ([70]bug 1026) and some structurally rank
deficient matrices ([71]bug 792)
* [72]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
* [73]Bug 1059: fix predux_max<Packet4i> for NEON
* [74]Bug 1039: fix some issues when redefining
EIGEN_DEFAULT_DENSE_INDEX_TYPE
* [75]Bug 1062: fix SelfAdjointEigenSolver for RowMajor matrices
* MKL: fix support for the 11.2 version, and fix a naming conflict
([76]bug 1067)
+ [77]Bug 1033: explicit type conversion from 0 to RealScalar
Eigen 3.3-alpha1
Released on September 4, 2015
See the [78]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
+ [79]Bug 872: remove usage of std::bind* functions (deprecated
in c++11)
* Numerical robustness improvements:
+ [80]Bug 1014: improve numerical robustness of the 3x3 direct
eigenvalue solver
+ [81]Bug 1013: fix 2x2 direct eigenvalue solver for identical
eigenvalues
+ [82]Bug 824: improve accuracy of Quaternion::angularDistance
+ [83]Bug 941: fix an accuracy issue in ColPivHouseholderQR by
continuing the decomposition on a small pivot
+ [84]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
+ [85]Bug 650: fix an issue with sparse-dense product and
rowmajor matrices
+ [86]Bug 704: fix MKL support (HouseholderQR)
+ [87]Bug 705: fix handling of Lapack potrf return code (LLT)
+ [88]Bug 714: fix matrix product with OpenMP support
+ [89]Bug 949: add static assertions for incompatible scalar
types in many of the dense decompositions
+ [90]Bugs 957, [91]1000: workaround MSVC/ICC compilation issues
when using sparse blocks
+ [92]Bug 969: fix ambiguous calls to Ref
+ [93]Bugs 972, [94]986: add support for coefficient-based
product with 0 depth
+ [95]Bug 980: fix taking a row (resp. column) of a column-major
(resp. row-major) sparse matrix
+ [96]Bug 983: fix an alignement issue in Quaternion
+ [97]Bug 985: fix RealQZ when either matrix had zero rows or
columns
+ [98]Bug 987: fix alignement guess in diagonal product
+ [99]Bug 993: fix a pitfall with matrix.inverse()
+ [100]Bugs 996, [101]1016: fix scalar conversions
+ [102]Bug 1003: fix handling of pointers non aligned on scalar
boundary in slice-vectorization
+ [103]Bug 1010: fix member initialization in IncompleteLUT
+ [104]Bug 1012: enable alloca on Mac OS or if alloca is defined
as macro
+ Doc and build system: [105]733, [106]914, [107]952, [108]961,
[109]999
Eigen 3.2.4
Released on January 21, 2015
Changes since 3.2.3:
* Fix compilation regression in Rotation2D
* [110]Bug 920: fix compilation issue with MSVC 2015.
* [111]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.
+ [112]Bug 859: fix returned values for vectorized versions of
exp(NaN), log(NaN), sqrt(NaN) and sqrt(-1).
+ [113]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.
+ [114]Bug 854: fix numerical issue in
SelfAdjointEigenSolver::computeDirect for 3x3 matrices.
+ [115]Bug 884: make sure there no call to malloc for zero-sized
matrices or for a Ref<> without temporaries.
+ [116]Bug 890: fix aliasing detection when applying a
permutation.
+ [117]Bug 898: MSVC optimization by adding inline hint to
const_cast_ptr.
+ [118]Bug 853: remove enable_if<> in Ref<> ctor.
* Dense solvers:
+ [119]Bug 894: fix the sign returned by LDLT for multiple calls
to compute().
+ Fix JacobiSVD wrt underflow and overflow.
+ [120]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 ([121]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: [122]bug 821, [123]bug
822, [124]bug 857, [125]bug 871, [126]bug 873.
+ Fix many compilation warnings produced by recent compilers
including: [127]bug 909.
+ [128]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".
+ [129]Bug 839: Fix 1x1 triangular matrix-vector product.
+ [130]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:[131]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().
+ [132]Bug 222: Make temporary matrix column-major independently
of EIGEN_DEFAULT_TO_ROW_MAJOR in BlockHouseholder.
* Sparse:
+ [133]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.
+ [134]Bug 836: extend SparseQR to support more columns than
rows.
+ [135]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.
+ [136]Bug 647: Use smart_copy instead of bitwise memcpy in
CompressedStorage.
+ GMRES: Initialize essential Householder vector with correct
dimension.
* Geometry:
+ [137]Bug 807: Missing scalar type cast in umeyama()
+ [138]Bug 806: Missing scalar type cast in
Quaternion::setFromTwoVectors()
+ [139]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
+ [140]Bug 754: Only inserted (!defined(_WIN32_WCE)) analog to
alloc and free implementation.
+ [141]Bug 803: Avoid char* to int* conversion.
+ [142]Bug 819: Include path of details.h file.
+ [143]Bug 738: Use the "current" version of cmake project
directories to ease the inclusion of Eigen within other
projects.
+ [144]Bug 815: Fix doc of FullPivLU wrt permutation matrices.
+ [145]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.
+ [146]Bug 654: Allow construction of row vector from 1D array.
+ [147]Bug 679: Support cwiseMin() and cwiseMax() on maps.
+ Support conservativeResize() on vectors.
+ Improve performance of vectorwise and replicate expressions.
+ [148]Bug 642: Add vectorization of sqrt for doubles, and make
sqrt really safe if EIGEN_FAST_MATH is disabled.
+ [149]Bug 616: Try harder to align columns when printing
matrices and arrays.
+ [150]Bug 579: Add optional run-time parameter to fixed-size
block methods.
+ Implement .all() and .any() for zero-sized objects
+ [151]Bug 708: Add placement new and delete for arrays.
+ [152]Bug 503: Better C++11 support.
* Dense linear algebra:
+ [153]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.
+ [154]Bug 678: Fix fullPivHouseholderQR for rectangular
matrices.
+ Fix a 0/0 issue in JacobiSVD.
+ [155]Bug 736: Wrong result in LDLT::isPositiveDefinite() for
semi-definite matrices.
+ [156]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.
+ [157]Bug 635: add isCompressed to MappedSparseMatrix for
compatibility.
+ [158]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
([159]bug 672).
+ Fixes in SparseQR: reduce explicit zero, assigning result to
map, assert catching non-conforming sizes, memory leak.
+ [160]Bug 681: Uninitialized value in CholmodSupport which may
lead to incorrect results.
+ Fix some issues when using a non-standard index type ([161]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 [162]744 and [163]748 and more).
* Fix a few compiler warnings (bug [164]317 and more).
* Documentation fixes (bugs [165]609, [166]638 and [167]739 and
more).
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.
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)
File too long (should be no more than 24 lines).
Line too long (should be no more than 80 characters).
Trailing empty lines.
Trailing white-space.
Trucated the long files as best as possible while preserving the most info
contained in them.