 # Boost :

From: Jeremy Siek (jsiek_at_[hidden])
Date: 2001-03-16 17:46:41

I'm glad to see the interest growing at Boost for numeric libraries!

As others have mentioned, there are many sub-domains within numerics.
Solving systems of linear equations, i.e., Linear Algebra (the one I'm
most familiar with) is just one of the domains. Ideally, some day there
will be Boost libraries that address many of the domains... in places the
various boost numeric libraries will be able to share components and
interfaces, but more often they will provide components with specialized
interfaces that make sense for the particular domain. One of the issues
that has been discussed already is what should the meaning of operator*
be? My answer is that it should have different meanings in different
domains... for the linear algerba domain it should mean matrix
multiplication, but for other domains it should mean something else.

A good first step would be to figure out what numeric sub-domains we are
interested in. The focus should be on what problems people want to solve,
and what algorithms will be needed. The data-structures (matrices, arrays,
etc.) and interfaces to those data-structures will fall out of how we want
to write those algorithms.

For example, in the linear algebra domain the problem is to solve systems
of equations. There are many differents algorithms for accomplishing this,
example of an algorithm is conjugate gradient (CG). The algorithm needs to
perform various operations on elements of a linear space (vectors), things
like dot products, vector norms, applying linear operators (typically
through matrix-vector multiplication). In this way, the problem and
algorithm drive our need for an interface for basic linear-algebra
operations. BTW, this kind of process led to the development of the
original BLAS... they are the basic operations needed in the direct dense
matrix solvers provided by LAPACK.

I'd challenge those interested in boost numerics libraries to come forward
with concrete lists of problems and algorithms for a particular domain.
With those in hand we'll be able to determine scope and priority for
various peices, and it will provide a firmer ground for discussing
interface and implementation issues.

Personally, I'll contribute to the list of algorithms for the