Mercurial > jwe > octave
changeset 21041:63374982750b
Usage of corresponding value extractor for octave_idx_type. Improves support
for large matrices in 64 bit builds, e.g. calls of "size" and large sparse
matrix creation.
* libinterp/corefcn/daspk.cc(daspk_user_function): Use idx_type_value ().
* libinterp/corefcn/data.cc(diag,size): Use idx_type_value ().
* libinterp/corefcn/rand.cc(do_rand): Use idx_type_value ().
* libinterp/corefcn/tril.cc(do_trilu): Use idx_type_value ().
* libinterp/corefcn/utils.cc(get_dimensions): Use idx_type_value ().
* libinterp/dldfcn/qr.cc(qrshift): Use idx_type_value ().
author | Kai T. Ohlhus <k.ohlhus@gmail.com> |
---|---|
date | Wed, 06 Jan 2016 18:04:02 +0100 |
parents | 3e7cfee5f786 |
children | 0967e2393386 |
files | libinterp/corefcn/daspk.cc libinterp/corefcn/data.cc libinterp/corefcn/rand.cc libinterp/corefcn/tril.cc libinterp/corefcn/utils.cc libinterp/dldfcn/qr.cc |
diffstat | 6 files changed, 16 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/daspk.cc Tue Jan 05 14:16:58 2016 -0800 +++ b/libinterp/corefcn/daspk.cc Wed Jan 06 18:04:02 2016 +0100 @@ -96,7 +96,7 @@ retval = tmp(0).vector_value (); if (tlen > 1) - ires = tmp(1).int_value (); + ires = tmp(1).idx_type_value (); if (retval.is_empty ()) gripe_user_supplied_eval ("daspk");
--- a/libinterp/corefcn/data.cc Tue Jan 05 14:16:58 2016 -0800 +++ b/libinterp/corefcn/data.cc Wed Jan 06 18:04:02 2016 +0100 @@ -1367,7 +1367,7 @@ retval = args(0).diag (); else if (nargin == 2) { - octave_idx_type k = args(1).xint_value ("diag: invalid argument K"); + octave_idx_type k = args(1).xidx_type_value ("diag: invalid argument K"); retval = args(0).diag (k); } @@ -1378,8 +1378,8 @@ if (arg0.ndims () != 2 || (arg0.rows () != 1 && arg0.columns () != 1)) error ("diag: V must be a vector"); - octave_idx_type m = args(1).xint_value ("diag: invalid dimensions"); - octave_idx_type n = args(2).xint_value ("diag: invalid dimensions"); + octave_idx_type m = args(1).xidx_type_value ("diag: invalid dimensions"); + octave_idx_type n = args(2).xidx_type_value ("diag: invalid dimensions"); retval = arg0.diag (m, n); } @@ -2783,7 +2783,7 @@ } else if (nargin == 2 && nargout < 2) { - octave_idx_type nd = args(1).xint_value ("size: DIM must be an integer"); + octave_idx_type nd = args(1).xidx_type_value ("size: DIM must be an integer"); const dim_vector dv = args(0).dims ();
--- a/libinterp/corefcn/rand.cc Tue Jan 05 14:16:58 2016 -0800 +++ b/libinterp/corefcn/rand.cc Wed Jan 06 18:04:02 2016 +0100 @@ -259,7 +259,10 @@ for (int i = 0; i < nargin; i++) { - octave_idx_type elt = args(idx+i).xint_value ("%s: dimension must be a scalar or array of integers", fcn); + octave_idx_type elt = + args(idx+i).xidx_type_value ( + "%s: dimension must be a scalar or array of integers", + fcn); // Negative dimensions treated as zero for Matlab compatibility dims(i) = elt >= 0 ? elt : 0;
--- a/libinterp/corefcn/tril.cc Tue Jan 05 14:16:58 2016 -0800 +++ b/libinterp/corefcn/tril.cc Wed Jan 06 18:04:02 2016 +0100 @@ -200,7 +200,7 @@ octave_idx_type k = 0; if (nargin == 2) - k = args(1).int_value (true); + k = args(1).idx_type_value (true); octave_value arg = args(0);
--- a/libinterp/corefcn/utils.cc Tue Jan 05 14:16:58 2016 -0800 +++ b/libinterp/corefcn/utils.cc Wed Jan 06 18:04:02 2016 +0100 @@ -1121,7 +1121,7 @@ if (a.is_scalar_type ()) { dim.resize (2); - dim(0) = a.int_value (); + dim(0) = a.idx_type_value (); dim(1) = dim(0); } else @@ -1149,7 +1149,7 @@ { if (a.is_scalar_type ()) { - nr = nc = a.int_value (); + nr = nc = a.idx_type_value (); } else { @@ -1172,9 +1172,9 @@ const char *warn_for, octave_idx_type& nr, octave_idx_type& nc) { nr = a.is_empty () - ? 0 : a.int_value ("%s: row dimension must be a scalar", warn_for); + ? 0 : a.idx_type_value ("%s: row dimension must be a scalar", warn_for); nc = b.is_empty () - ? 0 : b.int_value ("%s: column dimension must be a scalar", warn_for); + ? 0 : b.idx_type_value ("%s: column dimension must be a scalar", warn_for); check_dimensions (nr, nc, warn_for); }
--- a/libinterp/dldfcn/qr.cc Tue Jan 05 14:16:58 2016 -0800 +++ b/libinterp/dldfcn/qr.cc Wed Jan 06 18:04:02 2016 +0100 @@ -1348,8 +1348,8 @@ if (! check_qr_dims (argq, argr, true)) error ("qrshift: dimensions mismatch"); - octave_idx_type i = argi.int_value (); - octave_idx_type j = argj.int_value (); + octave_idx_type i = argi.idx_type_value (); + octave_idx_type j = argj.idx_type_value (); if (! check_index (argi) || ! check_index (argj)) error ("qrshift: invalid index I or J");