[Pkg-octave-devel] Bug#706376: Bug#706376: octave: sparse matrix n*2^16

Jordi Gutiérrez Hermoso jordigh at octave.org
Mon Apr 29 18:00:25 UTC 2013

On 29 April 2013 13:21, Ed Meyer <eem2314 at gmail.com> wrote:
> On Mon, Apr 29, 2013 at 9:47 AM, Jordi Gutiérrez Hermoso
> <jordigh at octave.org> wrote:
>> All matrices need to be linearly indexable, and of course, this is how
>> they are actually stored in memory, as a single long array indexed by
>> a single index. Thus, the total number of indexable elements of a
>> matrix can't be larger than
>> std::numeric_limits<octave_idx_type>::max().
>> There could be some tricks we could do to relax this requirement for
>> sparse matrices, but it would require some pretty deep surgery of the
>> current code.

> true for full matrices but sparse matrices are stored as three arrays and
> the nonzero
> and row index arrays are the only ones that need be limited. So you are
> saying that
> sparse matrices are treated as full in some places?

No, the issue is that *all* indices are limited to octave_idx_type. We
would have to do some sort of deep surgery to introduce a special
indexing type for sparse matrices only. It seems like a lot of work
for potentially little benefit.

And yes, sparse matrices can be indexed by a single index instead of
two, like any other matrix. Internally in Octave's source, the
assumption that a single index of octave_idx_type is available is used

- Jordi G. H.

More information about the Pkg-octave-devel mailing list