Mercurial > hg > octave-nkf
diff src/rand.cc @ 1086:75fc98220389
[project @ 1995-01-31 04:17:15 by jwe]
author | jwe |
---|---|
date | Tue, 31 Jan 1995 04:17:15 +0000 |
parents | 705c8ac6bcd4 |
children | b6360f2d4fa6 |
line wrap: on
line diff
--- a/src/rand.cc +++ b/src/rand.cc @@ -185,22 +185,31 @@ } else if (tmp.is_scalar_type ()) { - m = n = NINT (tmp.double_value ()); + double dval = tmp.double_value (); - if (! error_state) - goto gen_matrix; + if (xisnan (dval)) + { + error ("rand: NaN is invalid a matrix dimension"); + } + else + { + m = n = NINT (tmp.double_value ()); + + if (! error_state) + goto gen_matrix; + } } else if (tmp.is_range ()) { Range r = tmp.range_value (); n = 1; - m = NINT (r.nelem ()); + m = r.nelem (); goto gen_matrix; } else if (tmp.is_matrix_type ()) { - n = NINT (args(0).rows ()); - m = NINT (args(0).columns ()); + n = args(0).rows (); + m = args(0).columns (); goto gen_matrix; } else @@ -221,14 +230,23 @@ } else { - n = NINT (args(0).double_value ()); + double dval = args(0).double_value (); - if (! error_state) + if (xisnan (dval)) { - m = NINT (args(1).double_value ()); + error ("rand: NaN is invalid as a matrix dimension"); + } + else + { + n = NINT (dval); if (! error_state) - goto gen_matrix; + { + m = NINT (args(1).double_value ()); + + if (! error_state) + goto gen_matrix; + } } } }