私はほぼすべての私の数学的線形代数の仕事のためにEigenに慣れています。 最近Boostは、Basic Linear Algebra Library(Boost::uBLAS)を提供するC++テンプレートクラスライブラリも提供していることを発見しました。これは私のコードの主要なライブラリであるため、私はすべての作業をブーストだけに基づいて行うことができるのかどうか疑問に思いました。Boost :: uBLAS vs Eigen
の両方をよく見るが、本当に私にそれらの間の明確な区別得ませんでした:
- ブーストを:: uBLAS:
uBLASは密、ユニット用テンプレートC++クラスを提供し、疎ベクトル、高密度、同一性、三角形、帯状、対称、エルミートおよびスパース行列。ベクトルや行列のビューは、範囲、スライス、アダプタクラス、および間接的な配列を使用して作成できます。ライブラリはベクトルと行列に関する通常の基本線形代数演算をカバーしています。異なるノルムの減少、ベクトルと行列の加減算、ベクトルのスカラー、内外の積、行列ベクトルと行列行列積、三角ソルバーとの乗算をカバーします。
...
- 固有:
それは小さな固定サイズの行列から任意の大きさの密行列、さらにはスパース行列に、すべてのマトリックスサイズをサポートしています。
std :: complex、integersなどのすべての標準数値型をサポートしており、カスタム数値型に簡単に拡張できます。
さまざまなマトリックス分解とジオメトリ機能をサポートしています。
サポートされていないモジュールのエコシステムは、非線形最適化、行列関数、多項式ソルバー、FFTなどの多くの特殊な機能を提供します。
...
誰もが彼らの主な相違点について、我々はそれらの間で選択可能なベースでより良いアイデアを持っていますか?
Eigenも式テンプレートを使用します。 –
@quant_devもっと明確にしました。 – kangshiyin
これらのベンチマークはかなり古い(2011年以降)独立したものではないことに注意してください。 –