Javadoc
A sparse matrix implementation. This stores the data in two formats: The
first is as an array of sparse vectors for each row. This format is easy to
modify (see the set* methods), but slow to operate on due to each element
being dispersed to different locations in memory. The second is the
compressed Yale format (see
http://en.wikipedia.org/wiki/Sparse_matrix#Yale_format). This format densely
packs the values into arrays of double -- permitting fast computation, but
difficult and costly modification. This switches between the formats as
necessary (to Yale when multiplying, to sparse vector when altering), so it
is recommended that computation calls not be interleaved with modification
calls unnecessarily.
At present, this class extends SparseMatrix to leverage the serial
implementations for all methods not-yet parallelized. The parallelized
operations perform their work in parallel, but can't be called
asynchronously. That is, the caller can't call "times(Vector)" and then do
other work in parallel while waiting for the result. If you were to do so and
called any methods that affected this matrix or the input vector, the results
of the multiply could go very wrong.