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, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk