Mercurial > hg > octave-lyh
diff liboctave/LSODE.cc @ 2850:b7f43611d1e8
[project @ 1997-03-28 21:36:35 by jwe]
author | jwe |
---|---|
date | Fri, 28 Mar 1997 21:39:35 +0000 |
parents | 8b262e771614 |
children | 09a3064a3a17 |
line wrap: on
line diff
--- a/liboctave/LSODE.cc +++ b/liboctave/LSODE.cc @@ -239,11 +239,12 @@ rwork.elem (5) = (maximum_step_size () >= 0.0) ? maximum_step_size () : 0.0; rwork.elem (6) = (minimum_step_size () >= 0.0) ? minimum_step_size () : 0.0; + if (step_limit () > 0) + iwork.elem (5) = step_limit (); + int *piwork = iwork.fortran_vec (); double *prwork = rwork.fortran_vec (); - working_too_hard = 0; - again: F77_XFCN (lsode, LSODE, (lsode_f, n, xp, t, tout, itol, rel_tol, @@ -268,12 +269,11 @@ break; case -1: // excess work done on this call (perhaps wrong mf). - working_too_hard++; - if (working_too_hard > 20) + if (step_limit () > 0) { (*current_liboctave_error_handler) ("giving up after more than %d steps attempted in lsode", - iwork.elem (5) * 20); + step_limit ()); integration_error = 1; } else