我习惯了Eigen几乎所有的数学线性代数工作。 最近,我发现Boost还提供了一个C++模板类库,它提供了基本线性代数库(Boost::uBLAS)。这让我想知道我是否能够仅仅基于boost来获得我所有的工作,因为它已经是我的代码的主要库。Boost :: uBLAS vs Eigen
在两个仔细一看真的没有让我他们之间的明确区分:
- 的boost :: uBLAS库:
的uBLAS提供密集,单元模板C++类和稀疏矢量,密集,身份,三角形,带状,对称,厄密和稀疏矩阵。可以通过范围,切片,适配器类和间接阵列构建向量和矩阵的视图。该库涵盖了关于向量和矩阵的常用基本线性代数运算:像不同规范的减法,向量和矩阵的加法和减法,以及与向量的内积和外积,矩阵向量和矩阵矩阵乘积以及三角求解器的乘积。
...
- 征:
它支持所有的矩阵大小,从小型固定大小的矩阵来任意大的密集矩阵,甚至稀疏矩阵。它支持所有标准数字类型,包括std :: complex,整数,并且可以轻松扩展到自定义数字类型。
它支持各种矩阵分解和几何特征。
其不支持模块的生态系统提供了许多专业功能,如非线性优化,矩阵函数,多项式求解器,FFT等等。
...
有谁对他们的主要差别,并在此基础上更好的主意,我们可以在它们之间进行选择?
Eigen也使用表达模板。 –
@quant_dev我说得更清楚了。 – kangshiyin
请注意,这些基准很旧(从2011年开始),而不是独立的。 –