octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From: Ed Meyer
Subject: Re: [Pkg-octave-devel] Bug#706376: octave: sparse matrix n*2^16
Date: Mon, 29 Apr 2013 11:50:12 -0700



On Mon, Apr 29, 2013 at 11:07 AM, Jordi Gutiérrez Hermoso <address@hidden> wrote:
On 29 April 2013 14:00, Jordi Gutiérrez Hermoso <address@hidden> 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.

I'm not proposing using anything but octave_idx_type for indexing or changing
the return type of numel() - I just question why numel() is used for sparse matrices.
It should be irrelevant for anything but ccs2full().
Rather than restrict the size of sparse matrices I think it would make more sense
to fix problems like this as they come up so that sparse storage is used as it
was intended - to reduce storage & op count.

--
Ed Meyer

reply via email to

[Prev in Thread] Current Thread [Next in Thread]