I am used to using Eigen for almost all of my mathematical linear algebra work. Recently, I discovered that Boost also provides a C++ template class library that includes the Basic Linear Algebra Library (Boost::uBLAS). This made me wonder if I could do all my work based solely on Boost since it is already a major library for my code.
Upon closer inspection, I couldn't really distinguish between them:
- Boost::uBLAS: uBLAS provides templated C++ classes for dense, unit and sparse vectors, dense, identity, triangular, banded, symmetric, hermitian and sparse matrices. Views into vectors and matrices can be constructed via ranges, slices, adaptor classes and indirect arrays. The library covers the usual basic linear algebra operations on vectors and matrices: reductions like different norms, addition and subtraction of vectors and matrices and multiplication with a scalar, inner and outer products of vectors, matrix vector and matrix matrix products and triangular solver.
- Eigen:
它支持所有矩阵大小,从小型固定大小的矩阵到任意大的密集矩阵,甚至是稀疏矩阵。它支持所有标准数字类型,包括std::complex、整数,并且易于扩展到自定义数字类型。它支持各种矩阵分解和几何特征。其未支持模块的生态系统提供了许多专业功能,如非线性优化、矩阵函数、多项式求解器、FFT等等。... 有没有人对它们的关键区别有更好的想法,以及我们可以根据什么基础在它们之间进行选择?
Upon closer inspection, I couldn't really distinguish between them:
- Boost::uBLAS: uBLAS provides templated C++ classes for dense, unit and sparse vectors, dense, identity, triangular, banded, symmetric, hermitian and sparse matrices. Views into vectors and matrices can be constructed via ranges, slices, adaptor classes and indirect arrays. The library covers the usual basic linear algebra operations on vectors and matrices: reductions like different norms, addition and subtraction of vectors and matrices and multiplication with a scalar, inner and outer products of vectors, matrix vector and matrix matrix products and triangular solver.
- Eigen:
它支持所有矩阵大小,从小型固定大小的矩阵到任意大的密集矩阵,甚至是稀疏矩阵。它支持所有标准数字类型,包括std::complex、整数,并且易于扩展到自定义数字类型。它支持各种矩阵分解和几何特征。其未支持模块的生态系统提供了许多专业功能,如非线性优化、矩阵函数、多项式求解器、FFT等等。... 有没有人对它们的关键区别有更好的想法,以及我们可以根据什么基础在它们之间进行选择?