Saya telah mengumpulkan yang berikut dari riset online sejauh ini:
Saya telah menggunakan Armadillo sedikit, dan menemukan antarmuka cukup intuitif, dan mudah untuk menemukan paket biner untuk Ubuntu (dan saya mengasumsikan distro Linux lainnya). Saya belum mengkompilasinya dari sumber, tetapi harapan saya adalah itu tidak akan terlalu sulit. Itu memenuhi sebagian besar kriteria desain saya, dan menggunakan aljabar linier padat. Itu bisa memanggil rutinitas LAPACK atau MKL. Biasanya tidak perlu mengkompilasi Armadillo, itu adalah pustaka berbasis template murni: Anda hanya menyertakan header dan tautan ke BLAS / LAPACK atau MKL dll.
Saya pernah mendengar hal-hal baik tentang Eigen , tetapi belum pernah menggunakannya. Ini diklaim cepat , menggunakan templating, dan mendukung aljabar linier padat. Itu tidak memiliki LAPACK atau BLAS sebagai ketergantungan, tetapi tampaknya mampu melakukan semua yang dapat dilakukan LAPACK (ditambah beberapa hal yang tidak bisa LAPACK). Banyak proyek menggunakan Eigen, yang menjanjikan. Ini memiliki paket biner untuk Ubuntu, tetapi sebagai pustaka header-saja itu sepele untuk digunakan di tempat lain juga.
The Matrix Template Library versi 4 juga tampak menjanjikan, dan menggunakan template. Ini mendukung aljabar linier yang padat dan jarang, dan dapat memanggil UMFPACK sebagai pemecah yang jarang. Fiturnya agak tidak jelas dari situs web mereka. Ini memiliki paket biner untuk Ubuntu, dapat diunduh dari situs web mereka.
PETSc , yang ditulis oleh sebuah tim di Argonne National Laboratory, memiliki akses ke pemecah linear yang jarang dan padat, jadi saya berasumsi bahwa itu dapat berfungsi sebagai perpustakaan matriks. Ini ditulis dalam C, tetapi memiliki binding C ++, saya pikir (dan bahkan jika tidak, memanggil C dari C ++ tidak ada masalah). Dokumentasinya sangat menyeluruh. Paket ini sedikit berlebihan untuk apa yang ingin saya lakukan sekarang (perkalian dan pengindeksan matriks untuk mengatur program linear bilangan bulat), tetapi dapat berguna sebagai format matriks untuk saya di masa depan, atau untuk orang lain yang memiliki kebutuhan berbeda daripada saya.
Trilinos , yang ditulis oleh tim di Sandia National Laboratory, menyediakan antarmuka C ++ berorientasi objek untuk matriks padat dan jarang melalui komponen Epetra-nya, dan antarmuka templated untuk matriks padat dan jarang melalui komponen Tpetra-nya. Ini juga memiliki komponen yang menyediakan fungsi linear solver dan eigensolver. Dokumentasi tampaknya tidak dipoles atau menonjol seperti PETSc; Trilinos sepertinya analog Sandia dari PETSc. PETSc dapat memanggil beberapa pemecah Trilinos. Binari untuk Trilinos tersedia untuk Linux.
Blitz adalah pustaka berorientasi objek C ++ yang memiliki binari Linux. Tampaknya tidak dipelihara secara aktif (2012-06-29: versi baru baru saja muncul kemarin!), Meskipun milis aktif, jadi ada beberapa komunitas yang menggunakannya. Tampaknya tidak melakukan banyak hal dalam aljabar linear numerik di luar BLAS, dan tampak seperti perpustakaan matriks padat. Itu menggunakan template.
Boost :: uBLAS adalah pustaka berorientasi objek C ++ dan bagian dari proyek Boost. Ini mendukung templating dan aljabar linear numerik yang padat. Saya pernah mendengar itu tidak terlalu cepat.
The Template numerik Toolkit adalah C ++ library berorientasi objek yang dikembangkan oleh NIST. Penulisnya, Roldan Pozo, tampaknya memberikan kontribusi tambalan sesekali, tetapi tampaknya tidak lagi dalam pengembangan aktif (pembaruan terakhir adalah 2010). Ini berfokus pada aljabar linier yang padat, dan menyediakan antarmuka untuk beberapa dekomposisi matriks dasar dan pemecah nilai eigen.
Elemental , yang dikembangkan oleh Jack Poulson, adalah paket perangkat lunak aljabar linier padat dengan memori terdistribusi (paralel) yang ditulis dengan gaya yang mirip dengan FLAME . Untuk daftar fitur dan latar belakang proyek, lihat dokumentasinya . FLAME sendiri memiliki pustaka terkait untuk aljabar linier padat berurutan dan berbagi-memori, yang disebut libflame , yang tampaknya ditulis dalam objek-berorientasi C. Libflame terlihat sangat mirip LAPACK, tetapi dengan notasi yang lebih baik yang mendasari algoritma untuk membuat pengembangan numerik cepat perpustakaan aljabar linear lebih merupakan sains dan lebih sedikit dari seni hitam.
Ada perpustakaan lain yang dapat ditambahkan ke daftar; jika kita menghitung paket aljabar linier yang jarang sebagai "pustaka matriks", yang gratis terbaik yang saya ketahui di C adalah SuiteSparse , yang diprogram dalam gaya berorientasi objek. Saya telah menggunakan SuiteSparse dan merasa cukup mudah untuk mengambilnya; itu tergantung pada BLAS dan LAPACK untuk beberapa algoritma yang menguraikan masalah-masalah yang jarang menjadi banyak sub-masalah kecil, aljabar linier yang padat. Penulis utama paket ini, Tim Davis, sangat membantu dan seorang pria yang hebat.
The Harwell Subroutine Perpustakaan terkenal karena jarang rutinitas aljabar linear mereka, dan gratis untuk pengguna akademis, meskipun Anda harus melalui proses ini mengisi formulir dan menerima e-mail untuk setiap file yang ingin Anda download. Karena subrutin sering kali memiliki dependensi, menggunakan satu solver mungkin perlu mengunduh lima atau enam file, dan prosesnya bisa agak membosankan, terutama karena bentuk persetujuannya tidak instan.
Ada juga pemecah aljabar linier lain yang jarang, tetapi sejauh yang saya tahu, MUMPS dan paket lainnya sebagian besar terfokus pada solusi sistem linear, dan menyelesaikan sistem linear adalah yang paling tidak menjadi perhatian saya saat ini. (Mungkin nanti, saya akan membutuhkan fungsionalitas itu, dan itu bisa bermanfaat bagi orang lain.)