[differential_equations] bugs and tests fixed 88/17788/2
Cedric Delamarre [Tue, 9 Feb 2016 12:44:16 +0000 (13:44 +0100)]
Change-Id: Ia411ca18bb9b1d9785bb1df0585ab4e2568a9cf4

scilab/modules/ast/src/cpp/types/arrayof.cpp
scilab/modules/ast/src/cpp/types/macro.cpp
scilab/modules/differential_equations/tests/nonreg_tests/bug_12118.dia.ref
scilab/modules/differential_equations/tests/nonreg_tests/bug_12118.tst
scilab/modules/differential_equations/tests/nonreg_tests/bug_13121.dia.ref
scilab/modules/differential_equations/tests/nonreg_tests/bug_13121.tst
scilab/modules/differential_equations/tests/nonreg_tests/bug_13491.dia.ref
scilab/modules/differential_equations/tests/nonreg_tests/bug_13491.tst
scilab/modules/differential_equations/tests/nonreg_tests/bug_13512.dia.ref
scilab/modules/differential_equations/tests/nonreg_tests/bug_13512.tst
scilab/modules/differential_equations/tests/unit_tests/ode.unix.dia.ref

index 59448a1..2be57d5 100644 (file)
@@ -1676,7 +1676,7 @@ bool ArrayOf<T>::invoke(typed_list & in, optional_list & /*opt*/, int /*_iRetCou
         if (!_out)
         {
             std::wostringstream os;
-            os << _W("Invalid index.\n");
+            os << _W("Invalid index.") << std::endl;
             throw ast::InternalError(os.str(), 999, e.getLocation());
         }
         out.push_back(_out);
index 6013191..01e2f81 100644 (file)
@@ -235,7 +235,7 @@ Callable::ReturnValue Macro::call(typed_list &in, optional_list &opt, int _iRetC
         }
         else
         {
-            Scierror(999, _("Wrong number of input arguments."));
+            Scierror(999, _("Wrong number of input arguments.\n"));
         }
 
         pContext->scope_end();
index 1aec7ee..0633898 100644 (file)
@@ -22,7 +22,8 @@ endfunction
 x0 = [1; 0];
 t0 = 0;
 t  = linspace(0, 10, 100);
-refMsg = msprintf(_("%s: Wrong type for output argument #%d: Real matrix expected.\n"), "f", 1);
+refMsg = [msprintf(_("%s: Wrong type for output argument #%d: Real matrix expected.\n"), "f", 1);
+          msprintf(_("%s: An error occured in ''%s'' subroutine."), "ode", "lsoda")];
 assert_checkerror("y = ode(zeros(1, 1), t0, t, f);", refMsg);
 assert_checkerror("y = ode(zeros(1, 2), t0, t, f);", refMsg);
 assert_checkerror("y = ode(zeros(1, 3), t0, t, f);", refMsg);
index 07f7266..c80be17 100644 (file)
@@ -25,7 +25,8 @@ x0 = [1; 0];
 t0 = 0;
 t  = linspace(0, 10, 100);
 
-refMsg = msprintf(_("%s: Wrong type for output argument #%d: Real matrix expected.\n"), "f", 1);
+refMsg = [msprintf(_("%s: Wrong type for output argument #%d: Real matrix expected.\n"), "f", 1);
+msprintf(_("%s: An error occured in ''%s'' subroutine."), "ode", "lsoda")];
 assert_checkerror("y = ode(zeros(1, 1), t0, t, f);", refMsg);
 assert_checkerror("y = ode(zeros(1, 2), t0, t, f);", refMsg);
 assert_checkerror("y = ode(zeros(1, 3), t0, t, f);", refMsg);
index 3c47a56..3856675 100644 (file)
@@ -58,12 +58,13 @@ function ydot=right(t,pl)
     //if x(2) <= 0 & t > 0 then
     //    disp(t,"tf");
     //end;
-      ydot(1) = x(3) * cos(x(4));
-      ydot(2) = x(3) * sin(x(4));
-      ydot(3) = 1/m(t)*(T(t)-0.5*c*r*s*x(3)*x(3)) - der_m(t)/m(t)*x(3) - g*sin(x(4));
-      ydot(4) = -g/x(3)*cos(x(4));
-//    end
+    ydot(1) = x(3) * cos(x(4));
+    ydot(2) = x(3) * sin(x(4));
+    ydot(3) = 1/m(t)*(T(t)-0.5*c*r*s*x(3)*x(3)) - der_m(t)/m(t)*x(3) - g*sin(x(4));
+    ydot(4) = -g/x(3)*cos(x(4));
+    //    end
 endfunction
 t=0:0.01:40;
-refMsg = msprintf(_("Invalid index."));
+refMsg = [msprintf(_("Invalid index."));
+          msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "ode", "lsrgk")];
 assert_checkerror("res=ode(""rk"",[x0;y0;v0;teta0;],t0,t,right)", refMsg);
index aa75cd8..bb95026 100644 (file)
@@ -74,5 +74,6 @@ endfunction
 
 t=0:0.01:40;
 
-refMsg = msprintf(_("Invalid index."));
+refMsg = [msprintf(_("Invalid index."));
+msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "ode", "lsrgk")];
 assert_checkerror("res=ode(""rk"",[x0;y0;v0;teta0;],t0,t,right)", refMsg);
index 20852e6..481ebfb 100644 (file)
 //
 // <-- Short Description -->
 // intg now properly returns when the user function produces an error.
+ieee(0);
 deff("y = f(x)", "y = sin(x) ./ x");
 // This function is going to be evaluated by intg at the midpoint of the interval [-1; 1], so it will produce a "Division by zero" error.
-refMsg = msprintf(_("Division by zero...\n"));
+refMsg = [msprintf(_("Division by zero...\n"));
+          msprintf(_("%s: An error occured in ''%s'' subroutine."), "intg", "dqags")];
 assert_checkerror("intg(-1, 1, f)", refMsg);
 deff("y = g(x)", "y = b");
 // In any evaluation point, 'b' is unknown so the function will yield an error.
index 0316615..396f393 100644 (file)
 //
 // <-- Short Description -->
 // intg now properly returns when the user function produces an error.
-
+ieee(0);
 deff("y = f(x)", "y = sin(x) ./ x");
 // This function is going to be evaluated by intg at the midpoint of the interval [-1; 1], so it will produce a "Division by zero" error.
-refMsg = msprintf(_("Division by zero...\n"));
+refMsg = [msprintf(_("Division by zero...\n"));
+msprintf(_("%s: An error occured in ''%s'' subroutine."), "intg", "dqags")];
 assert_checkerror("intg(-1, 1, f)", refMsg);
 
 deff("y = g(x)", "y = b");
index ffca0bb..23525b2 100644 (file)
@@ -23,19 +23,23 @@ t  = 1;
 // With initial yprime computation
 // The evaluation function purposely lacks the output argument 'ires'
 deff("ydot = f1(t, y, ydot)", "ydot = y^2 - y*sin(t) + cos(t)")
-refMsg = msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
+refMsg = [msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
+          msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dassl", "dassl")];
 assert_checkerror("y = dae(y0, t0, t, f1);", refMsg);
 // The evaluation function purposely lacks the input argument 'ydot'
 deff("[ydot,ires] = f2(t, y)", "ydot = y^2 - y*sin(t) + cos(t)");
-refMsg = msprintf(_("Wrong number of input arguments."));
+refMsg = [msprintf(_("Wrong number of input arguments."));
+          msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dassl", "dassl")];
 assert_checkerror("y = dae(y0, t0, t, f2);", refMsg);
 // ----------------------------------
 // Without initial yprime computation
 // The evaluation function purposely lacks the output argument 'ires'
-refMsg = msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
+refMsg = [msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
+          msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dassl", "dassl")];
 assert_checkerror("y = dae([y0; 0], t0, t, f1);", refMsg);
 // The evaluation function purposely lacks the input argument 'ydot'
-refMsg = msprintf(_("Wrong number of input arguments."));
+refMsg = [msprintf(_("Wrong number of input arguments."));
+          msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dassl", "dassl")];
 assert_checkerror("y = dae([y0; 0], t0, t, f2);", refMsg);
 // ==================================================================
 // DASRT
@@ -43,33 +47,40 @@ deff("r = g(t, y)", "r = ones(y)");
 // -------------------------------
 // With initial yprime computation
 // The evaluation function purposely lacks the output argument 'ires'
-refMsg = msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
+refMsg = [msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
+          msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dasrt", "ddasrt")];
 assert_checkerror("[y, r] = dae(""root"", y0, t0, t, f1, 1, g);", refMsg);
 // The evaluation function purposely lacks the input argument 'ydot'
-refMsg = msprintf(_("Wrong number of input arguments."));
+refMsg = [msprintf(_("Wrong number of input arguments."));
+          msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dasrt", "ddasrt")];
 assert_checkerror("[y, r] = dae(""root"", y0, t0, t, f2, 1, g);", refMsg);
 // ----------------------------------
 // Without initial yprime computation
 // The evaluation function purposely lacks the output argument 'ires'
-refMsg = msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
+refMsg = [msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
+          msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dasrt", "ddasrt")];
 assert_checkerror("[y, r] = dae(""root"", [y0; 0], t0, t, f1, 1, g);", refMsg);
 // The evaluation function purposely lacks the input argument 'ydot'
-refMsg = msprintf(_("Wrong number of input arguments."));
+refMsg = [msprintf(_("Wrong number of input arguments."));
+          msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dasrt", "ddasrt")];
 assert_checkerror("[y, r] = dae(""root"", [y0; 0], t0, t, f2, 1, g);", refMsg);
 // ==================================================================
 // DASKR
 // -------------------------------
 // With initial yprime computation
 // The evaluation function purposely lacks the output argument 'ires'
-refMsg = msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
+refMsg = [msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
+          msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "daskr", "ddaskr")];
 assert_checkerror("[y, r] = dae(""root2"", y0, t0, t, f1, 1, g);", refMsg);
 // The evaluation function purposely lacks the input argument 'ydot'
-refMsg = msprintf(_("Wrong number of input arguments."));
+refMsg = [msprintf(_("Wrong number of input arguments."));
+          msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "daskr", "ddaskr")];
 assert_checkerror("[y, r] = dae(""root2"", y0, t0, t, f2, 1, g);", refMsg);
 // ----------------------------------
 // Without initial yprime computation
 // The evaluation function purposely lacks the output argument 'ires'
-refMsg = msprintf(_("%s: Wrong size for output argument #%d: A matrix of size %d expected.\n"), "g", 1, 1);
+refMsg = [msprintf(_("%s: Wrong size for output argument #%d: A matrix of size %d expected.\n"), "g", 1, 1);
+         msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "daskr", "ddaskr")];
 assert_checkerror("[y, r] = dae(""root2"", [y0; 0], t0, t, f1, 1, g);", refMsg);
 // The evaluation function purposely lacks the input argument 'ydot'
 assert_checkerror("[y, r] = dae(""root2"", [y0; 0], t0, t, f2, 1, g);", refMsg);
index 615ee58..7735242 100644 (file)
@@ -28,24 +28,29 @@ t  = 1;
 // The evaluation function purposely lacks the output argument 'ires'
 deff("ydot = f1(t, y, ydot)", "ydot = y^2 - y*sin(t) + cos(t)")
 
-refMsg = msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
+refMsg = [msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
+msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dassl", "dassl")];
+
 assert_checkerror("y = dae(y0, t0, t, f1);", refMsg);
 
 // The evaluation function purposely lacks the input argument 'ydot'
 deff("[ydot,ires] = f2(t, y)", "ydot = y^2 - y*sin(t) + cos(t)");
 
-refMsg = msprintf(_("Wrong number of input arguments."));
+refMsg = [msprintf(_("Wrong number of input arguments."));
+msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dassl", "dassl")];
 assert_checkerror("y = dae(y0, t0, t, f2);", refMsg);
 
 // ----------------------------------
 // Without initial yprime computation
 
 // The evaluation function purposely lacks the output argument 'ires'
-refMsg = msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
+refMsg = [msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
+msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dassl", "dassl")];
 assert_checkerror("y = dae([y0; 0], t0, t, f1);", refMsg);
 
 // The evaluation function purposely lacks the input argument 'ydot'
-refMsg = msprintf(_("Wrong number of input arguments."));
+refMsg = [msprintf(_("Wrong number of input arguments."));
+msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dassl", "dassl")];
 assert_checkerror("y = dae([y0; 0], t0, t, f2);", refMsg);
 
 
@@ -58,22 +63,26 @@ deff("r = g(t, y)", "r = ones(y)");
 // With initial yprime computation
 
 // The evaluation function purposely lacks the output argument 'ires'
-refMsg = msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
+refMsg = [msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
+msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dasrt", "ddasrt")];
 assert_checkerror("[y, r] = dae(""root"", y0, t0, t, f1, 1, g);", refMsg);
 
 // The evaluation function purposely lacks the input argument 'ydot'
-refMsg = msprintf(_("Wrong number of input arguments."));
+refMsg = [msprintf(_("Wrong number of input arguments."));
+msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dasrt", "ddasrt")];
 assert_checkerror("[y, r] = dae(""root"", y0, t0, t, f2, 1, g);", refMsg);
 
 // ----------------------------------
 // Without initial yprime computation
 
 // The evaluation function purposely lacks the output argument 'ires'
-refMsg = msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
+refMsg = [msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
+msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dasrt", "ddasrt")];
 assert_checkerror("[y, r] = dae(""root"", [y0; 0], t0, t, f1, 1, g);", refMsg);
 
 // The evaluation function purposely lacks the input argument 'ydot'
-refMsg = msprintf(_("Wrong number of input arguments."));
+refMsg = [msprintf(_("Wrong number of input arguments."));
+msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "dasrt", "ddasrt")];
 assert_checkerror("[y, r] = dae(""root"", [y0; 0], t0, t, f2, 1, g);", refMsg);
 
 
@@ -84,18 +93,21 @@ assert_checkerror("[y, r] = dae(""root"", [y0; 0], t0, t, f2, 1, g);", refMsg);
 // With initial yprime computation
 
 // The evaluation function purposely lacks the output argument 'ires'
-refMsg = msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
+refMsg = [msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "f1", 2);
+msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "daskr", "ddaskr")];
 assert_checkerror("[y, r] = dae(""root2"", y0, t0, t, f1, 1, g);", refMsg);
 
 // The evaluation function purposely lacks the input argument 'ydot'
-refMsg = msprintf(_("Wrong number of input arguments."));
+refMsg = [msprintf(_("Wrong number of input arguments."));
+msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "daskr", "ddaskr")];
 assert_checkerror("[y, r] = dae(""root2"", y0, t0, t, f2, 1, g);", refMsg);
 
 // ----------------------------------
 // Without initial yprime computation
 
 // The evaluation function purposely lacks the output argument 'ires'
-refMsg = msprintf(_("%s: Wrong size for output argument #%d: A matrix of size %d expected.\n"), "g", 1, 1);
+refMsg = [msprintf(_("%s: Wrong size for output argument #%d: A matrix of size %d expected.\n"), "g", 1, 1);
+msprintf(_("%s: An error occured in ''%s'' subroutine.\n"), "daskr", "ddaskr")];
 assert_checkerror("[y, r] = dae(""root2"", [y0; 0], t0, t, f1, 1, g);", refMsg);
 
 // The evaluation function purposely lacks the input argument 'ydot'
index ab4d02e..c12a0ff 100644 (file)
@@ -310,8 +310,6 @@ assert_checkalmostequal(rd1(1), 2.64d-01, 1d-4);
 [yout2,rd2,w,iw] = ode("root", y, t0, tout, "fex1", 2, "gex", w, iw);
 assert_checkalmostequal(rd2(1), 2.0795776d+07, 4d-5);
 err = execstr("[yout3,rd,w,iw] = ode(""root"", y, t0, tout, ""fex1"", 2, ""gex"", w, iw);","errcatch");
-intdy--  t (=r1) illegal      
-      where r1 is :   0.4000000000000D+00                                       
       t n est pas entre tcur - hu (= r1) et tcur (=r2)
       where r1 is :   0.2033607066275D+08   and r2 :   0.2109164231072D+08      
 Illegal input detected (see printed message).