*** ../octave-cvs/octave/src/data.cc Fri Aug 1 09:46:28 2003 --- octave/src/data.cc Wed Aug 6 09:14:56 2003 *************** fill_matrix (const octave_value_list& ar *** 927,962 **** octave_value retval; int nargin = args.length (); switch (nargin) { ! case 0: ! retval = val; ! break; ! ! case 1: ! { ! int nr, nc; ! get_dimensions (args(0), fcn, nr, nc); ! ! if (! error_state) ! retval = Matrix (nr, nc, val); ! } ! break; ! case 2: ! { ! int nr, nc; ! get_dimensions (args(0), args(1), fcn, nr, nc); ! if (! error_state) ! retval = Matrix (nr, nc, val); ! } ! break; ! default: ! print_usage (fcn); ! break; } return retval; --- 927,993 ---- octave_value retval; int nargin = args.length (); + int ndim = 0; + int type = 0; + Array dims; + // check for type information + if (nargin > 0 && args(nargin-1).is_string ()) + { + nargin--; + // XXX FIXME XXX + // allow to specify a type for the resulting matrix, e.g. + // zeros(n1, n2, ..., 'real') + // zeros(n1, n2, ..., 'complex') + // type = get_type( args(nargin).string_value () ); + } + // determine matrix dimension switch (nargin) { ! case 0: ! ndim = 0; ! type = 0; ! break; ! ! case 1: ! get_dimensions(args(0), fcn, dims); ! break; ! ! default: ! dims.resize (nargin); ! for (int i = 0; i < nargin; i++) ! { ! dims(i) = args(i).is_empty () ? 0 : args(i).nint_value (); ! } ! if (error_state) ! error ("%s: expecting scalar arguments", fcn); ! } ! ndim = dims.length (); ! check_dimensions (dims, fcn); ! // construct either scalar, matrix or nd-array ! switch (ndim) ! { ! case 0: ! retval = val; ! break; ! ! case 1: ! if (! error_state) ! retval = Matrix (dims(0), dims(0), val); ! break; ! ! case 2: ! if (! error_state) ! retval = Matrix (dims(0), dims(1), val); ! break; ! ! default: ! if (! error_state) ! retval = new octave_double_nd_array (ArrayN (dims, val)); ! break; } return retval; *************** DEFUN (ones, args, , *** 966,973 **** "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {} ones (@var{x})\n\ @deftypefnx {Built-in Function} {} ones (@var{n}, @var{m})\n\ ! Return a matrix whose elements are all 1. The arguments are handled\n\ ! the same as the arguments for @code{eye}.\n\ \n\ If you need to create a matrix whose values are all the same, you should\n\ use an expression like\n\ --- 995,1003 ---- "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {} ones (@var{x})\n\ @deftypefnx {Built-in Function} {} ones (@var{n}, @var{m})\n\ ! @deftypefnx {Built-in Function} {} ones (@var{n}, @var{m}, @var{k},...)\n\ ! Return a matrix or nd-array whose elements are all 1. The arguments are\n\ ! handled the same as the arguments for @code{eye}.\n\ \n\ If you need to create a matrix whose values are all the same, you should\n\ use an expression like\n\ *************** DEFUN (zeros, args, , *** 984,991 **** "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {} zeros (@var{x})\n\ @deftypefnx {Built-in Function} {} zeros (@var{n}, @var{m})\n\ ! Return a matrix whose elements are all 0. The arguments are handled\n\ ! the same as the arguments for @code{eye}.\n\ @end deftypefn") { return fill_matrix (args, 0.0, "zeros"); --- 1014,1022 ---- "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {} zeros (@var{x})\n\ @deftypefnx {Built-in Function} {} zeros (@var{n}, @var{m})\n\ ! @deftypefnx {Built-in Function} {} zeros (@var{n}, @var{m}, @var{k},...)\n\ ! Return a matrix or nd-array whose elements are all 0. The arguments are\n\ ! handled the same as the arguments for @code{eye}.\n\ @end deftypefn") { return fill_matrix (args, 0.0, "zeros");