
Ublas : 
From: Andreas Klöckner (kloeckner_at_[hidden])
Date: 20050322 08:24:25
Hi Michael,
Michael Stevens schrieb:
> I was thinking of how to describe how the two index arrays are built and the
> invariant that 'complete_index1_data' enforces. That is to say if we keep the
> implementation where index1 may be incomplete we should somewhere document
> it.
A while ago, I tried to change compressed_matrix<> to always have a
complete index1 array. It occurred to me that this ruins the complexity
guarantees of the push_back() and pop_back() methods, since then, upon
each insertion, the filled remainder of the index1 array needs to be
updated. These methods are important if you're building a
compressed_matrix from a known and presorted storage pattern, which
should be lineartime.
As a consequence, I'm not so sure any more that enforcing said invariant
is a good idea.
> Do you know if any other compressed matrix libraries yield similarly
> incomplete index1 array?
I know of none.
> I have committed the the operation.hpp patch.
It seems to me you changed the upper loop boundary to "filled1 ()" from
my patch, which said "filled1 ()  1". I believe your change is
incorrect: The loop needs to iterate over each row of the matrix.
index1_data_ has one more entry than the matrix has rows. The leftover
entry is used to find the end of the last row.
I've attached a patch to fix this (compressedaxpy20050322.patch).
The patch also fixes the premultiply (axpy_prod(x, A, ...)) case which I
had previously forgotten and adds a missing "return v;" that was missing
from Gunter's recent coordinate_matrix axpy_prod patch.
I've also attached an updated patch against matrix_sparse.hpp
(completeindex120050322.patch) that adds a fixed, nonconst version
of complete_index1_array to compressed_matrix. The corresponding
bindings patch is compressedbindings20050322.patch.
All patches are against CVS as of today.
Andreas
 + Dipl.Math. techn. Andreas Klöckner  FON +49 721 6087982 Institut für Angewandte Mathematik II  FAX +49 721 6086679 Universität Karlsruhe  EMAIL kloeckner_at_[hidden] Englerstraße 2  76128 Karlsruhe  RAUM 022 Germany  Kollegiengebäude Mathematik +