Mercurial > octave
diff libinterp/corefcn/lsode.cc @ 20801:a542a9bf177e
eliminate return statements after calls to print_usage
* graphics.cc, hess.cc, input.cc, kron.cc, load-save.cc, lsode.cc,
luinc.cc, matrix_type.cc, md5sum.cc, nproc.cc, pager.cc, pr-output.cc,
psi.cc, quadcc.cc, rand.cc, regexp.cc, sighandlers.cc, sqrtm.cc,
strfind.cc, sub2ind.cc, sylvester.cc:
Eliminate return statements after calls to print_usage.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 03 Dec 2015 19:22:54 -0500 |
parents | b6f2909e7f94 |
children | 1142cf6abc0d |
line wrap: on
line diff
--- a/libinterp/corefcn/lsode.cc Thu Dec 03 18:33:00 2015 -0500 +++ b/libinterp/corefcn/lsode.cc Thu Dec 03 19:22:54 2015 -0500 @@ -276,171 +276,169 @@ int nargin = args.length (); - if (nargin > 2 && nargin < 5 && nargout < 4) + if (nargin < 3 || nargin > 4 || nargout > 3) + print_usage (); + + std::string fcn_name, fname, jac_name, jname; + lsode_fcn = 0; + lsode_jac = 0; + + octave_value f_arg = args(0); + + if (f_arg.is_cell ()) { - std::string fcn_name, fname, jac_name, jname; - lsode_fcn = 0; - lsode_jac = 0; - - octave_value f_arg = args(0); + Cell c = f_arg.cell_value (); + if (c.numel () == 1) + f_arg = c(0); + else if (c.numel () == 2) + { + if (c(0).is_function_handle () || c(0).is_inline_function ()) + lsode_fcn = c(0).function_value (); + else + { + fcn_name = unique_symbol_name ("__lsode_fcn__"); + fname = "function y = "; + fname.append (fcn_name); + fname.append (" (x, t) y = "); + lsode_fcn = extract_function (c(0), "lsode", fcn_name, fname, + "; endfunction"); + } - if (f_arg.is_cell ()) + if (lsode_fcn) + { + if (c(1).is_function_handle () || c(1).is_inline_function ()) + lsode_jac = c(1).function_value (); + else + { + jac_name = unique_symbol_name ("__lsode_jac__"); + jname = "function jac = "; + jname.append (jac_name); + jname.append (" (x, t) jac = "); + lsode_jac = extract_function (c(1), "lsode", jac_name, + jname, "; endfunction"); + + if (!lsode_jac) + { + if (fcn_name.length ()) + clear_function (fcn_name); + lsode_fcn = 0; + } + } + } + } + else + error ("lsode: incorrect number of elements in cell array"); + } + + if (!lsode_fcn && ! f_arg.is_cell ()) + { + if (f_arg.is_function_handle () || f_arg.is_inline_function ()) + lsode_fcn = f_arg.function_value (); + else { - Cell c = f_arg.cell_value (); - if (c.numel () == 1) - f_arg = c(0); - else if (c.numel () == 2) + switch (f_arg.rows ()) { - if (c(0).is_function_handle () || c(0).is_inline_function ()) - lsode_fcn = c(0).function_value (); - else + case 1: + do { fcn_name = unique_symbol_name ("__lsode_fcn__"); fname = "function y = "; fname.append (fcn_name); fname.append (" (x, t) y = "); - lsode_fcn = extract_function (c(0), "lsode", fcn_name, fname, - "; endfunction"); + lsode_fcn = extract_function (f_arg, "lsode", fcn_name, + fname, "; endfunction"); } + while (0); + break; - if (lsode_fcn) - { - if (c(1).is_function_handle () || c(1).is_inline_function ()) - lsode_jac = c(1).function_value (); - else - { - jac_name = unique_symbol_name ("__lsode_jac__"); - jname = "function jac = "; - jname.append (jac_name); - jname.append (" (x, t) jac = "); - lsode_jac = extract_function (c(1), "lsode", jac_name, - jname, "; endfunction"); - - if (!lsode_jac) - { - if (fcn_name.length ()) - clear_function (fcn_name); - lsode_fcn = 0; - } - } - } - } - else - error ("lsode: incorrect number of elements in cell array"); - } + case 2: + { + string_vector tmp = f_arg.all_strings (); - if (!lsode_fcn && ! f_arg.is_cell ()) - { - if (f_arg.is_function_handle () || f_arg.is_inline_function ()) - lsode_fcn = f_arg.function_value (); - else - { - switch (f_arg.rows ()) - { - case 1: - do - { - fcn_name = unique_symbol_name ("__lsode_fcn__"); - fname = "function y = "; - fname.append (fcn_name); - fname.append (" (x, t) y = "); - lsode_fcn = extract_function (f_arg, "lsode", fcn_name, - fname, "; endfunction"); - } - while (0); - break; + fcn_name = unique_symbol_name ("__lsode_fcn__"); + fname = "function y = "; + fname.append (fcn_name); + fname.append (" (x, t) y = "); + lsode_fcn = extract_function (tmp(0), "lsode", fcn_name, + fname, "; endfunction"); - case 2: + if (lsode_fcn) { - string_vector tmp = f_arg.all_strings (); + jac_name = unique_symbol_name ("__lsode_jac__"); + jname = "function jac = "; + jname.append (jac_name); + jname.append (" (x, t) jac = "); + lsode_jac = extract_function (tmp(1), "lsode", + jac_name, jname, + "; endfunction"); - fcn_name = unique_symbol_name ("__lsode_fcn__"); - fname = "function y = "; - fname.append (fcn_name); - fname.append (" (x, t) y = "); - lsode_fcn = extract_function (tmp(0), "lsode", fcn_name, - fname, "; endfunction"); - - if (lsode_fcn) + if (!lsode_jac) { - jac_name = unique_symbol_name ("__lsode_jac__"); - jname = "function jac = "; - jname.append (jac_name); - jname.append (" (x, t) jac = "); - lsode_jac = extract_function (tmp(1), "lsode", - jac_name, jname, - "; endfunction"); - - if (!lsode_jac) - { - if (fcn_name.length ()) - clear_function (fcn_name); - lsode_fcn = 0; - } + if (fcn_name.length ()) + clear_function (fcn_name); + lsode_fcn = 0; } } - break; + } + break; - default: - error ("lsode: first arg should be a string or 2-element string array"); - } + default: + error ("lsode: first arg should be a string or 2-element string array"); } } + } - if (! lsode_fcn) - error ("lsode: FCN argument is not a valid function name or handle"); + if (! lsode_fcn) + error ("lsode: FCN argument is not a valid function name or handle"); - ColumnVector state = args(1).xvector_value ("lsode: initial state X_0 must be a vector"); - ColumnVector out_times = args(2).xvector_value ("lsode: output time variable T must be a vector"); + ColumnVector state = args(1).xvector_value ("lsode: initial state X_0 must be a vector"); + ColumnVector out_times = args(2).xvector_value ("lsode: output time variable T must be a vector"); - ColumnVector crit_times; + ColumnVector crit_times; - int crit_times_set = 0; - if (nargin > 3) - { - crit_times = args(3).xvector_value ("lsode: list of critical times T_CRIT must be a vector"); + int crit_times_set = 0; + if (nargin > 3) + { + crit_times = args(3).xvector_value ("lsode: list of critical times T_CRIT must be a vector"); - crit_times_set = 1; - } + crit_times_set = 1; + } - double tzero = out_times (0); + double tzero = out_times (0); - ODEFunc func (lsode_user_function); - if (lsode_jac) - func.set_jacobian_function (lsode_user_jacobian); + ODEFunc func (lsode_user_function); + if (lsode_jac) + func.set_jacobian_function (lsode_user_jacobian); - LSODE ode (state, tzero, func); - - ode.set_options (lsode_opts); + LSODE ode (state, tzero, func); - Matrix output; - if (crit_times_set) - output = ode.integrate (out_times, crit_times); - else - output = ode.integrate (out_times); + ode.set_options (lsode_opts); - if (fcn_name.length ()) - clear_function (fcn_name); - if (jac_name.length ()) - clear_function (jac_name); + Matrix output; + if (crit_times_set) + output = ode.integrate (out_times, crit_times); + else + output = ode.integrate (out_times); - std::string msg = ode.error_message (); + if (fcn_name.length ()) + clear_function (fcn_name); + if (jac_name.length ()) + clear_function (jac_name); - retval(2) = msg; - retval(1) = static_cast<double> (ode.integration_state ()); + std::string msg = ode.error_message (); + + retval(2) = msg; + retval(1) = static_cast<double> (ode.integration_state ()); - if (ode.integration_ok ()) - retval(0) = output; - else - { - retval(0) = Matrix (); + if (ode.integration_ok ()) + retval(0) = output; + else + { + retval(0) = Matrix (); - if (nargout < 2) - error ("lsode: %s", msg.c_str ()); - } + if (nargout < 2) + error ("lsode: %s", msg.c_str ()); } - else - print_usage (); return retval; }