From: walter_at_[hidden]
Date: 2001-03-28 15:34:48


Hi Jeremy,

you wrote:

> I've taken a quick look at your matrix library. You and Mathias
have done
> a nice job!

Thanks.

> I have some trivial differences of opinion about parts of the
interface,
> but much of the design looks right. Since this is a prototype, I
won't
> comment on too many implementation details, though one particular
gotcha
> caught my attention: at least some of the iterators were not std
> conformant.

Standard conformance currently seems not to be as important as other
things :-).
We have to check that.

> Perhaps using the iterator_adaptor library would provide an
> easy route to providing complete iterators.

We'll surely have to look at that library.

> The functions whose names end in "1" or "2" like size1(), size2(),
and
> begin1(), begin2(). This naming scheme was not intuitive to me.

Counted by dimension (or rank?). In an older version they were called
row_size and column_size (as one would expect?). But how would you
name them in a generalization to a rank-3 tensor for example?

> Also, your matrix class almost has a container-of-container
interface, but
> not quite. Why not go all the way?

We did not pay too much attention to the container-of-container
interface. The motivation was to get some compatibility with C-array
indexing. Using that interface could be more expensive than using
operator (). But to be sure: which functionality is missing?

> Hmmm, brainstorming with Ron here. I'm wondering if the
> dense-matrix-as-a-data-structure interface should just be the exact
same
> interface as a 2-D multi_array... the only difference would be that
the
> matrix class would inherit from matrix_expression so that it would
have
> all the basic linear algebra operations (thereby fullfilling the
> matrix-in-a-linear-algebra interface). Similarly for vector.

Agreed, there certainly should be as much compatibility as possible
between a matrix and a multi-array library.

> Did you provide only left scalar multiplication on purpose, or
> where you planing on adding right mult as well?

It's intended. This is the way we learn linear algebra in Germany :-
). The matrix vector product is currently also only implemented as
left multiplication. This seems to be more problematical.

> Have you had any thoughts about how things would extend to sparse
> matrices?

Yep. We hope to be able to modify iterators and evaluations to
utilize sparsity.

Best regards

Joerg Walter