changeset 4042:8bc97120fbd5

[project @ 2002-08-15 02:30:40 by jwe]
author jwe
date Thu, 15 Aug 2002 02:30:41 +0000
parents 3995501ce1d9
children 6fae69a1796e
files libcruft/odessa/odessa.f liboctave/ChangeLog liboctave/LSODE.cc
diffstat 3 files changed, 24 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/libcruft/odessa/odessa.f	Thu Aug 15 01:56:42 2002 +0000
+++ b/libcruft/odessa/odessa.f	Thu Aug 15 02:30:41 2002 +0000
@@ -1619,7 +1619,8 @@
       IF (NHNIL .GT. MXHNIL) GO TO 290
       CALL XERRWD ('ODESSA - WARNING..INTERNAL T (=R1) AND H (=R2) ARE',
      1   101, 1, 0, 0, 0, 0, ZERO, ZERO)
-      CALL XERRWD ('SUCH THAT IN THE MACHINE, T + H = T ON THE NEXT STEP',
+      CALL XERRWD
+     1 ('SUCH THAT IN THE MACHINE, T + H = T ON THE NEXT STEP',
      1   101, 1, 0, 0, 0, 0, ZERO, ZERO)
       CALL XERRWD ('(H = STEP SIZE). SOLVER WILL CONTINUE ANYWAY',
      1   101, 1, 0, 0, 0, 2, TN, H)
--- a/liboctave/ChangeLog	Thu Aug 15 01:56:42 2002 +0000
+++ b/liboctave/ChangeLog	Thu Aug 15 02:30:41 2002 +0000
@@ -1,5 +1,8 @@
 2002-08-14  John W. Eaton  <jwe@bevo.che.wisc.edu>
 
+	* LSODE.cc (LSODE::error_message): Also return current T on
+	failures when that makes sense.
+
 	* Makefile.in (liboct-pathsearch.$(SHLEXT_VER)): Link to
 	$(LIBKPATHSEA) here.
 
--- a/liboctave/LSODE.cc	Thu Aug 15 01:56:42 2002 +0000
+++ b/liboctave/LSODE.cc	Thu Aug 15 02:30:41 2002 +0000
@@ -32,6 +32,7 @@
 #include <cmath>
 
 #include <iostream>
+#include <strstream>
 
 #include "LSODE.h"
 #include "f77-fcn.h"
@@ -298,6 +299,12 @@
 {
   std::string retval;
 
+  std::ostrstream buf;
+  buf << t << ends;
+  const char *t = buf.str ();
+  std::string curr_t = t;
+  delete [] t;
+
   switch (istate)
     {
     case 1:
@@ -313,7 +320,8 @@
       break;
 	  
     case -1:
-      retval = "excess work on this call (perhaps wrong integration method)";
+      retval = std::string ("excess work on this call (t = ")
+	+ curr_t + "; perhaps wrong integration method)";
       break;
 
     case -2:
@@ -325,21 +333,25 @@
       break;
 
     case -4:
-      retval = "repeated error test failures (check all inputs)";
+      retval = std::string ("repeated error test failures (t = ")
+	+ curr_t + "check all inputs)";
       break;
 
     case -5:
-      retval = "repeated convergence failures (perhaps bad jacobian\
- supplied or wrong choice of integration method or tolerances)";
+      retval = std::string ("repeated convergence failures (t = ")
+	+ curr_t
+	+ "perhaps bad jacobian supplied or wrong choice of integration method or tolerances)";
       break;
 
     case -6:
-      retval = "error weight became zero during problem.\
-  (solution component i vanished, and atol or atol(i) == 0)";
+      retval = std::string ("error weight became zero during problem. (t = ")
+	+ curr_t
+	+ "; solution component i vanished, and atol or atol(i) == 0)";
       break;
 
     case -13:
-      retval = "return requested in user-supplied function";
+      retval = "return requested in user-supplied function (t = "
+	+ curr_t + ")";
       break;
 
     default: