ode corrected. 45/11145/3
Cedric Delamarre [Thu, 28 Mar 2013 15:03:51 +0000 (16:03 +0100)]
test_run("differential_equations", "bug_1595")

Change-Id: Iddfc473c37457301397f14587b34f3470b9a3515

scilab/modules/differential_equations/sci_gateway/cpp/sci_ode.cpp

index c1eb0e0..49c249c 100644 (file)
@@ -1016,6 +1016,7 @@ types::Function::ReturnValue sci_ode(types::typed_list &in, int _iRetCount, type
         std::list<double> pDblTOutList = std::list<double>();
         int iLastT = pDblT->getSize() - 1;
         double t = pDblT->get(iLastT);
+        int iDir = t - t0 < 0 ? -1 : 1;
 
         do
         {
@@ -1128,7 +1129,7 @@ types::Function::ReturnValue sci_ode(types::typed_list &in, int _iRetCount, type
                 break;
             }
         }
-        while (t0 < t);
+        while ((t0 - t) * iDir < 0);
 
         int iSizeList = (int)pDblYOutList.size();
         /*