# HG changeset patch # User Jordi GutiƩrrez Hermoso # Date 1336020603 14400 # Node ID f4acb362b5130c56177a603f0c95e0c22bd2ecc4 # Parent b99cb1b0ee7c7dcf59242c60ac0be45879a8514c# Parent 6250e1232c9cc017fe3d0d87172a3b3a9c873aa0 maint: Periodic merge of stable to default diff -r b99cb1b0ee7c -r f4acb362b513 liboctave/DiagArray2.cc --- a/liboctave/DiagArray2.cc Wed May 02 17:13:56 2012 -0400 +++ b/liboctave/DiagArray2.cc Thu May 03 00:50:03 2012 -0400 @@ -82,16 +82,14 @@ // A two-dimensional array with diagonal elements only. -template -T -DiagArray2::checkelem (octave_idx_type r, octave_idx_type c) const +template +void +DiagArray2::check_idx (octave_idx_type r, octave_idx_type c) const { if (r < 0 || r >= dim1 ()) gripe_index_out_of_range (2, 1, r+1, dim1 ()); if (c < 0 || c >= dim2 ()) gripe_index_out_of_range (2, 2, c+1, dim2 ()); - - return elem (r, c); } template diff -r b99cb1b0ee7c -r f4acb362b513 liboctave/DiagArray2.h --- a/liboctave/DiagArray2.h Wed May 02 17:13:56 2012 -0400 +++ b/liboctave/DiagArray2.h Thu May 03 00:50:03 2012 -0400 @@ -119,15 +119,22 @@ T& dgelem (octave_idx_type i) { return Array::elem (i); } - T checkelem (octave_idx_type r, octave_idx_type c) const; + void check_idx (octave_idx_type r, octave_idx_type c) const; T operator () (octave_idx_type r, octave_idx_type c) const { #if defined (BOUNDS_CHECKING) - return checkelem (r, c); -#else + check_idx (r, c); +#endif return elem (r, c); + } + + T& operator () (octave_idx_type r, octave_idx_type c) + { +#if defined (BOUNDS_CHECKING) + check_idx (r, c); #endif + return elem (r, c); } // No checking. diff -r b99cb1b0ee7c -r f4acb362b513 scripts/statistics/distributions/poissrnd.m --- a/scripts/statistics/distributions/poissrnd.m Wed May 02 17:13:56 2012 -0400 +++ b/scripts/statistics/distributions/poissrnd.m Thu May 03 00:50:03 2012 -0400 @@ -76,7 +76,7 @@ endif if (isscalar (lambda)) - if (lambda > 0 && lambda < Inf) + if (lambda >= 0 && lambda < Inf) rnd = randp (lambda, sz); if (strcmp (cls, "single")) rnd = single (rnd); @@ -87,7 +87,7 @@ else rnd = NaN (sz, cls); - k = (lambda > 0) & (lambda < Inf); + k = (lambda >= 0) & (lambda < Inf); rnd(k) = randp (lambda(k)); endif @@ -118,3 +118,6 @@ %!error poissrnd (ones (2,2), [3, 2]) %!error poissrnd (ones (2,2), 2, 3) +%!assert (poissrnd (0, 1, 1), 0) +%!assert (poissrnd ([0, 0, 0], [1, 3]), [0 0 0]) + diff -r b99cb1b0ee7c -r f4acb362b513 src/ov-base-diag.cc --- a/src/ov-base-diag.cc Wed May 02 17:13:56 2012 -0400 +++ b/src/ov-base-diag.cc Thu May 03 00:50:03 2012 -0400 @@ -82,7 +82,7 @@ if (idx0.is_scalar () && idx1.is_scalar ()) { - retval = matrix.checkelem (idx0(0), idx1(0)); + retval = matrix.elem (idx0(0), idx1(0)); } else { diff -r b99cb1b0ee7c -r f4acb362b513 src/ov-cx-diag.cc --- a/src/ov-cx-diag.cc Wed May 02 17:13:56 2012 -0400 +++ b/src/ov-cx-diag.cc Thu May 03 00:50:03 2012 -0400 @@ -229,3 +229,10 @@ x = val.complex_value (); return retval; } + +/* + +%% bug #36368 +%!assert (diag ([1+i, 1-i])^2 , diag ([2i, -2i]), 4*eps); + +*/