cacsd module: [xf, x] = ltitr(...), xf was not the value of final state. test_run... 32/16832/2
Adeline CARNIS [Thu, 9 Jul 2015 15:01:31 +0000 (17:01 +0200)]
Change-Id: I905c0194cf11869a919c99233c5a1d4e3a7f43fd

scilab/modules/cacsd/sci_gateway/cpp/sci_ltitr.cpp

index cb90f9d..3ab27a5 100644 (file)
@@ -155,7 +155,7 @@ types::Function::ReturnValue sci_ltitr(types::typed_list &in, int _iRetCount, ty
 
     /*** perform operations ***/
     double* pdblW   = new double[iRowsA];
-    double* pdblWgr = new double[iRowsA * iColsU];
+    double* pdblWgr = new double[iRowsA * iColsU + 1];
 
     if (in.size() == 4)
     {
@@ -165,14 +165,17 @@ types::Function::ReturnValue sci_ltitr(types::typed_list &in, int _iRetCount, ty
     {
         memset(pdblWgr, 0x00, iRowsA * sizeof(double));
     }
+    printf("%f ", pdblWgr[0]);
 
     int ig = 0;
-    for (int i = 0; i < iColsU - 1; i++)
+    for (int i = 0; i < iColsU; i++)
     {
         ig = (i + 1) * iRowsA;
         C2F(dmmul)(pdblA, &iRowsA, pdblWgr + ig - iRowsA, &iRowsA, pdblW, &iRowsA, &iRowsA, &iRowsA, &iOne);
-        C2F(dmmul)(pdblB, &iRowsA, pdblU + (i * iColsB), &iColsB, pdblWgr + ig, &iRowsA, &iRowsA, &iColsB, &iOne);
+        C2F(dmmul)(pdblB, &iRowsA, pdblU + ((ig - 1) * iColsB), &iColsB, pdblWgr + ig, &iRowsA, &iRowsA, &iColsB, &iOne);
         C2F(dadd)(&iRowsA, pdblW, &iOne, pdblWgr + ig, &iOne);
+        printf("%d ", ig);
+        printf("%f \n", pdblWgr[ig]);
     }
 
     /*** return output arguments ***/
@@ -180,7 +183,7 @@ types::Function::ReturnValue sci_ltitr(types::typed_list &in, int _iRetCount, ty
     {
         types::Double* pDblOutXf = new types::Double(iRowsA, 1);
         double* pdblOutXf = pDblOutXf->get();
-        C2F(dcopy)(&iRowsA, pdblWgr + ig, &iOne, pdblOutXf, &iOne);
+        C2F(dcopy)(&iRowsA, pdblWgr + iColsU, &iOne, pdblOutXf, &iOne);
         out.push_back(pDblOutXf);
     }