octave-bug-tracker
[Top][All Lists]
Advanced

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

[Octave-bug-tracker] [bug #50575] Integer overflow in whos when calculat


From: Colin Macdonald
Subject: [Octave-bug-tracker] [bug #50575] Integer overflow in whos when calculating total elements in sparse matrices
Date: Thu, 23 Aug 2018 13:38:43 -0400 (EDT)
User-agent: Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0

Follow-up Comment #6, bug #50575 (project octave):

Matlab 2014a:


>> [a, maxint] = computer()
a =
GLNXA64
maxint =
   2.8147e+14

>> A = sprand(1e13, 1e7, 1e-15);

>> nnz(A)
ans =
      100000

>> size(A)
ans =
        1e+13        1e+07

>> numel(A)
Warning: Number of elements exceeds maximum flint 2^53-1.
The result may be inaccurate. 
ans =
        1e+20

>> whos
  Name                   Size                     Bytes  Class     Attributes

  A         10000000000000x10000000            81600008  double    sparse    


(Notice they warn in numel when > flintmax.  This seems like a good idea,
especially with 64-bit indexing: I will file different issue.)

Note, they can linear index into such a large matrix, the condition is just
that that linear index itself cannot be larger than maxint:


>> A(10,10)
ans =
   All zero sparse: 1-by-1

>> A(100)
ans =
   All zero sparse: 1-by-1

>> A(1234567)
ans =
   All zero sparse: 1-by-1

>> i = 282*int64(1000)^4 + 123
i =
      282000000000123

>> A(i)
Maximum variable size allowed by the program is exceeded. 


>> # note i is just slightly larger than maxint
>> double(i)
ans =
     2.82e+14
>> maxint
maxint =
   2.8147e+14



    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?50575>

_______________________________________________
  Message sent via Savannah
  https://savannah.gnu.org/




reply via email to

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