$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: lums_at_[hidden]
Date: 2001-03-14 09:31:44
--- In boost_at_y..., "David Abrahams" <abrahams_at_m...> wrote:
> So, "Matrix Template Library" is a misnomer?
Touche'! Yes, the name was picked when I was still giddy after
learning about the STL and slowly learning about generic programming
general. It was also named before our concept hierarchy was very
well defined.
> Okay, but what use is a matrix library without easy-to-use/build
linear
> algebra operations? That is, why would anyone want to make an "array
> library" as you define the term?
Lots of uses I would imagine. C++ has built-in arrays (and
valarray), after all, that people use for lots of things. Some
scientific things would include representing regularly discretized
domains. What I was getting at here is that the empasis (in my mind)
of an array library is storage and data manipulation. The emphasis
in a linear algebra library is in the (abstract) linear algebra
operations. One would certainly build a linear algebra library on
top of an array library.
> > I have spent a good part of my professional career thinking about
> > these issues and they are quite non-trivial when you really start
> > digging into them. It does not seem difficult at first -- and
> > indeed, the world is full of not-very-good "matrix libraries"
because
> > they are so easy to construct. Most such libraries I would not
call
> > linear algebra libraries because most such libraries do not have
any
> > kind of conceptual analysis of the linear algebra problem domain
(so
> > I use the name "matrix library").
>
> Can you try to make this a bit more concrete? Examples
> illustrating/contrasting the strengths of each type of library
would help a
> lot.
An array library is primarily concerned with storage, data layout,
data manipulation. It's operations would primarily be geared towards
data access, providing views of the data, re-organizing the data.
A linear algebra library would be concerned with mathemetically based
concepts and linear algebra operations using those concepts. For
instance you would have an operation in a linear algebra library that
looks like:
template <class LinearOperator, class VectorSpaceX, class
VectorSpaceY>
apply(LinearOperator A, VectorSpace x, VectorSpace y)
where this realizes y <- A*x
This provides linear algebra functionality -- arrays are nowhere to
be found. In fact, if A is sparse, it will be a matrix, but it won't
be a rectangular 2D array. A might not be an explicitly represented
matrix of any kind -- it could simply be a function that returns the
result A*x without using a stored matrix (e.g., a matrix-free
operator).
Is this answering your question?
These definitions are just one attempt and there are certain to be
other interpretations.