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	Fri Mar 28 21:33:27 1997 +0000
+++ b/liboctave/LSODE.cc	Fri Mar 28 21:39:35 1997 +0000
@@ -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