Difference between revisions of "ChangeLog"
(→Eigen 3.1.2) |
|||
Line 1: | Line 1: | ||
== Eigen 3.1.2 == | == Eigen 3.1.2 == | ||
− | Released on Nov | + | Released on Nov 05, 2012 |
Changes since 3.1.1: | Changes since 3.1.1: |
Revision as of 21:20, 5 November 2012
Contents
- 1 Eigen 3.1.2
- 2 Eigen 3.1.1
- 3 Eigen 3.0.6
- 4 Eigen 3.1.0
- 5 Eigen 3.1.0-rc2
- 6 Eigen 3.1.0-rc1
- 7 Eigen 3.1.0-beta1
- 8 Eigen 3.0.5
- 9 Eigen 3.1.0-alpha2
- 10 Eigen 3.1.0-alpha1
- 11 Eigen 3.0.4
- 12 Eigen 2.0.17
- 13 Eigen 3.0.3
- 14 Eigen 3.0.2
- 15 Eigen 3.0.1
- 16 Eigen 2.0.16
- 17 Eigen 3.0.0
- 18 Eigen 3.0-rc1
- 19 Eigen 3.0-beta4
- 20 Eigen 3.0-beta3
- 21 Eigen 3.0-beta2
- 22 Eigen 2.0.15
- 23 Eigen 3.0-beta1
- 24 Eigen 2.0.14
- 25 Eigen 2.0.13
- 26 Eigen 2.0.12
- 27 Eigen 2.0.11
- 28 Eigen 2.0.10
- 29 Eigen 2.0.9
- 30 Eigen 2.0.8
- 31 Eigen 2.0.7
- 32 Eigen 2.0.6
- 33 Eigen 2.0.5
- 34 Eigen 2.0.4
- 35 Eigen 2.0.3
- 36 Eigen 2.0.2
- 37 Eigen 2.0.1
- 38 Eigen 2.0.0
Eigen 3.1.2
Released on Nov 05, 2012
Changes since 3.1.1:
- Bug 524 - Pardiso's parameter array does not have to be aligned!
- Bug 521 - Disable __cpuidex on architectures different that x86 or x86-64 with MSVC.
- Bug 519 - AlignedBox::dim() was wrong for dynamic dimensions.
- Bug 515 - Fix missing explicit scalar conversion.
- Bug 511 - Fix pretty printers on windows.
- Bug 509 - Fix warnings with gcc 4.7
- Bug 501 - Remove aggressive mat/scalar optimization (was replaced by mat*(1/scalar) for non integer types).
- Bug 479 - Use EISPACK's strategy re max number of iters in Schur decomposition.
- Add support for scalar multiple of diagonal matrices.
- Forward resize() function from Array/Matrix wrappers to the nested expression such that mat.array().resize(a,b) is now allowed.
- Windows CE: fix the lack of the aligned_malloc function on this platform.
- Fix comma initializer when inserting empty matrices.
- Fix dense=sparse*diagonal products.
- Fix compilation with m.array().min(scalar) and m.array().max(scalar).
- Fix out-of-range memory access in GEMV (the memory was not used for the computation, only to assemble unaligned packets from aligned packet loads).
- Fix various regressions with MKL support.
- Fix aliasing issue in sparse matrix assignment.
- Remove stupid assert in blue norm.
- Workaround a weird compilation error with MSVC.
Eigen 3.1.1
Released on July 22, 2012
Changes since 3.1.0:
- relicense to MPL2
- add a EIGEN_MPL2_ONLY build option to generate compiler errors when including non-MPL2 modules
- remove dynamic allocation for triangular matrix-matrix products of fixed size objects
- Fix possible underflow issues in SelfAdjointEigenSolver
- Fix issues with fixed-size Diagonal (sub/super diagonal size computation was wrong)
- Bug 487 - Geometry module: isometry * scaling compilation error
- Bug 486 - MKL support: fixed multiple-references linker errors with various decompositions
- Bug 480 - work around compilation error on Android NDK due to isfinite being defined as a macro
- Bug 485 - IterativeLinearSolvers: conflict between a typedef and template type parameter
- Bug 479 - Eigenvalues/Schur: Adjust max iterations count to matrix size
- Fixed Geometry module compilation under MSVC
- Fixed Sparse module compilation under MSVC 2005
Eigen 3.0.6
Released on July 9, 2012
Changes since 3.0.5:
- Bug 447 - fix infinite recursion in ProductBase::coeff()
- Bug 478 - fix RealSchur on a zero matrix
- Bug 477 - fix warnings with gcc 4.7
- Bug 475 - .exp() now returns +inf when overflow occurs (SSE)
- Bug 466 - fix a possible race condition in OpenMP environment (for non OpenMP thread model it is recommended to upgrade to 3.1)
- Bug 362 - fix missing specialization for affine-compact * projective
- Bug 451 - fix a clang warning
- Fix compilation of "somedensematrix.llt().matrixL().transpose()"
- Fix miss-use of the cost-model in Replicate
- Fix use of int versus Index types for Block::m_outerStride
- Fix ambiguous calls to some std functions
- Fix geometry tutorial on scalings
- Fix RVCT 3.1 compiler errors
- Fix implicit scalar conversion in Transform
- Fix typo in NumericalDiff (unsupported module)
- Fix LevenbergMarquart for non double scalar type (unsupported module)
Eigen 3.1.0
Released on June 24, 2012.
Major changes between Eigen 3.0 and Eigen 3.1:
- New features
- New set of officially supported Sparse Modules
- This includes sparse matrix storage, assembly, and many built-in (Cholesky, CG, BiCGSTAB, ILU), and third-party (PaStiX, Cholmod, UmfPack, SuperLU, Pardiso) solvers
- See this page for an overview of the features
- Optional support for Intel MKL
- This includes the BLAS, LAPACK, VML, and Pardiso components
- See this page for the details
- Core
- New vector-wise operators: *, /, *=, /=
- New coefficient-wise operators: &&, ||, min(Scalar), max(Scalar), pow, operator/(Scalar,ArrayBase)
- Decompositions
- Add incremental rank-updates in LLTand LDLT
- New SelfAdjointEigenSolver::computeDirect() function for fast eigen-decomposition through closed-form formulas (only for 2x2 and 3x3 real matrices)
- New set of officially supported Sparse Modules
- Optimizations
- Memory optimizations in JacobiSVD and triangular solves.
- Optimization of reductions via partial unrolling (e.g., dot, sum, norm, etc.)
- Improved performance of small matrix-matrix products and some Transform<> operations
Eigen 3.1.0-rc2
Released on June 21, 2012.
Changes since 3.1.0-rc1:
- Fix a couple of compilation warnings
- Improved documentation, in particular regarding the Geometry and Sparse tutorials, and sparse solver modules
- Fix double preconditioner allocation in JacobiSVD
- Bug 466:RealSchur failed on a zero matrix
- Update Adolc and MPReal support modules
Eigen 3.1.0-rc1
Released on June 14, 2012
Main changes since 3.1.0-beta1:
- Bug 466: fix a possible race condition issue. from now, multithreaded applications that call Eigen from multiple thread must initialize Eigen by calling initParallel().
- For consistency, SimplicialLLT and SimplicialLDLT now factorizes P A P^-1 (instead of P^-1 A P).
- Bug 475: now the vectorized exp operator returns +inf when overflow occurs
- Fix the use of MKL with MSVC by disabling MKL's pow functions.
- Avoid dynamic allocation for fixed size triangular solving
- Fix a compilation issue with ICC 11.1
- Fix ambiguous calls in the math functors
- Fix BTL interface.
Eigen 3.1.0-beta1
Released on June 7, 2012
Main changes since 3.1.0-alpha2:
- API changes
- SimplicialLLt and SimplicialLDLt are now renamed SimplicialLLT and SimplicialLDLT for consistency with the other modules.
- The Pardiso support module is now spelled "PardisoSupport"
- Dense modules:
- Add operator/(Scalar,ArrayBase) and coefficient-wise pow operator.
- Fix automatic evaluation of expressions nested by Replicate (performance improvement)
- Bug 447 - fix infinite recursion in ProductBase::coeff()
- Bug 455 - add support for c++11 in aligned_allocator
- LinSpace: add a missing variant, and fix the size=1 case
- Sparse modules:
- Add an IncompleteLU preconditioner with dual thresholding.
- Add an interface to the parallel Pastix solver
- Improve applicability of permutations (add SparseMatrixBase::twistedBy, handle non symmetric permutations)
- CholmodDecomposition now has explicit variants: CholmodSupernodalLLT, CholmodSimplicialLLT, CholmodSimplicialLDLT
- Add analysePattern/factorize methods to iterative solvers
- Preserve explicit zero in a sparse assignment
- Speedup sparse*dense products
- Fix a couple of issues with Pardiso support
- Geometry module:
- Others:
Eigen 3.0.5
Released February 10, 2012
Changes since 3.0.4:
- Bug 417 - fix nesting of Map expressions
- Bug 415 - fix return value of Rotation2D::operator*=
- Bug 410 - fix a possible out of range access in EigenSolver
- Bug 406 - fix infinite loop/deadlock when using OpenMP and Eigen
- Changeset 4462 - fix broken asserts revealed by Clang
- Changeset 4457 - fix description of rankUpdate() in quick reference guide
- Changeset 4455 - fix out-of-range int constant in 4x4 inverse
- Bug 398 - fix in slerp: the returned quaternion was not always normalized
- Changeset 4432 - fix asserts in eigenvalue decompositions
- Changeset 4416 - fix MSVC integer overflow warning
Eigen 3.1.0-alpha2
Released February 6, 2012
Main changes since 3.0.1-alpha1:
- New optional support for Intel MKL and other BLAS including: (details)
- BLAS (arbitrary BLAS)
- Intel LAPACKE
- Intel VML (coefficient-wise math operations)
- Intel PARDISO (sparse direct solver)
- Dense modules:
- improved performance of small matrix-matrix products
- Feature 319 - add a rankUpdate function to LDLt and LLT for updates/downdates
- Feature 400 - new coefficient wise min/max functions taking one scalar argument
- Sparse modules:
- new fast sparse matrix assembly interface from a random list of triplets (see SparseMatrix::setFromTriplets())
- new shifting feature in SimplicialCholesky (see SimplicialCholeskyBase::setShift())
- add checks for positive definiteness in SimplicialCholesky
- improved heuristic to predict the nnz of a saprse*sparse product
- add support for uncompressed SparseMatrix in CholmodSupport
- Geometry module:
- Feature 297 - add ParametrizedLine::intersectionPoint() and intersectionParam() functions
- Others:
- fix many warnings and compilation issues with ICC 12 and -strict-ansi
- fix some ICE with MSVC10
- add the possibility to disable calls to cpuid (-DEIGEN_NO_CPUID) and other asm directives
- and many other bug fixes such as: 406, 410, 398, 396, 394, 354, 352, 301,
Eigen 3.1.0-alpha1
Released December 6, 2011
Main changes since 3.0:
- Officially supported set of sparse modules. See this page for an overview of the features. Main changes:
- new SparseCore module equivalent to the old Sparse module, the Sparse module is now a super module including all sparse-related modules
- the SparseMatrix class is now more versatile and supports an uncompressed mode for fast element insertion
- the SparseMatrix class now offer a unique and simplified API to insert elements
- DynamicSparseMatrix has been deprecated (moved into unsupported/SparseExtra)
- new conservative sparse * sparse matrix product which is also used by default
- new SparseCholesky module featuring the SimplicialLLT and SimplicialLDLT built-in solvers
- new IterativeLinearSolvers module featuring a conjugate gradient and stabilized bi-conjugate gradient iterative solvers with a basic Jacobi preconditioner
- new SparseCore module equivalent to the old Sparse module, the Sparse module is now a super module including all sparse-related modules
- New SelfAdjointEigenSolver::computeDirect() function for fast eigen-decomposition through closed-form formulas (only for 2x2 and 3x3 real matrices)
- New LLT::rankUpdate() function supporting both updates and down-dates
- Optimization of reduction via partial unrolling (e.g., dot, sum, norm, etc.)
- New coefficient-wise operators: && and ||
- Feature 157 - New vector-wise operations for arrays: *, /, *=, and /=.
- Feature 206 - Pre-allocation of intermediate buffers in JacobiSVD
- Feature 370 - New typedefs for AlignedBox
- All the fixes and improvements of the 3.0 branch up to the 3.0.4 release (see below)
Eigen 3.0.4
Released December 6, 2011
Changes since 3.0.3:
- Bug 363 - check for integer overflow in size computations
- Bug 369 - Quaternion alignment is broken (and more alignment fixes)
- Bug 354 - Converge better in SelfAdjointEigenSolver, and allow better handling of non-convergent cases
- Bug 347 - Fix compilation on ARM NEON with LLVM 3.0 and iOS SDK 5.0
- Bug 372 - Put unsupported modules documentation at the right place
- Bug 383 - Fix C++11 compilation problem due to some constructs mis-interpreted as c++11 user-defined literals
- Bug 373 - Compilation error with clang 2.9 when exceptions are disabled
- Fix compilation issue with QuaternionBase::cast
Eigen 2.0.17
Released December 6, 2011
Changes since 2.0.16:
- Fix a compilation bug in aligned_allocator: the allocate method should take a void pointer
- Fix a typo in ParametrizedLine documentation
Eigen 3.0.3
Released October 6, 2011
Changes since 3.0.2:
- Fix compilation errors when Eigen2 support is enabled.
- Fix bug in evaluating expressions of the form matrix1 * matrix2 * scalar1 * scalar2.
- Fix solve using LDLT for singular matrices if solution exists.
- Fix infinite loop when computing SVD of some matrices with very small numbers.
- Allow user to specify pkgconfig destination.
- Several improvements to the documentation.
Eigen 3.0.2
Released August 26, 2011
Changes since 3.0.1:
- Windows.h: protect min/max calls from macros having the same name (no need to #undef min/max anymore).
- MinGW: fix compilation issues and pretty gdb printer.
- Standard compliance: fix aligned_allocator and remove uses of long long.
- MPReal: updates for the new version.
- Other fixes:
- fix aligned_stack_memory_handler for null pointers.
- fix std::vector support with gcc 4.6.
- fix linking issue with OpenGL support.
- fix SelfAdjointEigenSolver for 1x1 matrices.
- fix a couple of warnings with new compilers.
- fix a few documentation issues.
Eigen 3.0.1
Released May 30, 2011
Changes since 3.0.0:
- Fix many bugs regarding ARM and NEON (Now all tests succeed on ARM/NEON).
- Fix compilation on gcc 4.6
- Improved support for custom scalar types:
- Fix memory leak issue for scalar types throwing exceptions.
- Fix implicit scalar type conversion.
- Math functions can be defined in the scalar type's namespace.
- Fix bug in trapezoidal matrix time matrix product.
- Fix asin.
- Fix compilation with MSVC 2005 (SSE was wrongly enabled).
- Fix bug in EigenSolver: normalize the eigen vectors.
- Fix Qt support in Transform.
- Improved documentation.
Eigen 2.0.16
Released May 28, 2011
Changes since 2.0.15:
- Fix bug in 3x3 tridiagonlisation (and consequently in 3x3 selfadjoint eigen decomposition).
- Fix compilation for new gcc 4.6.
- Fix performance regression since 2.0.12: in some matrix-vector product, complex matrix expressions were not pre-evaluated.
- Fix documentation of Least-Square.
- New feature: support for part<SelfAdjoint>.
- Fix bug in SparseLU::setOrderingMethod.
Eigen 3.0.0
Released March 19, 2011, at the meeting.
See the Eigen 3.0 release notes.
Only change since 3.0-rc1:
- Fixed compilation of the unsupported 'openglsupport' test.
Eigen 3.0-rc1
Released March 14, 2011.
Main changes since 3.0-beta4:
- Core: added new EIGEN_RUNTIME_NO_MALLOC option and new set_is_malloc_allowed() option to finely control where dynamic memory allocation is allowed. Useful for unit-testing of functions that must not cause dynamic memory allocations.
- Core: SSE performance fixes (follow-up from Bug 203).
- Core: Fixed crashes when using EIGEN_DONT_ALIGN or EIGEN_DONT_ALIGN_STATICALLY (Bug 213 and friends).
- Core: EIGEN_DONT_ALIGN and EIGEN_DONT_ALIGN_STATICALLY are now covered by unit tests.
- Geometry: Fixed transform * matrix products (Bug 207).
- Geometry: compilation fix for mixing CompactAffine with Homogeneous objects
- Geometry: compilation fix for 1D transform
- SVD: fix non-computing constructors (correctly forward computationOptions) (Bug 206)
- Sparse: fix resizing when the destination sparse matrix is row major (Bug 37)
- more Eigen2Support improvements
- more unit test fixes/improvements
- more documentation improvements
- more compiler warnings fixes
- fixed GDB pretty-printer for dynamic-size matrices (Bug 210)
Eigen 3.0-beta4
Released February 28, 2011.
Main changes since 3.0-beta3:
- Non-vectorization bug fixes:
- fix Bug 89: work around an extremely evil compiler bug on old GCC (<= 4.3) with the standard assert() macro
- fix Umfpack back-end in the complex case
- Vectorization bug fixes:
- fix a segfault in "slice vectorization" when the destination might not be aligned on a scalar (complex<double>)
- fix Bug 195: fast SSE unaligned loads fail on GCC/i386 and on Clang
- fix Bug 186: worked around a GCC 4.3 i386 backend issue with SSE
- fix Bug 203: SSE: a workaround used in pset1() resulted in poor assembly
- worked around a GCC 4.2.4 internal compiler error with vectorization of complex numbers
- lots of AltiVec compilation fixes
- NEON compilation fixes
- API additions and error messages improvements
- Transform: prevent bad user code from compiling
- fix Bug 190: directly pass Transform Options to Matrix, allowing to use RowMajor. Fix issues in Transform with non-default Options.
- factorize implementation of standard real unary math functions, and add acos, asin
- Build/tests system
- Lots of unit test improvements
- fix installation of unsupported modules
- fixed many compiler warnings, especially on the Intel compiler and on LLVM/Clang
- CTest/CMake improvements
- added option to build in 32bit mode
- BLAS/LAPACK implementation improvements
- The Blas library and tests are now automatically built as part of the tests.
- expanded LAPACK interface (including syev)
- now Sparse solver backends use our own BLAS/LAPACK implementation
- fix Bug 189 (cblat1 test failure)
- Documentation
- improved conservativeResize methods documentation
- documented sorting of eigenvalues
- misc documentation improvements
- improve documentation of plugins
Eigen 3.0-beta3
Released February 12, 2011.
The biggest news is that the API is now 100% stable.
Main changes since 3.0-beta2:
- The "too many to list them all" category:
- lots of bug fixes
- lots of performance fixes
- lots of compiler support fixes
- lots of warning fixes
- lots of unit tests improvements and fixes
- lots of documentation improvements
- lots of build system fixes
- API changes:
- replaced ei_ prefix by internal:: namespace. For example, ei_cos(x) becomes internal::cos(x).
- renamed PlanarRotation -> JacobiRotation
- renamed DenseStorageBase -> PlainObjectBase
- HouseholderSequence API cleanup
- refactored internal metaprogramming helpers to follow closely the standard library
- made UpperBidiagonalization internal
- made BandMatrix/TridiagonalMatrix internal
- Core: also see below, "const correctness".
- Sparse: EIGEN_YES_I_KNOW_SPARSE_MODULE_IS_NOT_STABLE_YET must be defined to use Eigen/Sparse
- Core: random<interger type>() now spans over range of width RAND_MAX
- New API:
- Core: added Map static methods taking strides
- SVD: added jacobiSvd() method
- Sparse: many misc improvements and new features. Improved support for Cholmod, Amd, SuperLU and other back-ends.
- Core: allow mixed real-complex dot products
- Geometry: allow mixed real-complex cross products
- Geometry: allow to pass Options parameters to Transform, Quaternion and other templates, to control memory alignment
- QR: add threshold API to FullPivHouseholderQR
- Core: added tan function
- Const correctness:
- Eigen now properly enforces const-correctness everywhere, for example with Map objects. This will break compilation of code that relied on former behavior.
- A new kind of test suite was added to check that, 'failtest'.
- BLAS/LAPACK:
- Complete BLAS library built on top of Eigen. Imported BLAS test suite, which allowed to fix many issues.
- Partial LAPACK implementation. Passing part of the LAPACK test suite, which also allowed to fix some issues.
- Eigen 2 Support:
- tons of improvements in EIGEN2_SUPPORT
- new incremental migration path: see http://eigen.tuxfamily.org/dox-devel/Eigen2SupportModes.html
- imported a copy of the Eigen 2 test suite, made sure that Eigen 3 passes it. That also allowed to fix several issues.
Eigen 3.0-beta2
Released October 15, 2010.
Main changes since 3.0-beta1:
- Add support for the vectorization of std::complex<> with SSE, AltiVec and NEON.
- Add support for mixed real * complex matrix products with vectorization.
- Finalize the JacobiSVD class with: compile time options, thin/full decompositions, and least-square solving.
- Several improvement of the Transform class. In particular, there is no default mode anymore.
- New methods: middleRows(), middleCols(), TriangularMatrix::conjugate()
- New unsupported modules: OpenGL, MPFR C++
- Many improvements in the support of empty objects.
- Many improvements of the vectorization logic.
- Add the possibility to extend QuaternionBase.
- Vectorize Quaternion multiplication with double.
- Significant improvements of the documentation.
- Improved compile time errors.
- Enforce static allocation of temporary buffers in gemm (when possible).
- Fix aligned_delete for null pointers and non trivial dtors.
- Fix eigen decomposition of 3x3 float matrices.
- Fix 4x4 matrix inversions (vectorization).
- Many fixes in QR: solving with m>n, use of rank, etc.
- Fixes for MSVC for windows mobile and CLang.
- Remove the Taucs backend (obsolete).
- Remove the old SVD class (was causing too much troubles, a new decompozition based on bidiagonalisation/householder should come back soon, JacobiSVD can be used meanwhile).
Eigen 2.0.15
Released July 16, 2010
Changes since 2.0.14:
- Fix bug: certain cases of matrix-vector product (depending on storage order) were blocked by an assertion failure.
- Fix LU and QR solve when rank==0, fix LLT when the matrix is purely 0.
- Fix a couple of bugs with QR solving especially with rows>cols.
- Fix bug with custom scalar types that have non-trivial destructor.
- Fix for ICC in SSE code.
- Fix some C++ issues found by Clang (patch by Nick Lewycky).
Eigen 3.0-beta1
Released July 5, 2010
See the announcement.
Eigen 2.0.14
Released June 22, 2010
Changes since 2.0.13:
- Fix #141: crash in SSE (alignment problem) when using dynamic-size matrices with a max-size fixed at compile time that is not a multiple of 16 bytes. For example, Matrix<double,Dynamic,Dynamic,AutoAlign,5,5>.
- Fix #142: LU of fixed-size matrices was causing dynamic memory allocation (patch by Stuart Glaser).
- Fix #127: remove useless static keywords (also fixes warnings with clang++).
Eigen 2.0.13
Released June 10, 2010
Changes since 2.0.12:
- Fix #132: crash in certain matrix-vector products. Unit test added.
- Fix #125: colwise norm() and squaredNorm() on complex types do not return real types
- Fully support the QCC/QNX compiler (thanks to Piotr Trojanek). The support in 2.0.12 was incomplete. The whole test suite is now successful.
- As part of the QCC support work, a lot of standards compliance work: put std:: in front of a lot of things such as size_t, check whether the math library needs to be linked to explicitly...
- Fix precision issues in LDLT. The isPositiveDefinite() method is now always returning true, but it was conceptually broken anyway, since a non-pivoting LDLT decomposition can't know that.
- Compilation fix in ldlt() on expressions.
- Actually install the Eigen/Eigen and Eigen/Dense public headers!
- Fix readcost for complex types.
- Fix compilation of the BTL benchmarks.
- Some dox updates.
Eigen 2.0.12
Released February 12, 2010
Changes since 2.0.11:
- EIGEN_DEFAULT_TO_ROW_MAJOR is fully supported and tested.
- Several important fixes for row-major matrices.
- Fix support of several algorithms for mixed fixed-dynamic size matrices where the fixed dimension is greater than the dynamic dimension. For example: Matrix<float,3,Dynamic>(3,2)
- fix EIGEN_DONT_ALIGN: now it _really_ disables vectorization (was giving a #error unless you also used EIGEN_DONT_VECTORIZE).
- Fix #92: Support QNX's QCC compiler (patch by Piotr Trojanek)
- Fix #90, missing type cast in LU, allow to use LU with MPFR (patch by 'Wolf').
- Fix ICC compiler support: work around a bug present at least in ICC 11.1.
- Compilation fixes for computeInverse() on expressions.
- Fix a gap in a unit-test (thanks to Jitse Niesen)
- Backport improvements to benchmarking code.
- Documentation fixes
Eigen 2.0.11
Released January 10, 2010
Changes since 2.0.10:
- Complete rewrite of the 4x4 matrix inversion: we now use the usual cofactors approach, so no numerical stability problems anymore (bug #70)
- Still 4x4 matrix inverse: SSE path for the float case, borrowing code by Intel, giving very high performance.
- Fix crash happening on 32-bit x86 Linux with SSE, when double's were created at non-8-byte-aligned locations (bug #79).
- Fix bug in Part making it crash in certain products (bug #80).
- Precision improvements in Quaternion SLERP (bug #71).
- Fix sparse triangular solver for lower/row-major matrices (bug #74).
- Fix MSVC 2010 compatibility.
- Some documentation improvements.
Eigen 2.0.10
Released November 25, 2009
Changes since 2.0.9:
- Rewrite 4x4 matrix inverse to improve precision, and add a new unit test to guarantee that precision. It's less fast, but it's still faster than the cofactors method.
- Fix bug #62: crash in SSE code with MSVC 2008 (Thanks to Hauke Heibel).
- Fix bug #65: MatrixBase::nonZeros() was recursing infinitely
- Fix PowerPC platform detection on Mac OSX.
- Prevent the construction of bogus MatrixBase objects and generate good compilation errors for that. Done by making the default constructor protected, and adding some private constructors.
- Add option to initialize all matrices by zero: just #define EIGEN_INITIALIZE_MATRICES_BY_ZERO
- Improve Map documentation
- Install the pkg-config file to share/pkgconfig, instead of lib/pkgconfig (thanks to Thomas Capricelli)
- fix warnings
- fix compilation with MSVC 2010
- adjust to repository name change
Eigen 2.0.9
Released October 24, 2009
Changes since 2.0.8:
- Really fix installation and the pkg-config file.
- Install the NewStdVector header that was introduced in 2.0.6.
Eigen 2.0.8
Released October 23, 2009
Changes since 2.0.7:
- fix installation error introduced in 2.0.7: it was choking on the pkg-config file eigen2.pc not being found. The fix had been proposed long ago by Ingmar Vanhassel for the development branch, and when recently the pkg-config support was back-ported to the 2.0 branch, nobody thought of backporting this fix too, and apparently nobody tested "make install" !
- SVD: add default constructor. Users were relying on the compiler to generate one, and apparenty 2.0.7 triggered a little MSVC 2008 subtlety in this respect. Also added an assert.
Eigen 2.0.7
Released October 22, 2009
Changes since 2.0.6:
- fix bug #61: crash when using Qt QVector on Windows 32-bit. By Hauke Heibel.
- fix bug #10: the reallocateSparse function was half coded
- fix bug in SparseMatrix::resize() not correctly initializing by zero
- fix another bug in SparseMatrix::resize() when outerSize==0. By Hauke Heibel.
- fully support GCC 3.3. It was working in 2.0.2, there was a compilation error in 2.0.6, now for the first time in 2.0.7 it's 100% tested (the test suite passes without any errors, warnings, or failed tests).
- SVD: add missing assert (help catch mistakes)
- fixed warnings in unit-tests (Hauke Heibel)
- finish syncing Memory.h with the devel branch. This is cleaner and fixes a warning. The choice of system aligned malloc function may be affected by this change.
- add pkg-config support by Rhys Ulerich.
- documentation fix and doc-generation-script updates by Thomas Capricelli
Eigen 2.0.6
Released September 23, 2009
Changes since 2.0.5:
- fix bug: visitors didn't work on row-vectors.
- fix bug #50: compilation errors with swap().
- fix bug #42: Add Transform::Identity() as mentioned in the tutorial.
- allow to disable all alignment code by defining EIGEN_DONT_ALIGN (backport from devel branch).
- backport the devel branch's StdVector header as NewStdVector. You may also #define EIGEN_USE_NEW_STDVECTOR to make StdVector use it automatically. However, by default it isn't used by StdVector, to preserve compatibility.
- Vectorized quaternion product (for float) by Rohit Garg (backport from devel branch).
- allow to override EIGEN_RESTRICT and add EIGEN_DONT_USE_RESTRICT_KEYWORD
- fix a warning in ei_aligned_malloc; fixed by backporting the body from the devel branch; may result in a different choice of system aligned malloc function.
- update the documentation.
Eigen 2.0.5
Released August 22, 2009
Changes since 2.0.4:
- fix bug: in rare situations involving mixed storage orders, a matrix product could be evaluated as its own transpose
- fix bug: LU::solve() crashed when called on the LU decomposition of a zero matrix
- fix bug: EIGEN_STACK_ALLOCATION_LIMIT was too high, resulting in stack overflow for a user. Now it is set as in the devel branch.
- fix compilation bug: our StdVector header didn't work with GCC 4.1. (Bug #41)
- fix compilation bug: missing return statement in Rotation2D::operator*= (Bug #36)
- in StdVector, a more useful #error message about the #including order
- add EIGEN_TRANSFORM_PLUGIN allowing to customize the Transform class
- fix a warning with MSVC
- fix a bug in our cmake code when building unit-tests (thanks to Marcus Hanwell)
- work around a bug in cmake that made it fail to build unit-tests when fortran wasn't installed
- in our cmake code, remove the part about retrieving the mercurial info and appending it to the version number in the dox
- dox: remove the old example list
- fix the option to build a binary library, although it's not very useful and will be removed
- add basic .hgignore file and script to build the docs (thanks to Thomas Capricelli)
Eigen 2.0.4
Released August 1, 2009
Changes since 2.0.3:
- Several fixes in the overloaded new and delete operators. Thanks to Hauke Heibel.
- compilation fix: add the missing ei_atan2 function. Thanks to Manuel Yguel.
- Use ei_atan2 instead of using std::atan2 directly.
- several compilation fixes in the Qt interoperability code: methods toQTransform() and toQMatrix(). Thanks to Anthony Truchet.
- compilation fix and simplification in Matrix assignment
- compilation fixes in "a *= b" and "a=a*b" when a has to be resized.
- remove a "stupid" version of ei_pow. for integers for gcc >= 4.3
- bug fix in Quaternion::setFromTwoVectors()
- several ctest improvements: use our own dashboard, use a separate project for the 2.0 branch.
- documentation: improvement on the pages on unaligned arrays (the online copies have been updated immediately).
Eigen 2.0.3
Released June 21, 2009
Changes since 2.0.2:
- precision and reliability fixes in various algorithms, especially LLT, QR, Tridiagonalization, and also a precision improvement in LU.
- fix LLT and LDLT solve() on uninitialized result (was causing an assertion).
- add Eigen/Eigen and Eigen/Dense headers for convenience
- document a newly found cause for the "unaligned array" assertion
- backport documentation improvements on transpose() and adjoint()
- updates in the Sparse module (was needed to support KDE 4.3)
Eigen 2.0.2
Released May 22, 2009
Changes since 2.0.1:
- Fix linearRegression() compilation, actually it is reimplemented using the better fitHyperplane() which does total least-squares.
- Add missing setZero() etc... variants taking size parameters and resizing. These were mentioned in the tutorial but weren't implemented.
- Fix posix_memalign platform check. This fixes portability issues. Thanks to Ross Smith.
- Fix detection of SSE2 on the Windows 64-bit platform.
- Fix compatibility with the old GCC 3.3: it is now fully supported again.
- Fix warnings with recent GCC (4.4.0 and 4.3.3).
Eigen 2.0.1
Released April 14, 2009
Changes since 2.0.0:
- disable alignment altogether on exotic platforms on which we don't vectorize anyway. This allows e.g. to use Eigen on ARM platforms.
- new StdVector header with a new workaround for the problems with std::vector.
- workarounds for MSVC internal compiler errors
- MSVC 9 compilation fix (patch by Hauke Heibel)
- fixes for various bugs in Maps/Blocks that could give wrong results
- fix bug in 4x4 matrix inverse that could give wrong results
- compilation fix in SliceVectorization
- fix wrong static assertion (patch by Markus Moll)
- add missing operators in aligned_allocator (thanks to Hauke Heibel)
Eigen 2.0.0
Released February 2, 2009