Boost logo

Boost :

From: David Abrahams (abrahams_at_[hidden])
Date: 2001-03-12 19:53:47


----- Original Message -----
From: <walter_at_[hidden]>

> 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
rank 2.
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
way :-)

> 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...
>
> -compatibility
> 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.

-Dave


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk