/eigen3, C++ template library for linear algebra
3.2.9, Package name:
eigen3-3.2.9, Maintainer: pkgsrc-users
Eigen 3 is a C++ template library for linear algebra: vectors, matrices, and
related algorithms. It is:
* Versatile. Eigen handles, without code duplication, and in a completely
o both fixed-size and dynamic-size matrices and vectors.
o both dense and sparse (the latter is still experimental) matrices and
o both plain matrices/vectors and abstract expressions.
o both column-major (the default) and row-major matrix storage.
o both basic matrix/vector manipulation and many more advanced, specialized
modules providing algorithms for linear algebra, geometry, quaternions,
or advanced array manipulation.
o Expression templates allow to intelligently remove temporaries and enable
lazy evaluation, when that is appropriate -- Eigen takes care of this
automatically and handles aliasing too in most cases.
o Explicit vectorization is performed for the SSE (2 and later) and AltiVec
instruction sets, with graceful fallback to non-vectorized code.
Expression templates allow to perform these optimizations globally for
o With fixed-size objects, dynamic memory allocation is avoided, and the
loops are unrolled when that makes sense.
o For large matrices, special attention is paid to cache-friendliness.
* Elegant. The API is extremely clean and expressive, thanks to expression
templates. Implementing an algorithm on top of Eigen feels like just copying
pseudocode. You can use complex expressions and still rely on Eigen to
produce optimized code: there is no need for you to manually decompose
expressions into small steps.
* Compiler-friendy. Eigen has very reasonable compilation times at least with
GCC, compared to other C++ libraries based on expression templates and heavy
metaprogramming. Eigen is also standard C++ and supports various compilers.
Version history: (Expand)
- (2016-09-14) Updated to version: eigen3-3.2.9
- (2016-09-03) Updated to version: eigen3-3.2.7nb1
- (2015-11-15) Updated to version: eigen3-3.2.7
- (2013-10-06) Updated to version: eigen3-3.1.4
- (2013-05-30) Updated to version: eigen3-3.1.3
- (2013-04-01) Updated to version: eigen3-3.1.2nb1
CVS history: (Expand)
| 2016-09-13 16:57:39 by Patrick Welche | Files touched by this commit (4) | |
Update eigen3 to 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?ti … ex_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.
+ 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
+ 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
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
+ 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
+ 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
+ Bug 1106: workaround a compilation issue in Sparse module for
+ 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
+ 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.
| 2016-09-02 18:58:13 by Thomas Klausner | Files touched by this commit (1) | |
Bump PKGREVISION for pc file fix.
| 2016-09-02 11:37:25 by Iain Hibbert | Files touched by this commit (2) |
patch pkgconfig file
cflags was "-Iinclude/eigen3" which was clearly wrong, so add prefix
| 2015-11-15 13:09:59 by Patrick Welche | Files touched by this commit (1) |
Remove reference to 3.1.4 from distinfo
| 2015-11-15 13:06:33 by Patrick Welche | Files touched by this commit (3) | |
Update eigen3 to 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
+ 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
+ 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
+ Bug 1100: remove explicit CMAKE_INSTALL_PREFIX prefix to
conform to cmake install's DESTINATION parameter.
+ unsupported/ArpackSupport is now properly installed by make
+ Bug 1080: warning fixes
Released on October 1, 2015
Changes since 3.2.5:
* fix some compilation issues with MSVC 2013, including bugs 1000
* 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
* Bug 1059: fix predux_max<Packet4i> for NEON
* Bug 1039: fix some issues when redefining
* Bug 1062: fix SelfAdjointEigenSolver for RowMajor matrices
* MKL: fix support for the 11.2 version, and fix a naming conflict
+ Bug 1033: explicit type conversion from 0 to RealScalar
Released on September 4, 2015
See the announcement.
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
+ Use zero guess in ConjugateGradients::solve
+ Add PermutationMatrix::determinant method
+ Fix SparseLU::signDeterminant() method, and add a
+ 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
* Numerical robustness improvements:
+ Bug 1014: improve numerical robustness of the 3x3 direct
+ Bug 1013: fix 2x2 direct eigenvalue solver for identical
+ 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
+ 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
+ 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
+ Doc and build system: 733, 914, 952, 961,
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
* Fix compilation with NEON on some platforms.
Released on December 16, 2014
Changes since 3.2.2:
+ 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
+ Bug 898: MSVC optimization by adding inline hint to
+ Bug 853: remove enable_if<> in Ref<> ctor.
* Dense solvers:
+ Bug 894: fix the sign returned by LDLT for multiple calls
+ Fix JacobiSVD wrt underflow and overflow.
+ Bug 791: fix infinite loop in JacobiSVD in the presence
+ 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
+ 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.
+ Fix Hyperplane::Through(a,b,c) when points are aligned or
+ Fix linking issues in OpenGLSupport.
* OS, build system and doc:
+ Various compilation fixes including: bug 821, bug
822, bug 857, bug 871, bug 873.
+ Fix many compilation warnings produced by recent compilers
including: bug 909.
+ Bug 861: enable posix_memalign with PGI.
+ Fix BiCGSTAB doc example.
Released on August 4, 2014
Changes since 3.2.1:
+ 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
+ Various numerical fixes in JacobiSVD, including:bug 843,
and the move from Lapack to Matlab strategy for the default
+ 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.
+ 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
+ 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
+ GMRES: Initialize essential Householder vector with correct
+ Bug 807: Missing scalar type cast in umeyama()
+ Bug 806: Missing scalar type cast in
+ Bug 759: Removed hard-coded double-math from
* 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
+ 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)
Released on February 26, 2014
Changes since 3.2.0:
* Eigen2 support is now deprecated and will be removed in version
+ 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
+ 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
+ Fix a 0/0 issue in JacobiSVD.
+ Bug 736: Wrong result in LDLT::isPositiveDefinite() for
+ Bug 740: Fix overflow issue in stableNorm().
+ Make pivoting HouseholderQR compatible with custom scalar
+ Fix compilation of Transform * UniformScaling
* Sparse matrices:
+ Fix elimination tree and SparseQR for fat rectangular
+ Bug 635: add isCompressed to MappedSparseMatrix for
+ Bug 664: Support iterators without operator< in
+ Fixes in SparseLU: infinite loop, aliasing issue when solving,
overflow in memory allocation, use exceptions only if enabled
+ 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
+ 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
| 2015-11-04 00:33:46 by Alistair G. Crooks | Files touched by this commit (262) |
Add SHA512 digests for distfiles for math category
Problems found locating distfiles:
Package dfftpack: missing distfile dfftpack-20001209.tar.gz
Package eispack: missing distfile eispack-20001130.tar.gz
Package fftpack: missing distfile fftpack-20001130.tar.gz
Package linpack: missing distfile linpack-20010510.tar.gz
Package minpack: missing distfile minpack-20001130.tar.gz
Package odepack: missing distfile odepack-20001130.tar.gz
Package py-networkx: missing distfile networkx-1.10.tar.gz
Package py-sympy: missing distfile sympy-0.7.6.1.tar.gz
Package quadpack: missing distfile quadpack-20001130.tar.gz
Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden). All existing
SHA1 digests retained for now as an audit trail.
| 2014-01-27 19:41:15 by Thomas Klausner | Files touched by this commit (72) |
Do not set FETCH_USING, should not be set in a package Makefile.
| 2013-10-06 18:16:17 by Thomas Klausner | Files touched by this commit (2) | |
Update to 3.1.4:
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.