From: David Abrahams (abrahams_at_[hidden])
Date: 2001-03-12 19:53:47
----- Original Message -----
> You are not alone ;-). We are currently developing a matrix library
> targeted mainly to implement classical numerical procedures the
> object oriented way.
> One important question at the beginning was, whether we should try to
> support rank-n tensors like Blitz++ and POOMA. We decided not to.
What factors influenced that decision?
In most of the work I anticipate doing, I won't need anything bigger than
That might be reason enough to limit the scope.
> I currently see the following points to discuss when developing a
> matrix library:
> - support for mathematical notation
> As Toon Knapen mentioned, one should be able to write expressions
> with vectors and matrices in a form like y = A * x + b.
Check. Regarding the inner-/outer- product issue, I recall seeing a post
somewhere about simulating new operators (e.g. exponentiation) with a
notation like this:
A *exp* B
It's not crazy to imagine *inner* and *outer*. Of course we might need to
use 2 separate namespaces for the different defaults of plain operator* ;-(.
> - efficiency
> Next point is, that a matrix library has to compare with existing
> libraries wrt performance. So first one has no other option than to
> support expression templates. This eventually involves the need to
> incorporate a meta meta method like PETE to generate templates in C++!
We might consider hijacking PETE ourselves. That's why they wrote it that
> But this does not seem to be the whole story. As far as I understand
> Todd Veldhuizen's Blitz++, one has to implement very clever
> evaluation kernels to get the most out of the box.
That's my understanding also.
> - functionality
> We restricted our interest to support BLAS like functionality. But
> who knows, what else one can do with matrices and vectors...
> This is an interesting question: should a boost matrix library run
> under MSVC for example?
It's tempting to try since MSVC actually generates very good machine code.
At the same time, I think its limited template capability put serious
expression template work beyond its reach.
Boost list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk