Test corrections on module for operation+ and operation- with empty matrix 61/17561/7
Pierre-Aime Agnel [Thu, 10 Dec 2015 17:44:29 +0000 (18:44 +0100)]
action_binding to polynomials
grep for WARNING_EMPTY_OPS on test files to remove warning("off") once the
warning on operation+ and operation- are removed from scilab
without core

Change-Id: I8df147f450e8c173a5c0fb96f8d551d318cb3d77

51 files changed:
scilab/modules/api_scilab/tests/unit_tests/string_writing_api.dia.ref
scilab/modules/api_scilab/tests/unit_tests/string_writing_api.tst
scilab/modules/ast/src/cpp/operations/types_addition.cpp
scilab/modules/ast/src/cpp/operations/types_subtraction.cpp
scilab/modules/ast/tests/unit_tests/addition.dia.ref
scilab/modules/ast/tests/unit_tests/addition.tst
scilab/modules/ast/tests/unit_tests/subtraction.tst
scilab/modules/cacsd/macros/csim.sci
scilab/modules/cacsd/macros/nyquist.sci
scilab/modules/compatibility_functions/macros/mtlb_eval.sci
scilab/modules/completion/src/c/getCommonPart.c
scilab/modules/dynamic_link/macros/gencompilationflags_unix.sci
scilab/modules/dynamic_link/macros/ilib_compile.sci
scilab/modules/elementary_functions/macros/cosd.sci
scilab/modules/elementary_functions/macros/cscd.sci
scilab/modules/elementary_functions/macros/members.sci
scilab/modules/elementary_functions/macros/modulo.sci
scilab/modules/elementary_functions/macros/nextpow2.sci
scilab/modules/elementary_functions/macros/nthroot.sci
scilab/modules/elementary_functions/macros/pmodulo.sci
scilab/modules/elementary_functions/macros/secd.sci
scilab/modules/elementary_functions/macros/sind.sci
scilab/modules/elementary_functions/macros/tand.sci
scilab/modules/elementary_functions/macros/unwrap.sci
scilab/modules/elementary_functions/tests/unit_tests/nthroot.tst
scilab/modules/fileio/macros/fullfile.sci
scilab/modules/graphics/macros/plot.sci
scilab/modules/integer/tests/unit_tests/intops.dia.ref
scilab/modules/integer/tests/unit_tests/intops.tst
scilab/modules/linear_algebra/macros/diff.sci
scilab/modules/linear_algebra/macros/quaskro.sci
scilab/modules/m2sci/macros/mfile2sci.sci
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_search.dia.ref
scilab/modules/optimization/tests/unit_tests/neldermead/neldermead_search.tst
scilab/modules/optimization/tests/unit_tests/optimbase/optimbase_log.dia.ref
scilab/modules/optimization/tests/unit_tests/optimbase/optimbase_log.tst
scilab/modules/overloading/macros/%p_string.sci
scilab/modules/overloading/macros/%r_a_s.sci
scilab/modules/overloading/macros/%r_simp.sci
scilab/modules/overloading/macros/%s_a_r.sci
scilab/modules/overloading/tests/unit_tests/rational.dia.ref
scilab/modules/overloading/tests/unit_tests/rational.tst
scilab/modules/parameters/macros/get_param.sci
scilab/modules/polynomials/macros/pol2str.sci
scilab/modules/polynomials/tests/unit_tests/pol2str.dia.ref
scilab/modules/polynomials/tests/unit_tests/pol2str.tst
scilab/modules/signal_processing/macros/bilt.sci
scilab/modules/signal_processing/macros/mrfit.sci
scilab/modules/signal_processing/macros/wfir_gui.sci
scilab/modules/sparse/macros/sprand.sci
scilab/modules/string/macros/sci2exp.sci

index d450570..4324e77 100644 (file)
@@ -13,7 +13,7 @@ cflags = "-I"+SCI+"/modules/localization/includes";
 ilib_build("string_writing",["write_string","write_string"],"string_writing_api.c",[],"","",cflags);
 exec("loader.sce");
 a_ref = "may the puffin be with you ";
-b = [];
+b = "";
 a = write_string();
 for i=1:size(a,"r")
     for j=1:size(a,"c")
index 5f399e2..05eca78 100644 (file)
@@ -1,6 +1,6 @@
 // =============================================================================
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) 2009-2010 - DIGITEO 
+// Copyright (C) 2009-2010 - DIGITEO
 //
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
@@ -15,7 +15,7 @@ ilib_build("string_writing",["write_string","write_string"],"string_writing_api.
 exec("loader.sce");
 
 a_ref = "may the puffin be with you ";
-b = [];
+b = "";
 a = write_string();
 for i=1:size(a,"r")
     for j=1:size(a,"c")
index 76c343b..67251bc 100644 (file)
@@ -1312,7 +1312,6 @@ InternalType* add_E_SC(T *_pL, U *_pR)
 template<class T, class U, class O>
 InternalType* add_E_E(T * /*_pL*/, U * /*_pR*/)
 {
-    Sciwarning(_("operation +: Warning adding a matrix with the empty matrix will give an empty matrix result.\n")); 
     Double* pOut = Double::Empty();
     add();
     return pOut;
index 1dc30fd..75dc487 100644 (file)
@@ -1090,7 +1090,6 @@ InternalType* sub_E_MC(T * /*_pL*/, U *_pR)
 template<class T, class U, class O>
 InternalType* sub_E_E(T * /*_pL*/, U * /*_pR*/)
 {
-    Sciwarning(_("operation -: Warning adding a matrix with the empty matrix will give an empty matrix result.\n")); 
     Double* pOut = Double::Empty();
     sub();
     return pOut;
index 2b22696..4551c8b 100644 (file)
@@ -37,6 +37,7 @@ I32 = int32([-32 -64 ; -96 -128]);
 UI32 = uint32([32 64 ; 96 128]);
 str = "string";
 STR = ["string1" "string2";"string3" "string4"];
+warning("off"); // WARNING_EMPTY_OPS
 assert_checkequal(empty + empty, []);
 assert_checkequal(empty + r, []);
 assert_checkequal(empty + c,  empty);
index 759410e..fb281e9 100644 (file)
@@ -44,6 +44,7 @@ UI32 = uint32([32 64 ; 96 128]);
 str = "string";
 STR = ["string1" "string2";"string3" "string4"];
 
+warning("off"); // WARNING_EMPTY_OPS
 assert_checkequal(empty + empty, []);
 assert_checkequal(empty + r, []);
 assert_checkequal(empty + c,  empty);
index 7c73a06..f712a9c 100644 (file)
@@ -41,6 +41,7 @@ ui32 = uint32(32);
 I32 = int32([-32 -64 ; -96 -128]);
 UI32 = uint32([32 64 ; 96 128]);
 
+warning("off"); // WARNING_EMPTY_OPS
 assert_checkequal(empty - empty, []);
 assert_checkequal(empty - r, []);
 assert_checkequal(empty - c, []);
index d14fe4e..3e4bb8a 100644 (file)
@@ -93,9 +93,14 @@ function [y,x]=csim(u,dt,sl,x0,tol)
             comp(uu),
             u(1)=uu,
         end
-    else error(44,2)
+    else error(msprintf(gettext("%s: Wrong type for input argument #%d: Function expected"), "csim", 2));
     end;
     //
+    if isempty(dt) then
+        y = [];
+        x = [];
+        return
+    end
     if rhs==3 then x0=sl(6),end
     if imp==1|step==1 then x0=0*x0,end
     nt=size(dt,"*");x=0*ones(ma,nt);
@@ -160,6 +165,6 @@ function [y,x]=csim(u,dt,sl,x0,tol)
         end;
         k=k+n
     end;
-    y=c*x+d*ut
+    y = c*x + d*ut
     if lhs==2 then x=v1*v2*x,end
 endfunction
index 10fb2dd..18ef005 100644 (file)
@@ -195,6 +195,9 @@ function nyquist(varargin)
     L=0;
     DIc=0.2;
     while %t
+        if isempty(Ic) then
+            break
+        end
         ksup=find(Ic-L>DIc);
         if ksup==[] then break,end
         kk1=min(ksup);
index 00c3d87..0c5e450 100644 (file)
@@ -17,7 +17,7 @@ function r=mtlb_eval(%s1,%s2)
 
     // Init all variables useful to launch mfile2sci()
     deff("r=isanmfile(s)","r=%f");
-    res_path=[];
+    res_path="";
     logfile=-1;
     batch=%t;
     fnam="%fun";
index 1429067..a670868 100644 (file)
@@ -73,8 +73,9 @@ char *getCommonPart(char **dictionary, int sizeDictionary)
     {
         int i = 0;
         int r = 0;
-        char *currentstr = dictionary[0];
+        char *currentstr = NULL;
         qsort(dictionary, sizeDictionary, sizeof dictionary[0], cmp);
+        currentstr = dictionary[0];
 
         r = cmpPos(currentstr, dictionary[1]);
         for (i = 1; i < sizeDictionary - 1; i++)
index 1489137..1113ff2 100644 (file)
@@ -22,6 +22,21 @@ function cmd = gencompilationflags_unix(ldflags, cflags, fflags, cc, flagsType)
         error(msprintf(gettext("%s: Wrong number of input arguments: %d expected.\n"),"gencompilationflags_unix",5));
         return
     end
+    if isempty(ldflags)
+        ldflags = ""
+    end
+    if isempty(cflags)
+        cflags = ""
+    end
+    if isempty(fflags)
+        fflags = ""
+    end
+    if isempty(cc)
+        cc = ""
+    end
+    if isempty(flagsType)
+        flagsType = ""
+    end
 
     cmd = "";
 
index 09dd1ef..3e13bf8 100644 (file)
@@ -49,6 +49,19 @@ function libn = ilib_compile(lib_name, ..
         return ;
     end
 
+    if isempty(ldflags)
+        ldflags = ""
+    end
+    if isempty(cflags)
+        cflags = ""
+    end
+    if isempty(fflags)
+        fflags = ""
+    end
+    if isempty(cc)
+        cc = ""
+    end
+
     oldpath = pwd();
     files = files(:)';
 
index 9396f69..018a981 100644 (file)
@@ -15,16 +15,18 @@ function x = cosd(x)
     if rhs <> 1 then
         error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"),"cosd", 1));
     end
-    
+
     if type(x) <> 1 | ~isreal(x) then
         error(msprintf(gettext("%s: Wrong type for input argument #%d: Real matrix expected.\n"),"cosd",1));
     end
 
-    n = round(x/90);
-    x = x - n*90;
-    m = pmodulo(n,4);
-    x(m==0) = cos(%pi/180*x(m==0));
-    x(m==1) = -sin(%pi/180*x(m==1));
-    x(m==2) = -cos(%pi/180*x(m==2));
-    x(m==3) = sin(%pi/180*x(m==3));
+    if ~isempty(x)
+        n = round(x/90);
+        x = x - n*90;
+        m = pmodulo(n,4);
+        x(m==0) = cos(%pi/180*x(m==0));
+        x(m==1) = -sin(%pi/180*x(m==1));
+        x(m==2) = -cos(%pi/180*x(m==2));
+        x(m==3) = sin(%pi/180*x(m==3));
+    end
 endfunction
index 7a4e1e2..ab3e6b2 100644 (file)
@@ -14,16 +14,18 @@ function x = cscd(x)
     if rhs <> 1 then
         error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"),"cscd", 1));
     end
-    
+
     if type(x) <> 1 | ~isreal(x) then
         error(msprintf(gettext("%s: Wrong type for input argument #%d: Real matrix expected.\n"), "cscd", 1));
     end
 
-    n = round(x/90);
-    x = x - n*90;
-    m = pmodulo(n,4);
-    x(m==0) = 1 ./ sin(%pi/180*x(m==0));
-    x(m==1) = 1 ./ cos(%pi/180*x(m==1));
-    x(m==2) = -1 ./ sin(%pi/180*x(m==2));
-    x(m==3) = -1 ./ cos(%pi/180*x(m==3));
+    if ~isempty(x)
+        n = round(x/90);
+        x = x - n*90;
+        m = pmodulo(n,4);
+        x(m==0) = 1 ./ sin(%pi/180*x(m==0));
+        x(m==1) = 1 ./ cos(%pi/180*x(m==1));
+        x(m==2) = -1 ./ sin(%pi/180*x(m==2));
+        x(m==3) = -1 ./ cos(%pi/180*x(m==3));
+    end
 endfunction
index bf735f2..d2c53e6 100644 (file)
@@ -232,7 +232,9 @@ function [nb, loc] = members(A, S, varargin)
                 loc = I;
                 loc(k) = kS(I(k));
                 if last then
-                    loc(k) = length(S)-loc(k)+1;
+                    if ~isempty(k)
+                        loc(k) = length(S)-loc(k)+1;
+                    end
                 end
                 loc = matrix(loc, size(A));
             end
@@ -324,7 +326,9 @@ function [nb, loc] = members(A, S, varargin)
             if lhs > 1
                 if ~last
                     k = loc~=0;
-                    loc(k) = LS - loc(k) + 1;
+                    if ~isempty(loc(k))
+                        loc(k) = LS - loc(k) + 1;
+                    end
                 end
                 loc = matrix(loc, sA);
             end
index 0e65511..153ae96 100644 (file)
@@ -39,6 +39,10 @@ function i = modulo(n, m)
 
     // --------------------------  Processing ----------------------------
 
+    if isempty(m)
+        i = n;
+        return
+    end
     if or(mt==[1 8]) & mt==nt then
         ms = size(m)
         ns = size(n)
index a8cd9d9..8e91099 100644 (file)
@@ -20,5 +20,7 @@ function e = nextpow2(n)
     f = zeros(n);
     [f(kf), e(kf)] = frexp(n(kf));
     k = find(f==0.5); // n(k) is a power of 2
-    e(k) = e(k)-1;
+    if ~isempty(k)
+        e(k) = e(k)-1;
+    end
 endfunction
index 4159eee..fbce8b3 100644 (file)
@@ -29,6 +29,14 @@ function y = nthroot(x,n)
     if (size(n,"*")>1 & size(n,"*")<>size(x,"*")) then
         error(msprintf(gettext("%s: Wrong sizes for input argument #%d and #%d: Same sizes expected.\n"),"nthroot", 1, 2));
     end
+    if isempty(x)
+        y = [];
+        return
+    end
+    if isempty(n)
+        y = x;
+        return
+    end
 
     reste = modulo(n,2);
     // Making 'reste' one element
index f21a06f..631ea5a 100644 (file)
@@ -42,6 +42,10 @@ function i = pmodulo(n, m)
 
     // --------------------------  Processing ----------------------------
 
+    if isempty(m)
+        i = n;
+        return;
+    end
     if  nt==2 then
         [i,q] = pdiv(n, m)
     else
@@ -57,11 +61,15 @@ function i = pmodulo(n, m)
         i = n - floor(n ./ m) .* m
         k = find(i<0)           // this may occur for encoded integers
         if length(m)>1 then
-            i(k) = i(k) + m(k)
+            if ~isempty(k)
+                i(k) = i(k) + m(k)
+            end
             i = iconvert(i, inttype(n))
             i = matrix(i, ms)
         else
-            i(k) = i(k) + m
+            if ~isempty(k)
+                i(k) = i(k) + m
+            end
             i = iconvert(i, inttype(n))
             i = matrix(i, ns)
         end
index 23b2b21..b2093d7 100644 (file)
@@ -20,14 +20,15 @@ function x = secd(x)
         error(msprintf(gettext("%s: Wrong type for input argument #%d: Real matrix expected.\n"),"secd",1));
     end
 
-    n = round(x/90);
-    x = x - n*90;
-    m = pmodulo(n, 4);
-    x(m==0) = 1 ./ cos(%pi/180*x(m==0));
-    x(m==1&x<>0) = -1 ./ sin(%pi/180*x(m==1&x<>0));
-    x(m==1&x==0) = -%inf;
-    x(m==2) = -1 ./ cos(%pi/180*x(m==2));
-    x(m==3&x<>0) = 1 ./ sin(%pi/180*x(m==3&x<>0));
-    x(m==3&x==0) = %inf;
-
+    if ~isempty(x)
+        n = round(x/90);
+        x = x - n*90;
+        m = pmodulo(n, 4);
+        x(m==0) = 1 ./ cos(%pi/180*x(m==0));
+        x(m==1&x<>0) = -1 ./ sin(%pi/180*x(m==1&x<>0));
+        x(m==1&x==0) = -%inf;
+        x(m==2) = -1 ./ cos(%pi/180*x(m==2));
+        x(m==3&x<>0) = 1 ./ sin(%pi/180*x(m==3&x<>0));
+        x(m==3&x==0) = %inf;
+    end
 endfunction
index 7343127..2e99132 100644 (file)
@@ -17,16 +17,18 @@ function x = sind(x)
     if rhs <> 1 then
         error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"),"sind", 1));
     end
-    
+
     if type(x)<>1 | ~isreal(x) then
         error(msprintf(gettext("%s: Wrong type for input argument #%d: Real matrix expected.\n"),"sind",1));
     end
 
-    n = round(x/90);
-    x = x - n*90;
-    m = pmodulo(n,4);
-    x(m == 0) = sin(%pi/180 * x(m == 0));
-    x(m == 1) = cos(%pi/180 * x(m == 1));
-    x(m == 2) = -sin(%pi/180 * x(m == 2));
-    x(m == 3) = -cos(%pi/180 * x(m == 3));
+    if ~isempty(x)
+        n = round(x/90);
+        x = x - n*90;
+        m = pmodulo(n,4);
+        x(m == 0) = sin(%pi/180 * x(m == 0));
+        x(m == 1) = cos(%pi/180 * x(m == 1));
+        x(m == 2) = -sin(%pi/180 * x(m == 2));
+        x(m == 3) = -cos(%pi/180 * x(m == 3));
+    end
 endfunction
index a82a76d..df3429c 100644 (file)
@@ -19,17 +19,21 @@ function y = tand(x)
     if rhs <> 1 then
         error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"),"tand", 1));
     end
-    
+
     if type(x)<>1 | ~isreal(x) then
         error(msprintf(gettext("%s: Wrong type for input argument #%d: Real matrix expected.\n"),"tand",1));
     end
 
     // Argument reduction toward [-90,90[
-    n = round(x / 180);
-    x = x - n * 180;
-    y = tan(%pi/180*x);
-    // Set all singular points to nan
-    m = pmodulo(x + 90, 180);
-    y(m == 0) = %nan;
+    if ~isempty(x)
+        n = round(x / 180);
+        x = x - n * 180;
+        y = tan(%pi/180*x);
+        // Set all singular points to nan
+        m = pmodulo(x + 90, 180);
+        y(m == 0) = %nan;
+    else
+        y = []
+    end
 endfunction
 
index 99d4bc2..0bcca2a 100644 (file)
@@ -115,7 +115,9 @@ function [retval, K] = unwrap(a, varargin)
             d(K) = ju(K) - sign(ju(K)).*jump
             // Cleaning wrongly inserted jumps :
             k = find(abs(d(K)-mean(d))>5*stdev(d))
-            d(K(k)) = d(K(k)) - sign(d(K(k))).*jump
+            if ~isempty(k)
+                d(K(k)) = d(K(k)) - sign(d(K(k))).*jump
+            end
         else
             d(K) = avL(K)
         end
index 8fd6544..475b211 100644 (file)
@@ -9,7 +9,7 @@
 
 // <-- CLI SHELL MODE -->
 
-// unit tests for nthroot() function 
+// unit tests for nthroot() function
 // =============================================================================
 // Run with test_run('elementary_functions', 'nthroot', ['no_check_error_output'])
 
index 5210b7d..1405386 100644 (file)
@@ -18,6 +18,7 @@ function f = fullfile(varargin)
 
     fs = ["/" "\"];
     f  = varargin(1);
+    is_fempty = %f;
 
     if ~isempty(f) then
         if type(f) <> 10 then
@@ -28,24 +29,30 @@ function f = fullfile(varargin)
             error(msprintf(gettext("%s: Wrong size for input argument #%d: a string expected.\n"), "fullfile", 1));
         end
         f = stripblanks(f);
+    else
+        is_fempty = %t;
     end
 
     nbParameters =  size(varargin)
     for k = 2 : nbParameters
         arg = varargin(k);
-        if isempty(f) | isempty(arg)
-            if ~isempty(arg) then
-                if type(arg) <> 10 then
-                    error(msprintf(gettext("%s: Wrong type for input argument #%d: a string expected.\n"), "fullfile", k));
-                end
-
-                if (size(arg,"*") <> 1) & (k <> nbParameters) then
-                    error(msprintf(gettext("%s: Wrong size for input argument #%d: a string expected.\n"), "fullfile", k));
-                end
+        if isempty(arg)
+            // current arg is empty => nothing to do
+            // f does not change
+            continue;
+        elseif isempty(f)
+            // f is currently empty and arg as a value
+            // check arg is a scalar string
+            // and set f as arg
+            if type(arg) <> 10 then
+                error(msprintf(gettext("%s: Wrong type for input argument #%d: a string expected.\n"), "fullfile", k));
             end
-            f = f + arg;
-        else
 
+            if (size(arg,"*") <> 1) & (k <> nbParameters) then
+                error(msprintf(gettext("%s: Wrong size for input argument #%d: a string expected.\n"), "fullfile", k));
+            end
+            f = arg;
+        else //arg and f are not empty
             if type(arg) <> 10 then
                 error(msprintf(gettext("%s: Wrong type for input argument #%d: a string expected.\n"), "fullfile", k));
             end
index 6330738..e70f57d 100644 (file)
@@ -102,7 +102,7 @@ function plot(varargin)
         //
         // 1. Test if 2 data couples (first : type==1, second : type=[1,13,130])
         // are at least separated by 2 indices
-        if (couple(2:$)-couple(1:$-1)<2)
+        if (size(couple, "*") > 1 && couple(2:$)-couple(1:$-1)<2)
             warning("Error inside input argument !");
             return;
         end
index a1ceccb..6eb8451 100644 (file)
@@ -7,6 +7,7 @@
 // =============================================================================
 funcprot(0);
 //extractions
+warning("off"); //WARNING_EMPTY_OPS
 v=int8([1 2 3]);
 assert_checkequal(v(2), int8(2));
 assert_checkequal(v([1 3]), int8([1 3]));
index 3025aed..c18f8f0 100644 (file)
@@ -10,6 +10,7 @@
 funcprot(0);
 
 //extractions
+warning("off"); //WARNING_EMPTY_OPS
 v=int8([1 2 3]);
 assert_checkequal(v(2), int8(2));
 assert_checkequal(v([1 3]), int8([1 3]));
index a28f1c7..49b790f 100644 (file)
@@ -37,8 +37,12 @@ function x=diff(x,N,DIM)
 
 
     if N==1 then
-        if DIM==-1 then
-            x=x(2:$)-x(1:$-1)
+        if (DIM==-1) then
+            if prod(dims)>1
+                x=x(2:$)-x(1:$-1);
+            else
+                x = [];
+            end
         else
             args=emptystr(1,nd)+":"
             arg1=args;arg1(DIM)="2:$";
index 8a7417c..3063b60 100644 (file)
@@ -45,7 +45,11 @@ function [Q,Z,Ec,Ac,Qd,Zd,numbeps]=quaskro(E,A,tol)
         tol=0
     end
     [Ac,Ec,Q,Z,nlbcks,muk,nuk,muk0,nuk0,mnei]=fstair(A,E,Q,Z,stair,rk,tol)
-    numbeps=muk0(1:nlbcks)-nuk0(1:nlbcks);
+    if nlbcks > 0 then
+        numbeps=muk0(1:nlbcks)-nuk0(1:nlbcks);
+    else
+        numbeps = [];
+    end
     Qd=[mnei(1),mnei(3),na-mnei(1)-mnei(3)];
     Zd=[mnei(2),mnei(3),ma-mnei(2)-mnei(3)];
 
index 543f402..359ab9e 100644 (file)
@@ -263,25 +263,34 @@ function res=mfile2sci(fil,res_path,Recmode,only_double,verbose_mode,prettyprint
         size3=size(not_mtlb_fun,1)
 
         if size(mtlbref_fun,"*")<>0 then
-            mtlbref_fun(:,1)=""""+mtlbref_fun(:,1)+""""
+            mtlbref_fun(:,1) = """"+mtlbref_fun(:,1)+"""";
+            mtlbref_fun12 = mtlbref_fun(:,1) + mtlbref_fun(:,2);
+        else
+            mtlbref_fun12 = [];
         end
         if size(mtlbtool_fun,"*")<>0 then
-            mtlbtool_fun(:,1)=""""+mtlbtool_fun(:,1)+""""
+            mtlbtool_fun(:,1) = """"+mtlbtool_fun(:,1)+"""";
+            mtlbtool_fun12 = mtlbtool_fun(:,1) + mtlbtool_fun(:,2);
+        else
+            mtlbtool_fun12 = [];
         end
         if size(not_mtlb_fun,"*")<>0 then
-            not_mtlb_fun(:,1)=""""+not_mtlb_fun(:,1)+""""
+            not_mtlb_fun(:,1) = """"+not_mtlb_fun(:,1)+"""";
+            not_mtlb_fun12 = not_mtlb_fun(:,1) + not_mtlb_fun(:,2);
+        else
+            not_mtlb_fun12 = [];
         end
 
         info_resume=[msprintf(gettext("****** %s: Functions of mfile2sci() session ******"),fnam);
         "*";
         msprintf(gettext("%d Matlab Function(s) not yet converted, original calling sequence used:"),size1);
-        mtlbref_fun(:,1)+mtlbref_fun(:,2);
+        mtlbref_fun12;
         "*";
         msprintf(gettext("%d Matlab Toolbox(es) Functions, original calling sequence used :"),size2);
-        mtlbtool_fun(:,1)+mtlbtool_fun(:,2);
+        mtlbtool_fun12;
         "*";
         msprintf(gettext("%d Unknown Function(s), original calling sequence used :"),size3);
-        not_mtlb_fun(:,1)+not_mtlb_fun(:,2);
+        not_mtlb_fun12;
         "*"]
 
         write(resume_logfile,margin+info_resume)
index 9250499..ecf09a7 100644 (file)
 //
 // optimtestcase --
 //   Non linear inequality constraints are positive.
-//    
+//
 // Arguments
 //   x: the point where to compute the function
 //   index : the stuff to compute
 //
 function [ f , c , index ] = optimtestcase ( x , index )
-  f = []
-  c = []
-  if ( index == 2 | index == 6 ) then
-    f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ...
-      - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4)
-  end
-  if ( index == 5 | index == 6 ) then
-    c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ...
-              - x(1) + x(2) - x(3) + x(4) + 8
-    c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ...
-              + x(1) + x(4) + 10.0
-    c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ...
-              + x(2) + x(4) + 5.0
-    c = [c1 c2 c3]
-  end
+    f = []
+    c = []
+    if ( index == 2 | index == 6 ) then
+        f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ...
+        - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4)
+    end
+    if ( index == 5 | index == 6 ) then
+        c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ...
+        - x(1) + x(2) - x(3) + x(4) + 8
+        c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ...
+        + x(1) + x(4) + 10.0
+        c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ...
+        + x(2) + x(4) + 5.0
+        c = [c1 c2 c3]
+    end
 endfunction
+warning("off"); // WARNING_EMPTY_OPS
 //
 // Test search with various error cases
 //
index 9767924..31cbfec 100644 (file)
 //
 // optimtestcase --
 //   Non linear inequality constraints are positive.
-//    
+//
 // Arguments
 //   x: the point where to compute the function
 //   index : the stuff to compute
 //
 function [ f , c , index ] = optimtestcase ( x , index )
-  f = []
-  c = []
-  if ( index == 2 | index == 6 ) then
-    f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ...
-      - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4)
-  end
-  if ( index == 5 | index == 6 ) then
-    c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ...
-              - x(1) + x(2) - x(3) + x(4) + 8
-    c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ...
-              + x(1) + x(4) + 10.0
-    c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ...
-              + x(2) + x(4) + 5.0
-    c = [c1 c2 c3]
-  end
+    f = []
+    c = []
+    if ( index == 2 | index == 6 ) then
+        f = x(1)^2 + x(2)^2 + 2.0 * x(3)^2 + x(4)^2 ...
+        - 5.0 * x(1) - 5.0 * x(2) - 21.0 * x(3) + 7.0 * x(4)
+    end
+    if ( index == 5 | index == 6 ) then
+        c1 = - x(1)^2 - x(2)^2 - x(3)^2 - x(4)^2 ...
+        - x(1) + x(2) - x(3) + x(4) + 8
+        c2 = - x(1)^2 - 2.0 * x(2)^2 - x(3)^2 - 2.0 * x(4)^2 ...
+        + x(1) + x(4) + 10.0
+        c3 = - 2.0 * x(1)^2 - x(2)^2 - x(3)^2 - 2.0 * x(1) ...
+        + x(2) + x(4) + 5.0
+        c = [c1 c2 c3]
+    end
 endfunction
 
-
+warning("off"); // WARNING_EMPTY_OPS
 //
 // Test search with various error cases
 //
index 7594856..13508e8 100644 (file)
@@ -9,11 +9,12 @@
 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
 // <-- CLI SHELL MODE -->
 function y = rosenbrock (x)
-  y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
+    y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
 endfunction
 //
 // Test basic verbose
 //
+warning("off"); // WARNING_EMPTY_OPS
 opt = optimbase_new ();
 computed = optimbase_cget(opt,"-verbose");
 assert_checkequal ( computed , 0 );
index f69cca1..f845baa 100644 (file)
 
 
 function y = rosenbrock (x)
-  y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
+    y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
 endfunction
 
 //
 // Test basic verbose
 //
+warning("off"); // WARNING_EMPTY_OPS
 opt = optimbase_new ();
 computed = optimbase_cget(opt,"-verbose");
 assert_checkequal ( computed , 0 );
index 0e482f9..df9658d 100644 (file)
@@ -50,18 +50,34 @@ function txt=%p_string(p)
                 if knz(1)>1 then
                     C=C+s
                 else
-                    C(2:$)=C(2:$)+s
+                    if ~isempty(s) && (size(C, "*") >= 2)
+                        C(2:$)=C(2:$)+s
+                    end
                 end
 
-                i=min(find(knz>2))
-                blank=" "
-                e=blank(ones(1,i-1))
-                if size(knz,"*")>=i then e=[e string(knz(i:$)-1)],end
+                i=min(find(knz>2));
+                blank=" ";
+                if ~isempty(i)
+                    e=blank(ones(1,i-1));
+                else
+                    e = [];
+                end
+                if size(knz,"*")>=i then
+                    e=[e string(knz(i:$)-1)];
+                end
 
                 lc=cumsum(length(C))
                 C=strcat(C)
                 E="";
-                for i=1:size(c,"*"),E=E+part(" ",1:(lc(i)-length(E)))+e(i);end
+                if isempty(e)
+                    for i=1:size(c,"*")
+                        E = E + part(" ", 1:(lc(i) - length(E)));
+                    end
+                else
+                    for i=1:size(c,"*")
+                        E = E + part(" ", 1:(lc(i) - length(E))) + e(i);
+                    end
+                end
                 txt(2*l-1:2*l,k)=[E;C];
             end
         end
index 2029e4d..bab2e5d 100644 (file)
@@ -16,6 +16,11 @@ function f=%r_a_s(f,m)
     szf=size(den)
     szm=size(m)
 
+    if isempty(m)
+        f = [];
+        return
+    end
+
     if and(szf>=0)&and(szm>=0) then
         if prod(szf)==1&prod(szm)>1 then
             den=den(ones(m))
index 8e6d0ae..378cf78 100644 (file)
@@ -1,19 +1,20 @@
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
-// Copyright (C) INRIA\r
-// Copyright (C) Samuel GOUGEON - 2015 - sgougeon@free.fr : Bug 13893\r
-//\r
-// This file must be used under the terms of the CeCILL.\r
-// This source file is licensed as described in the file COPYING, which\r
-// you should have received as part of this distribution.  The terms\r
-// are also available at\r
-// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt\r
-\r
-function h = %r_simp(h)\r
-    // implement complex case\r
-    // 0/den => 0/1\r
-    n = numer(h)\r
-    d = denom(h)\r
-    i = find(clean(n)==0 & clean(d)~=0)\r
-    d(i) = 1\r
-    h = rlist(n, d, h(4))\r
-endfunction\r
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) INRIA
+// Copyright (C) Samuel GOUGEON - 2015 - sgougeon@free.fr : Bug 13893
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution.  The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function h = %r_simp(h)
+    // implement complex case
+    // 0/den => 0/1
+    n = numer(h)
+    d = denom(h)
+    i = find(clean(n)==0 & clean(d)~=0)
+    [n, d] = simp(n, d);
+    d(i) = 1
+    h = rlist(n, d, h(4))
+endfunction
index 1f0ef1c..190f21e 100644 (file)
@@ -14,6 +14,10 @@ function f=%s_a_r(m,f)
     szf=size(den)
     szm=size(m)
 
+    if isempty(m)
+        f = [];
+        return;
+    end
     if and(szf>=0)&and(szm>=0) then
         if prod(szf)==1&prod(szm)>1 then
             den=den(ones(m))
index a703a7a..f3c3864 100644 (file)
@@ -72,9 +72,9 @@ H=1+h;
 assert_checkequal(H.num, 1+2*s);
 assert_checkequal(H.den, 2*s);
 H=h+[];
-assert_checkequal(H, h);
+assert_checkequal(H, []);
 H=[]+h;
-assert_checkequal(H, h);
+assert_checkequal(H, []);
 H=h+s;
 assert_checkequal(H.num, 1+2*s^2);
 assert_checkequal(H.den, 2*s);
index 3685cf7..3b438a5 100644 (file)
@@ -7,7 +7,7 @@
 // <-- CLI SHELL MODE -->
 
 
-s=poly(0,'s');
+s=poly(0,"s");
 z = s^0;
 h=1/(2*s);
 assert_checkequal(size(h), [1 1]);
@@ -94,10 +94,10 @@ assert_checkequal(H.num, 1+2*s);
 assert_checkequal(H.den, 2*s);
 
 H=h+[];
-assert_checkequal(H, h);
+assert_checkequal(H, []);
 
 H=[]+h;
-assert_checkequal(H, h);
+assert_checkequal(H, []);
 
 H=h+s;
 assert_checkequal(H.num, 1+2*s^2);
index 88ae5b2..eb1832c 100644 (file)
@@ -15,23 +15,23 @@ function [result,err] = get_param(list_name,param_name,param_default)
         param_default = [];
     end
 
-    if ( type(param_default) == 13 ) then
+    if ( or(type(param_default) == [13 11]) ) then
         prot=funcprot()
         funcprot(0);
     end
     result = param_default;
-    if ( type(param_default) == 13 ) then
+    if ( or(type(param_default) == [13 11]) ) then
         funcprot(prot);
     end
 
     if typeof(list_name)=="plist" then
         if is_param(list_name,param_name) then
-            if ( type(param_default) == 13 ) then
+            if ( or(type(param_default) == [13 11]) ) then
                 prot=funcprot()
                 funcprot(0);
             end
             result = list_name(param_name);
-            if ( type(param_default) == 13 ) then
+            if ( or(type(param_default) == [13 11]) ) then
                 funcprot(prot);
             end
             if nargout==2 then
index 05b47fc..c5d3e6a 100644 (file)
@@ -23,9 +23,13 @@ function S = pol2str(p)
     S(k) = ""
     k = find(cr~=0 & ci~=0)
     k2 = find(k>length(p))
-    S(k(k2)) = "+("+S(k(k2))+")"
+    if ~isempty(S(k(k2)))
+        S(k(k2)) = "+("+S(k(k2))+")";
+    end
     k = find((cr>0 & ci==0) | (cr==0 & ci>0))
-    S(k) = "+"+S(k)
+    if ~isempty(k)
+        S(k) = "+"+S(k);
+    end
     vn = varn(p)
     clear ci cr k2
     for j = 2:(d+1)
index afb7345..294fdae 100644 (file)
@@ -5,6 +5,7 @@
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
 // <-- CLI SHELL MODE -->
+warning("off"); // WARNING_EMPTY_OPS
 assert_checkequal(pol2str(%z), "z");
 assert_checkequal(pol2str([%z %z]), ["z", "z"]);
 p = poly ([1, 2, 3], "x","coeff");
index 4ac003f..356c605 100644 (file)
@@ -6,7 +6,7 @@
 // =============================================================================
 
 // <-- CLI SHELL MODE -->
-
+warning("off"); // WARNING_EMPTY_OPS
 assert_checkequal(pol2str(%z), "z");
 assert_checkequal(pol2str([%z %z]), ["z", "z"]);
 
index dbf7dd0..f2d79f0 100644 (file)
@@ -62,8 +62,16 @@ function [npl,nzr,ngn]=bilt(pl,zr,gn,num,den)
             ngn=prod(n1*ones(zr)-d1*zr)/prod(n1*ones(pl)-d1*pl);
         end
         if ms<>ns then ngn=real(gn*d1**(ms-ns)*ngn);else ngn=real(gn*ngn);end
-        nzr=-(n0*ones(zr)-d0*zr)./(n1*ones(zr)-d1*zr);
-        npl=-(n0*ones(pl)-d0*pl)./(n1*ones(pl)-d1*pl);
+        if isempty(zr)
+            nzr = - (d0*zr) ./ (d1*zr);
+        else
+            nzr = -(n0*ones(zr) - d0*zr) ./ (n1*ones(zr) - d1*zr);
+        end
+        if isempty(pl)
+            npl = -(d0*pl) ./ (d1*pl);
+        else
+            npl = -(n0*ones(pl) - d0*pl)./(n1*ones(pl) - d1*pl);
+        end
         if ms>ns then
             nzr=[nzr';-(d0/d1)*ones(ms-ns,1)];
         elseif ms<ns then
index 544a218..42e3c6c 100644 (file)
@@ -47,8 +47,11 @@ function [num,den]=mrfit(w,mod,r)
     weight=ones(length(w),1);
 
     junk=find(abs(mrfitdiff(delmod./delw)) > .6);
-    ind=1+junk;
-    if junk==[] then ind=[];end;
+    if isempty(junk) then
+        ind = [];
+    else
+        ind = 1 + junk;
+    end
     weight(ind)=10*ones(length(ind),1);
 
     lwnew=[]; modnew=[];
index 4d59eea..0563cc6 100644 (file)
@@ -7,7 +7,7 @@
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
 
-function [ok,values,exprs]=wfir_gui(exprs)
+function [ok,values_res,exprs]=wfir_gui(exprs)
     FT=["lp","hp","bp","sb"]
     WT=["re","tr","hn","hm","kr","ch","ch"]
     //  errcatch(-1,'continue')
@@ -23,7 +23,7 @@ function [ok,values,exprs]=wfir_gui(exprs)
     ftype=exprs(1)
     wtype=exprs(2)
     if execstr("forder="+exprs(3)+";freq_ech="+exprs(4)+";low="+exprs(5)+";high="+exprs(6)+";fp="+exprs(7),"errcatch")<>0 then
-        values=[]
+        values_res=[]
         exprs=[]
         ok=%f
         return
@@ -45,7 +45,13 @@ function [ok,values,exprs]=wfir_gui(exprs)
     axes_h       = 2*margin_y+frame_h;// Frame height
     defaultfont  = "arial"; // Default Font
 
-    fig_id=max(winsid())+1
+    fig_id = max(winsid())
+    if isempty(fig_id)
+        fig_id = 1;
+    else
+        fig_id = fig_id + 1;
+    end
+
     fig = scf(fig_id)
 
     // Remove Scilab graphics menus & toolbar
@@ -524,13 +530,13 @@ function [ok,values,exprs]=wfir_gui(exprs)
     if ret==1&or(winsid()==fig_id) then
         ok=%t
         [ftype,forder,low,high,wtype,fpar,freq_ech]=wfirGetFilterParameters(gui.userdata)
-        values=tlist(["wfir","ftype","forder","low","high","wtype","fpar","freq_ech"],ftype,forder,low,high,wtype,fpar,freq_ech)
+        values_res=tlist(["wfir","ftype","forder","low","high","wtype","fpar","freq_ech"],ftype,forder,low,high,wtype,fpar,freq_ech)
         exprs= wfirGetFilterExprs(gui.userdata)
         delete(fig)
     else
         //user had canceled or closed the gui window
         ok=%f
-        values=[]
+        values_res=[]
         exprs=[]
     end
     clearglobal ret idle;
index a1d3fe7..c63e327 100644 (file)
@@ -33,7 +33,7 @@ function a=sprand(m,n,density,typ)
     elseif typ == "n" | typ == "normal" then //"normal" is the syntax for normal distribution with rand, the equivalent with grand is "nor"
         typ = "nor";
     end
-    
+
     density=max(min(density,1),0);
 
     nel=m*n*density; //the objective number of non zero elements
@@ -45,7 +45,11 @@ function a=sprand(m,n,density,typ)
     //---- generate a sequence of increments----------------------------
     mdist = 1/density //the mean distance between to consecutive index
     nel1  = (2.2-density)*nel; //generate more increments than requested nnz elements
-    ij    = round(1+grand(nel1,1,"exp",(mdist-1)))
+    if nel1<1
+        ij = 1;
+    else
+        ij    = round(1+grand(nel1,1,"exp",(mdist-1)))
+    end
 
     //---- sum the increments to get the index--------------------------
     ij=cumsum(ij);
@@ -68,7 +72,7 @@ function a=sprand(m,n,density,typ)
     elseif typ == "def" then
         a=sparse(ij,grand(nel1,1,typ),[m,n]);
     end
-    
+
 
 endfunction
 
index 0da4980..111a8eb 100644 (file)
@@ -175,7 +175,7 @@ function t=mat2exp(a,lmax)
     end
     a=String(a);
     dots="."+"."
-    t=[];
+    t="";
     if n==1 then
         x=strcat(a,";")
         lx=length(x)