Sono abituato a Eigen per quasi tutta la mia opera di algebra lineare matematica. Recentemente, ho scoperto che Boost fornisce anche una libreria di classi template C++ che fornisce la libreria di algebra lineare di base (Boost::uBLAS). Questo mi ha fatto chiedere se riesco a ottenere tutto il mio lavoro basandomi solo su boost dato che è già una libreria importante per il mio codice.Boost :: uBLAS vs Eigen
Uno sguardo più da vicino sia in realtà non mi ha fatto una distinzione più chiara tra di loro:
- boost :: uBLAS:
uBLAS fornisce classi su modelli C++ per denso, dell'unità e vettori sparsi, matrici dense, identitarie, triangolari, a bande, simmetriche, eremitiche e sparse. Le viste in vettori e matrici possono essere costruite tramite intervalli, sezioni, classi dell'adattatore e matrici indirette. La libreria copre le solite operazioni di algebra lineare di base su vettori e matrici: riduzioni come norme diverse, addizione e sottrazione di vettori e matrici e moltiplicazione con prodotti scalari, interni ed esterni di vettori, prodotti a matrice e matrice e risolutore triangolare.
...
- Eigen:
Supporta tutte le dimensioni della matrice, dalle piccole matrici di dimensione fissa per arbitrariamente grandi matrici dense, e anche matrici sparse.
Supporta tutti i tipi numerici standard, inclusi std :: complex, interi ed è facilmente estendibile ai tipi numerici personalizzati.
Supporta varie scomposizioni della matrice e caratteristiche geometriche.
L'ecosistema di moduli non supportati offre molte funzioni specializzate come l'ottimizzazione non lineare, le funzioni di matrice, un risolutore polinomiale, FFT e molto altro.
...
Qualcuno ha una migliore idea circa le loro differenze fondamentali e sulla cui base possiamo scegliere tra loro?
Eigen utilizza anche modelli di espressioni. –
@quant_dev l'ho reso più chiaro. – kangshiyin
Si noti che questi benchmark sono piuttosto vecchi (dal 2011) e non indipendenti. –