OONSTD: library partitions

E. Robert Tisdale (edwin2@gte.net)
Thu, 03 Sep 1998 08:19:48 +0000

Application programmers probably should not expect every library developer
to provide all of the numerical methods which they require and
library developers probably should not expect every application programmer
to purchase all of the numerical methods which they offer.
The library must be partitioned so that library developers can isolate
those parts which they can support and their customers are willing buy.
I have attached a table which outlines how the library might be partitioned.
There is nothing really special about these partitions.
The chapters listed in the table of contents
from any good text on numerical methods might serve just as well.
What is important is how the partitions depend upon each other.
Ideally, the partitions would be chosen so that
the methods are all as independent of each other as possible
and meet all of the applications programmer's requirements
with a minimum number of partitions.
Of course, no one could really know how to do this correctly
so it is probably best just to choose partitions that appear
to have some sort of logical order to them.

The scalar, vector, matrix and tensor classes are the basis
for all of the other library partitions.
Some elaboration on the basic SVMT classes may be required
to support useful features like Fortran style arrays,
non-zero based indexing, etc.
The linear algebra partition might introduce square matrix
and decomposition classes to solve linear systems for example.
A square matrix would be derived from a matrix and
a Cholesky decomposition might be initialized from a square matrix
so the linear algebra partition depends upon the SVMT partition.

Bob Tisdale <edwin2@gte.net>

suggested standard C++ numerical class library partitions
---------------------------------------------------------
svmt basics
svmt elaboration
linear algebra
decompositions
system solvers
random number generators
numerical integration
ode solvers
pde solvers
signal processing
transformations
Fourier
wavelet
convolutions
correlations
filters
image processing
stencils
linear programming
non-linear optimization
statistics and modeling

tool boxes
neural networks
economics and finance
.
.
.