Boost logo

Glas :

[glas] status

From: Karl Meerbergen (Karl.Meerbergen_at_[hidden])
Date: 2006-05-30 07:05:29

  Hello all,

It is a long time that (Toon and) I posted some news about the on-going
work. Currently, there is documentation, code and test code for basic
vector containers (dense_vector, mapped_vector and sparse_vector) in GLAS.

We have chosen to start the development of prototype algorithms:
norm_2 : prototype of algorithms with a single vectorexpression argument
that return a scalar result
dotu (and dotc) : prototype of algorithms with 2 vectorexpression
arguments, returning a scalar result
collection *= scalar : prototype of function on a collection and scalar,
with a void result
vectorexpression * scalar : prototype of function with vector and scalar
argument returning an expression result type
collection += vectorexpression (prototype of function of a collection
and a vectorexpression)

Implementations for GLAS (using indexed loops on collections, i.e. using
v[i]), BLAS and VSIPL backends.

At this stage, there are no views such as ranges or slices. Also, the
assignment policies we talked about earlier are not developed (or
documented) yet.

Toon will shortly upload all changes on the website.

The file glas/doc/concepts/overview.dia gives a clean overview of the

for checking out, please use subversion:
svn checkout

I think, we are on the right track. Before continuing the development of
other algorithms we want to make sure that doc and code are consistent
and complete for the algorithms and containers that are there.

Note that the core does not contain operators such as +=, *, etc. Some
of those are defined in the toolbox LA, which is still far from
complete. Recall that there was no agreement on the list on the meaning
of operations. This is application dependent and operators are therefore
defined in toolboxes as are other functions (recall the inner_product

We have tried to make the organisation of the documentation consistent
between concepts and core models and algorithms. The concepts are used
for dispatching the algorithms; e.g. the meta function
is_sparse_vector_expression<V> checks whether V is a
SparseVectorExpression. Each VectorExpression and VectorCollection has a
concept type that is a boost::mpl::vector containing the concepts it is
model of. I still regularly find errors in the doc or inconsistencies
between doc and code, so this also needs to be fixed and tidied up
before adding new containers, views and algorithms.