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

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


Branch: CURRENT, Version: 3.3.7nb2, Package name: eigen3-3.3.7nb2, 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
vectors.
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.


Required to build:
[pkgtools/cwrappers]

Master sites:


Version history: (Expand)


CVS history: (Expand)


   2020-04-19 00:01:57 by Joerg Sonnenberger | Files touched by this commit (4)
Log message:
Add missing includes. Bump revision.
   2020-03-22 12:03:22 by Roland Illig | Files touched by this commit (1)
Log message:
math/eigen3: fix PKGCONFIG_OVERRIDE
   2019-11-02 17:16:23 by Roland Illig | Files touched by this commit (47)
Log message:
math: align variable assignments

pkglint -Wall -F --only aligned -r

Manual correction in R/Makefile.extension for the MASTER_SITES
continuation line.
   2019-03-09 15:14:39 by Wen Heping | Files touched by this commit (4) | Package updated
Log message:
Update to 3.3.7

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<>>
   2017-09-14 13:21:03 by Patrick Welche | Files touched by this commit (5) | Package updated
Log message:
Update eigen3 to 3.3.4

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?ti … igen_3.3.4
   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().
  + 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.
   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