Andrew,
Sure. And, I find it hilarious that they are not assummed as of the basic linear algebraic project.
Not really.
The reason is that while there is only one "obvious" way to multiply two general matrices (taking shortcuts for matrices which exhibit certain structure), but given a general matrix, it's often not "obvious" how to invert it, or even if inverting it is a good idea.
Assuming it is...
Gaussian elimination, LU decomposition and Cramer's rule (to name but three) are all ways to invert a general matrix, each of which has different efficiency and stability properties, and which return different answers on the same floating point hardware.
Yeap, I'm remembering things... :(
This means that if you want to invert a matrix, you have to pick an algorithm appropriate to your problem.
And that's, AFAIK, what Policy-Based Design (PBD) is for.
It's therefore impossible to supply an operation of the form inverse(m) which is generally useful.
But this is possible: (Assuming that the design is PBD) inverse<crammer>(m);
I can't speak for the developers of uBLAS (or BLAS, for that matter), but the philosophy seems to be that if there's more than one possible algorithm for something, and using different algorithms make sense under different circumstances, and it's not obvious how to choose between those ways automatically (e.g. using iterator categories or the like), then it's not "basic".
Sorry, but I'm not with you at all. In fact, I'm about to give the same answer I gave to Yoann; BLAS, generally, stands for "basic linear algebraic" algorithms, and not for "basic algoirthms" of "linear algebra". Got the point? Am I right? Or, am I missing anything? Wishes, --Hossein ___________________________________________________________ ALL-NEW Yahoo! Messenger - all new features - even more fun! http://uk.messenger.yahoo.com