Mercurial > octave
diff src/rand.cc @ 620:8e4e7e5f307e
[project @ 1994-08-16 04:36:32 by jwe]
author | jwe |
---|---|
date | Tue, 16 Aug 1994 04:36:32 +0000 |
parents | 14b2a186a5c0 |
children | aecbe369233b |
line wrap: on
line diff
--- a/src/rand.cc Mon Aug 15 04:54:33 1994 +0000 +++ b/src/rand.cc Tue Aug 16 04:36:32 1994 +0000 @@ -153,19 +153,18 @@ } else if (nargin == 2) { - switch (args(1).const_type ()) + tree_constant tmp = args(1); + + if (tmp.is_string ()) { - case tree_constant_rep::string_constant: - char *s_arg = args(1).string_value (); + char *s_arg = tmp.string_value (); if (strcmp (s_arg, "dist") == 0) { - retval.resize (1); char *s = curr_rand_dist (); retval(0) = s; } else if (strcmp (s_arg, "seed") == 0) { - retval.resize (1); double d = curr_rand_seed (); retval(0) = d; } @@ -175,27 +174,30 @@ current_distribution = normal; else error ("rand: unrecognized string argument"); - break; - case tree_constant_rep::scalar_constant: - case tree_constant_rep::complex_scalar_constant: - n = NINT (args(1).double_value ()); + } + else if (tmp.is_scalar_type ()) + { + n = NINT (tmp.double_value ()); m = n; goto gen_matrix; - case tree_constant_rep::range_constant: - { - Range r = args(1).range_value (); - n = 1; - m = NINT (r.nelem ()); - } + } + else if (tmp.is_range ()) + { + Range r = tmp.range_value (); + n = 1; + m = NINT (r.nelem ()); goto gen_matrix; - case tree_constant_rep::matrix_constant: - case tree_constant_rep::complex_matrix_constant: + } + else if (tmp.is_matrix_type ()) + { n = NINT (args(1).rows ()); m = NINT (args(1).columns ()); goto gen_matrix; - default: - panic_impossible (); - break; + } + else + { + gripe_wrong_type_arg ("rand", tmp); + return retval; } } else if (nargin == 3) @@ -220,13 +222,11 @@ if (n == 0 || m == 0) { - retval.resize (1); - Matrix m (0, 0); - retval(0) = m; + Matrix m; + retval.resize (1, m); } else if (n > 0 && m > 0) { - retval.resize (1); Matrix rand_mat (n, m); for (int j = 0; j < m; j++) for (int i = 0; i < n; i++)