@Article{Bientinesi:2005:RLA, author = "Paolo Bientinesi and Enrique S. Quintana-Ort\'{i} and Robert A. van de Geijn", title = "Representing Linear Algebra Algorithms in Code: The {FLAME} Application Programming Interfaces", journal = "{ACM} Transactions on Mathematical Software", volume = "31", number = "1", month = mar, year = "2005", pages = "27--59", URL = "http://doi.acm.org/10.1145/1055531.1055533", abstract = "In this paper, we present a number of Application Program Interfaces (APIs) for coding linear algebra algorithms. On the surface, these APIs for the MATLAB M-script and C programming languages appear to be simple, almost trivial, extensions of those languages. Yet with them, the task of programming and maintaining families of algorithms for a broad spectrum of linear algebra operations is greatly simplified. In combination with our Formal Linear Algebra Methods Environment (FLAME) approach to deriving such families of algorithms, dozens of algorithms for a single linear algebra operation can be derived, verified to be correct, implemented, and tested, often in a matter of minutes per algorithm. Since the algorithms are expressed in code much like they are explained in a classroom setting, these APIs become not just a tool for implementing libraries, but also a valuable tool for teaching the algorithms that are incorporated in the libraries. In combination with an extension of the Parallel Linear Algebra Package (PLAPACK) API, the approach presents a migratory path from algorithm to MATLAB implementation to high-performance sequential implementation to parallel implementation. Finally, the APIs are being used to create a repository of algorithms and implementations for linear algebra operations, the FLAME Interface REpository (FIRE), which already features hundreds of algorithms for dozens of commonly encountered linear algebra operations.", }