From 9817591c45d769204893e99752b84dad284e867a Mon Sep 17 00:00:00 2001 From: Adeline CARNIS Date: Fri, 21 Oct 2016 12:19:51 +0200 Subject: [PATCH] * Bug #7794 fixed - Example of findABCD help page failed. Change-Id: I6dbec6698f3e1dbc936d1e9c4f80893f09a42040 --- scilab/modules/cacsd/sci_gateway/c/sci_findbd.c | 8 +++-- scilab/modules/cacsd/sci_gateway/c/sci_sident.c | 12 +++++-- .../cacsd/tests/nonreg_tests/bug_7794.dia.ref | 32 +++++++++++++++++ .../modules/cacsd/tests/nonreg_tests/bug_7794.tst | 38 ++++++++++++++++++++ 4 files changed, 84 insertions(+), 6 deletions(-) create mode 100644 scilab/modules/cacsd/tests/nonreg_tests/bug_7794.dia.ref create mode 100644 scilab/modules/cacsd/tests/nonreg_tests/bug_7794.tst diff --git a/scilab/modules/cacsd/sci_gateway/c/sci_findbd.c b/scilab/modules/cacsd/sci_gateway/c/sci_findbd.c index 5a12837..2f38b12 100644 --- a/scilab/modules/cacsd/sci_gateway/c/sci_findbd.c +++ b/scilab/modules/cacsd/sci_gateway/c/sci_findbd.c @@ -197,7 +197,7 @@ int sci_findbd(char *fname, void* pvApiCtx) if (iTASK == 1) { - cJOBX0 = 'Q'; + cJOBX0 = 'X'; } // comuse @@ -366,7 +366,7 @@ int sci_findbd(char *fname, void* pvApiCtx) } // D(1,m) - if (iTASK == 1 && iCUSE == 2 && iIJOB == 2 && iRhs <= iIP) + if (iTASK == 1 && iCUSE == 2 && iIJOB == 2 && iRhs >= iIP) { int* piAddr = NULL; int iRows = 0; @@ -425,6 +425,8 @@ int sci_findbd(char *fname, void* pvApiCtx) Scierror(999, _("%s: Wrong size for input argument #%d: A matrix with %d columns expected.\n"), fname, iL); return 0; } + + iIP++; } // U(txm) @@ -442,7 +444,7 @@ int sci_findbd(char *fname, void* pvApiCtx) return 0; } - getMatrixOfDouble(pvApiCtx, piAddr, &iNSMP, &iCols, &pdblU); + getMatrixOfDouble(pvApiCtx, piAddr, &iRows, &iCols, &pdblU); if (sciErr.iErr) { printError(&sciErr, 0); diff --git a/scilab/modules/cacsd/sci_gateway/c/sci_sident.c b/scilab/modules/cacsd/sci_gateway/c/sci_sident.c index 9fa6437..d0e2088 100644 --- a/scilab/modules/cacsd/sci_gateway/c/sci_sident.c +++ b/scilab/modules/cacsd/sci_gateway/c/sci_sident.c @@ -212,8 +212,11 @@ int sci_sident(char *fname, void* pvApiCtx) case 2 : cMETH = 'N'; break; + case 3 : + cMETH = 'C'; + break; default : - Scierror(999, _("%s: Wrong value for input argument #%d: '%s' or '%s' expected.\n"), fname, 1, "1", "2"); + Scierror(999, _("%s: Wrong value for input argument #%d: '%s', '%s' or '%s' expected.\n"), fname, 1, "1", "2", "3"); return 0; } @@ -232,8 +235,11 @@ int sci_sident(char *fname, void* pvApiCtx) case 3 : cJOB = 'B'; break; + case 4 : + cJOB = 'D'; + break; default: - Scierror(999, _("%s: Wrong value for input argument #%d: '%s', '%s' or '%s' expected.\n"), fname, 2, "1", "2", "3"); + Scierror(999, _("%s: Wrong value for input argument #%d: '%s', '%s', '%s' or '%s' expected.\n"), fname, 2, "1", "2", "3", "4"); return 0; } @@ -333,7 +339,7 @@ int sci_sident(char *fname, void* pvApiCtx) { cJOBCK = 'K'; CHECK_PARAM(pvApiCtx, 8); - iNSMPL = getInputArgumentType(pvApiCtx, 8); + iNSMPL = getIntegerValue(pvApiCtx, 8); if (iNSMPL != 0 && iNSMPL < iNR) { diff --git a/scilab/modules/cacsd/tests/nonreg_tests/bug_7794.dia.ref b/scilab/modules/cacsd/tests/nonreg_tests/bug_7794.dia.ref new file mode 100644 index 0000000..e03e324 --- /dev/null +++ b/scilab/modules/cacsd/tests/nonreg_tests/bug_7794.dia.ref @@ -0,0 +1,32 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2016 - Scilab Enterprises - Adeline CARNIS +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +//<-- CLI SHELL MODE --> +// <-- Non-regression test for bug 7794 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=7794 +// +// <-- Short Description --> +// Example of findABCD help page failed. +A = [ 0.5, 0.1,-0.1, 0.2; + 0.1, 0, -0.1,-0.1; + -0.4,-0.6,-0.7,-0.1; + 0.8, 0, -0.6,-0.6]; +B = [0.8;0.1;1;-1]; +C = [1 2 -1 0]; +SYS=syslin(0.1,A,B,C); +nsmp=100; +U=prbs_a(nsmp,nsmp/5); +Y=(flts(U,SYS)+0.3*rand(1,nsmp,'normal')); +// Compute R +S=15; +[R,N1,SVAL] = findR(S,Y',U'); +N=3; +SYS1 = findABCD(S,N,1,R) ;SYS1.dt=0.1; +SYS1.X0 = inistate(SYS1,Y',U'); +expectedX0 = [0.180418869; 0.18003251391; -0.06993989023]; +assert_checkalmostequal(SYS1.X0, expectedX0, 1.e-8); diff --git a/scilab/modules/cacsd/tests/nonreg_tests/bug_7794.tst b/scilab/modules/cacsd/tests/nonreg_tests/bug_7794.tst new file mode 100644 index 0000000..a211046 --- /dev/null +++ b/scilab/modules/cacsd/tests/nonreg_tests/bug_7794.tst @@ -0,0 +1,38 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2016 - Scilab Enterprises - Adeline CARNIS +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +//<-- CLI SHELL MODE --> +// <-- Non-regression test for bug 7794 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=7794 +// +// <-- Short Description --> +// Example of findABCD help page failed. + +A = [ 0.5, 0.1,-0.1, 0.2; + 0.1, 0, -0.1,-0.1; + -0.4,-0.6,-0.7,-0.1; + 0.8, 0, -0.6,-0.6]; +B = [0.8;0.1;1;-1]; +C = [1 2 -1 0]; +SYS=syslin(0.1,A,B,C); +nsmp=100; +U=prbs_a(nsmp,nsmp/5); +Y=(flts(U,SYS)+0.3*rand(1,nsmp,'normal')); + +// Compute R +S=15; +[R,N1,SVAL] = findR(S,Y',U'); +N=3; +SYS1 = findABCD(S,N,1,R) ;SYS1.dt=0.1; + +SYS1.X0 = inistate(SYS1,Y',U'); +expectedX0 = [0.180418869; 0.18003251391; -0.06993989023]; +assert_checkalmostequal(SYS1.X0, expectedX0, 1.e-8); + + -- 1.7.9.5