Boost logo

Boost :

From: Toon Knapen (toon.knapen_at_[hidden])
Date: 2001-12-06 11:29:47


jhrwalter wrote:

>>Does the sparse matrix also support COO (coordinate) and
>>most important CSC (compressed sparse row or Harwell-Boeing)
>>format ?
>
> No. Our base containers vector, matrix, sparse_vector and
> sparse_matrix were designed to use std::vector and std::map as
> storage and prove interoperability. CRS and CCS storage formats have
> to be implemented. With regard to COO I'm unsure.
>

I've been looking at the code to see how COO and CSC could be added.

As for the COO, you are right that it is not necessary. The current
compressed_array could be used. Most important though is that we prefer
to first construct the structure of the matrix and later fill in the
values. The speedup by constructing the structure first exactly comes
from that the internal array do not need to be sorted the whole time.
Where you sort the compressed_array now the whole time, I would like to
delay this sorting. This way it's more efficient.

After having built up the structure, the matrix would also need a
constructor that takes the structure as an argument (not only as a
template argument).

An option would be to add some members to work in non-sorted mode. For
instance a member function add_nnz(size_type, size_type) or just
add_nnz(size_type) that would add the entry but not force that data_
would be sorted as a post-condition. When the structure is used to
construct another structure (like CSC) or used within a matrix
constructor, the sort would be triggered. This sort can also be
triggered by any call to any of the other member functions of the
object but this might be inefficient.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk