26#if defined (HAVE_CONFIG_H)
40DEFUN (spparms, args, nargout,
113 int nargin = args.
length ();
119 else if (nargout == 1)
120 retval =
ovl (sparse_params::get_vals ());
121 else if (nargout == 2)
122 retval =
ovl (sparse_params::get_keys (),
123 sparse_params::get_vals ());
125 error (
"spparms: too many output arguments");
127 else if (nargin == 1)
129 if (args(0).is_string ())
131 std::string str = args(0).string_value ();
132 int len = str.length ();
133 for (
int i = 0; i <
len; i++)
134 str[i] = tolower (str[i]);
136 if (str ==
"default")
137 sparse_params::defaults ();
138 else if (str ==
"tight")
139 sparse_params::tight ();
142 double val = sparse_params::get_key (str);
144 error (
"spparms: KEY not recognized");
151 NDArray vals = args(0).xarray_value (
"spparms: input must be a string or a vector");
153 error (
"spparms: too many elements in vector VALS");
155 sparse_params::set_vals (vals);
158 else if (nargin == 2)
160 std::string str = args(0).xstring_value (
"spparms: first argument must be a string");
162 double val = args(1).xdouble_value (
"spparms: second argument must be a real scalar");
164 if (str ==
"umfpack")
165 warning (
"spparms: request to disable umfpack solvers ignored");
166 else if (! sparse_params::set_key (str, val))
167 error (
"spparms: KEY not found");
170 error (
"spparms: too many input arguments");
octave_idx_type numel(void) const
Number of elements in the array.
octave_idx_type length(void) const
#define DEFUN(name, args_name, nargout_name, doc)
Macro to define a builtin function.
void warning(const char *fmt,...)
void error(const char *fmt,...)
#define OCTAVE_SPARSE_CONTROLS_SIZE
octave_value_list ovl(const OV_Args &... args)
Construct an octave_value_list with less typing.