Andrew,
The purpose of Policy-Based Design, as I understand it, is to cleanly separate mechanism and policy, even in places where mechanism needs to call on policy. In the case of inverting matrices, policy can be perfectly well implemented as a layer above (e.g. LAPACK), so BLAS doesn't need to know about it.
Seems perfectly reasonable.
BLAS officially stands for Basic Linear Algebra Subprograms. A little history might help here. (Note: I've taken liberties with the "history" that follows, because I'm not a historian and the purpose of what follows is not to be an accurate chronicle, but rather to talk about the purpose of BLAS.)
I see.
BLAS dates from the early days of numeric supercomputing. Supercomputers have various capabilities (vector pipelines and so forth) which are not easily used by a compiler for a general-purpose language like Fortran. A lot of research has gone into automatically finding opportunities to use these hardware features with varying degrees of success, but no real guarantees.
So rather than wait for Sufficiently Smart Compilers to appear, people used a standard library instead. This library is BLAS. Supercomputer vendors might ship their own version BLAS, tuned to take advantage of the available hardware and do the rest in software. In other words, BLAS is really, really Basic.
And that's basic in the sense of algorithms, not the sense of linear algebra. I think, I got it. Thanks! :) Sorry, I'm in a hurry for going lunch. I'll be back afterwards. Best Wishes, --Hossein ___________________________________________________________ ALL-NEW Yahoo! Messenger - all new features - even more fun! http://uk.messenger.yahoo.com