./math/eigen3, C++ template library for linear algebra

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]

Branch: CURRENT, Version: 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
integrated way:
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.
* Fast.
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
whole expressions.
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.

Master sites:

Version history: (Expand)

CVS history: (Expand)

   2016-09-13 16:57:39 by Patrick Welche | Files touched by this commit (4) | Package updated
Log message:
Update eigen3 to 3.2.9

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?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.

 * 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().
  + 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
    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
  + 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) | Package updated
Log message:
Bump PKGREVISION for pc file fix.
   2016-09-02 11:37:25 by Iain Hibbert | Files touched by this commit (2)
Log message:
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)
Log message:
Remove reference to 3.1.4 from distinfo
   2015-11-15 13:06:33 by Patrick Welche | Files touched by this commit (3) | Package updated
Log message:
Update eigen3 to 3.2.7

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
          + 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
          + [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
          + [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
     * [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
          + [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
          + [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,

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
     * 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
          + [117]Bug 898: MSVC optimization by adding inline hint to
          + [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
          + 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
          + 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
          + [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
          + GMRES: Initialize essential Householder vector with correct

     * Geometry:
          + [137]Bug 807: Missing scalar type cast in umeyama()
          + [138]Bug 806: Missing scalar type cast in
          + [139]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
          + [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
          + [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
     * 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
          + 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
     * Geometry:
          + Fix compilation of Transform * UniformScaling
     * Sparse matrices:
          + Fix elimination tree and SparseQR for fat rectangular
          + [157]Bug 635: add isCompressed to MappedSparseMatrix for
          + [158]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
            ([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
   2015-11-04 00:33:46 by Alistair G. Crooks | Files touched by this commit (262)
Log message:
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-
	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)
Log message:
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) | Package updated
Log message:
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.
    Documentation fixes.