I like Marco's approach best of all. Many of us are looking less for a sparse linear algebra engine and more for an efficient C++ replacement of Matlab in digital signal processing and signal simulation. What if, as we were going forward, and wrestled with design questions (ex: vectors as rows or cols), we asked ourselves: What would Matlab do?
To expand the use of uBLAS in digital signal processing, what I suggest is:
* A clean interface to Fast Fourier Transforms. This implies the need to support operations that only really make sense for complex arguments like absolute value squared and arg().
* A clean way to generate sequences of uniform and Gaussian random numbers.
* Better support for element-by-element multiplication and division. If I go as far as to suggest that we overload operator*() and oprerator/() for this, will I be burned at the stake? The rationale for using prod() for the actual b = A * x and the overload for C = A .* B is that the latter is really a much simpler operation, and it is likely to be used many many times in the same equation.
In the short term, I may just Fork Marco's stuff and start migrating these pieces from our own work to his.
Sean Reilly
Sent from my iPad