Je suis habitué à Eigen pour la quasi-totalité de mes travaux d'algèbre linéaire mathématique. Récemment, j'ai découvert que Boost fournit également une bibliothèque de classes modèles C++ qui fournit la bibliothèque d'algèbre linéaire de base ( Boost::uBLAS ). Cela m'a amené à me demander si je pouvais faire tout mon travail en me basant uniquement sur boost, car c'est déjà une bibliothèque majeure pour mon code.
En regardant de plus près les deux, je n'ai pas réussi à faire une distinction plus nette entre eux :
- Boost::uBLAS :
uBLAS fournit des classes C++ modélisées pour les vecteurs denses, unitaires et épars, les matrices denses, identitaires, triangulaires, bandées, symétriques, hermitiennes et éparses. Les vues sur les vecteurs et les matrices peuvent être construites via des plages, des tranches, des classes d'adaptateurs et des tableaux indirects. La bibliothèque couvre les opérations de base habituelles de l'algèbre linéaire sur les vecteurs et les matrices : réductions comme les différentes normes, addition et soustraction de vecteurs et de matrices et multiplication avec un scalaire, produits internes et externes de vecteurs, produits matriciels de vecteurs et de matrices et solveur triangulaire.
...
- Eigen :
Il prend en charge toutes les tailles de matrices, des petites matrices de taille fixe aux matrices denses de taille arbitraire, et même les matrices éparses.
Il prend en charge tous les types numériques standard, y compris std::complex, les entiers, et est facilement extensible aux types numériques personnalisés.
Il prend en charge diverses décompositions de matrices et fonctions géométriques.
Son écosystème de modules non pris en charge fournit de nombreuses fonctionnalités spécialisées telles que l'optimisation non linéaire, les fonctions matricielles, un solveur polynomial, une FFT, et bien plus encore.
...
Quelqu'un a-t-il une meilleure idée de leurs principales différences et sur quelle base pouvons-nous choisir entre eux ?