[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:07:34 UTC 2013

On 29 April 2013 14:00, Jordi Gutiérrez Hermoso <jordigh at octave.org> wrote:
> 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
> throughout.

The specific case where this fails in this instance is octave_idx_type
dim_vector::numel (), which is obtained simply by multiplying each of
the dimensions of the matrix, even for sparse matrices (this is unlike
nnz, so a workaround just for trace.m would be to use nnz instead of
numel, but I think this would still leave some pretty broken sparse
matrices lying around with other problems).

We would have to change numel () to use some other type that can hold
the result of a larger size, but this is a pretty fundamental function
in Octave. The overall assumption is that you can linearly index up to
numel (). Every place that calls this function would need to be
checked to see what happens if we change its return type to be some
special bigint.

- Jordi G. H.

More information about the Pkg-octave-devel mailing list