I started this random/accumulating blog towards a final comprehensive review of the software computing utilities for linear algebra. -DZ
Linear algebra has wide applications in many scientific and engineering fields. Users of linear algebra may only know some basic operations and concepts, but that does not prevent them from using linear algebra correctly and effectively, thanks to those mathematicians and programmers who wrap the maths into easy to use software. Professor Jack Dongarra has given a detailed comparison of a handful of software packages here, so this blog has no intention to repeat a technical review of these and other packages, but to explore the background of some major ones.
Let me start with Matlab, the first entry point of my extensive use of linear algebra, not considering those burdensome homework and recommended exercises from the linear algebra courses I took back in 2004. With no argument, Matlab survives and thrives on its core functionalities for matrix calculation. If you can write any calculation in a matrix form, Matlab is always one of the best choices to do the tedious work for you like a breeze. Of course, Matlab is more useful than that, claiming to be a heavily-fleshed programming language nowadays. The development of the Matlab program consists extensive C coding for the interpreter/compiler, some Perl coding for regex alike stuff, and Java for graphic interfaces (ref). However, if we look back at the linear algebra core, Matlab has more stories to tell. You may want to check out this video first: The Origins of Matlab from MathWork. Basically, Dr. Cleve Barry Moler, the creator of Matlab wrote the program as an interactive calculator on top of his linear algebra software packages, LINPACK and EISPACK, all of them written in Fortran (ref). The adoption of C language only happened in 1983 when Jack Little, the co-founder of MathWork, started to rewrite Matlab for commercialization (ref). So, the linear algebra core is in fact the open-sourced Fortran libraries, LINPACK and EISPACK, and now superseded by LAPACK (ref1, ref2). From a programmer's point of view, who needs linear algebra in her own applications, these *PACK's are more of the gemstones to look for. I, another programmer with the same interest, will explore them and other similar software libraries for the rest.
Relationship between Key People
BLAS/LINPACK/EISPACK ^ | |---key developers of--- | | Cleve Moler --advisor of--> Jack Dongarra | | Jack Little |______| | founders of | V MathWork
Relationship between Packages
[LINPACK/EISPACK (later LAPACK)] --based on--> [BLAS] ---variants--->[GotoBLAS]-->[OpenBLAS] ^ ^ | / | /-------------------------/ uses as drop-in | / [Armadillo]------ [Eigen] (pretty much standalone and fast)
[To be continued]