# HG changeset patch # User jwe # Date 1035926505 0 # Node ID 87eb044020aeaa2466b1e5d444e8d002b8a8ea0e # Parent 597fbc55ea404a63bd092932618374f1f3566aea [project @ 2002-10-29 21:21:45 by jwe] diff -r 597fbc55ea40 -r 87eb044020ae liboctave/ChangeLog --- a/liboctave/ChangeLog Tue Oct 29 17:12:54 2002 +0000 +++ b/liboctave/ChangeLog Tue Oct 29 21:21:45 2002 +0000 @@ -1,3 +1,8 @@ +2002-10-29 John W. Eaton + + * NLEqn.cc (NLEqn::solve): Return current estimate of solution + instead of empty vector if user termninates iteration. + 2002-10-28 John W. Eaton * lo-utils.cc (read_inf_nan_na, octave_read_double, diff -r 597fbc55ea40 -r 87eb044020ae liboctave/NLEqn.cc --- a/liboctave/NLEqn.cc Tue Oct 29 17:12:54 2002 +0000 +++ b/liboctave/NLEqn.cc Tue Oct 29 21:21:45 2002 +0000 @@ -187,9 +187,6 @@ (*current_liboctave_error_handler) ("unrecoverable error in hybrd1"); } - if (info < 0) - retval.resize (0); - return retval; } diff -r 597fbc55ea40 -r 87eb044020ae src/ChangeLog --- a/src/ChangeLog Tue Oct 29 17:12:54 2002 +0000 +++ b/src/ChangeLog Tue Oct 29 21:21:45 2002 +0000 @@ -1,5 +1,8 @@ 2002-10-29 John W. Eaton + * DLD-FUNCTIONS/fsolve.cc (Ffsolve): Always return solution. + Don't barf on nargout == 3. + * pt-idx.h (tree_index_expression::dyn_field): New data member. * pt-idx.cc (tree_index_expression::tree_index_expression (tree_expression*, tree_expression*, int, int)): New constructor. diff -r 597fbc55ea40 -r 87eb044020ae src/DLD-FUNCTIONS/fsolve.cc --- a/src/DLD-FUNCTIONS/fsolve.cc Tue Oct 29 17:12:54 2002 +0000 +++ b/src/DLD-FUNCTIONS/fsolve.cc Tue Oct 29 21:21:45 2002 +0000 @@ -185,10 +185,10 @@ if (error_state) FSOLVE_ABORT1 ("expecting vector as second argument"); - if (nargin > 2) + if (nargin > 3) warning ("fsolve: ignoring extra arguments"); - if (nargout > 2) + if (nargout > 3) warning ("fsolve: can't compute path output yet"); NLFunc nleqn_fcn (fsolve_user_function); @@ -205,15 +205,10 @@ retval(2) = msg; retval(1) = static_cast (hybrd_info_to_fsolve_info (info)); - if (nleqn.solution_ok ()) - retval(0) = soln; - else - { - retval(0) = Matrix (); + retval(0) = soln; - if (nargout < 2) - error ("fsolve: %s", msg.c_str ()); - } + if (! nleqn.solution_ok () && nargout < 2) + error ("fsolve: %s", msg.c_str ()); } } else