Mercurial > octave
changeset 25651:c759aa39c23a stable
Produce same random number stream for "state" initialized to Inf (bug #54342).
* rand.cc (Frand): Update BIST test for new behavior.
* rand.cc (do_rand): Map Inf values in initialization state vector to 0.0 which
previous versions of Octave used.
author | Rik <rik@octave.org> |
---|---|
date | Fri, 20 Jul 2018 12:26:48 -0700 |
parents | cf452aa01cd5 |
children | b400ad33d92d b08864ae8506 |
files | libinterp/corefcn/rand.cc |
diffstat | 1 files changed, 8 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/rand.cc Thu Jul 19 08:24:16 2018 -0700 +++ b/libinterp/corefcn/rand.cc Fri Jul 20 12:26:48 2018 -0700 @@ -266,7 +266,13 @@ else { ColumnVector s = - ColumnVector (args(idx+1).vector_value(false, true)); + ColumnVector (args(idx+1).vector_value (false, true)); + + // Backwards compatibility with previous versions of + // Octave which mapped Inf to 0. + for (octave_idx_type i = 0; i < s.numel (); i++) + if (octave::math::isinf (s.xelem (i))) + s.xelem (i) = 0.0; octave_rand::state (s, fcn); } @@ -528,7 +534,7 @@ %!assert (__rand_sample__ (-1), __rand_sample__ (0)) %!assert (__rand_sample__ (-Inf), __rand_sample__ (0)) %!assert (__rand_sample__ (2^33), __rand_sample__ (intmax ("uint32"))) -%!assert (__rand_sample__ (Inf), __rand_sample__ (intmax ("uint32"))) +%!assert (__rand_sample__ (Inf), __rand_sample__ (0)) %!assert (__rand_sample__ (NaN), __rand_sample__ (0)) */