* Bug #13873 fixed - %hm_stdev(H,idim>2) returned zeros(H) 97/17897/5
Nicolas [Thu, 10 Mar 2016 14:38:17 +0000 (15:38 +0100)]
Change-Id: I1387ae7ab49e10a3ade7c653e335dea08203be84

scilab/CHANGES
scilab/modules/overloading/macros/%hm_stdev.sci
scilab/modules/overloading/tests/nonreg_tests/bug_13873.dia.ref [new file with mode: 0644]
scilab/modules/overloading/tests/nonreg_tests/bug_13873.tst [new file with mode: 0644]

index 0fa6d7a..3ecafab 100644 (file)
@@ -319,7 +319,7 @@ In 6.0.0:
 
 * Bug #9456 fixed  - bench_run did not work on a path or in a toolbox
 
-* Bug #12872       - help pages of else, elseif, end, try, sciargs, global, halt, empty and power were in wrong help sections
+* Bug #12872 fixed - help pages of else, elseif, end, try, sciargs, global, halt, empty and power were in wrong help sections
 
 * Bug #13465 fixed - The display of polyline .display_function and .display_function properties was not conventional
 
@@ -329,6 +329,8 @@ In 6.0.0:
 
 * Bug #13869 fixed - bench_run with option nb_run=10 did not override the NB RUN tags
 
+* Bug #13873 fixed - %hm_stdev(H,idim>2) returned zeros(H)
+
 * Bug #13897 fixed - concatenating structures with same fields in mismatching orders failed
 
 * Bug #13939 fixed - in HTML help pages, itemizedlist <ul> were rendered as ordered ones
index c92926e..b529edb 100644 (file)
 // along with this program.
 
 function x = %hm_stdev(m, d, ms)
-
     if argn(2) < 3 then
         ms = %f
     end
     if argn(2) == 3 & type(ms)~=1 & typeof(ms) ~= "hypermat" then
-        error(msprintf(_("%s: Wrong type for input argument #%d: A real matrix expected.\n"),"stdev",3));
+        msg = _("%s: Wrong type for input argument #%d: A real matrix expected.\n")
+        error(msprintf(msg, "stdev", 3));
+    end
+    if d > length(size(m)) then
+        msg = _("%s: Wrong value for input argument #%d: integer <= ndims(argument #%d) expected.\n")
+        error(msprintf(msg,"stdev",2,1));
     end
+
     if argn(2) == 1 | d == "*" then
         if argn(2) == 3 then
             x = stdev(m(:), "*", ms);
@@ -31,10 +36,6 @@ function x = %hm_stdev(m, d, ms)
         d = 2;
     end
     dims = size(m);
-    if d > size(m,d) then
-        x = zeros(m);
-        return
-    end
     N = size(dims, "*");
     p1 = prod(dims(1:d-1));// step to build one vector on which stdev is applied
     p2 = p1*dims(d);//step for beginning of next vectors
@@ -55,15 +56,5 @@ function x = %hm_stdev(m, d, ms)
         x = stdev(matrix(m(I),dims(d),-1), 1);
     end
     dims(d) = 1;
-    if d == N then
-        dims = dims(1:$)
-    else
-        dims(d) = 1
-    end
-    if size(dims, "*") == 2 then
-        x = matrix(x, dims(1), dims(2))
-    else
-        x = hypermat(dims, x)
-    end
-
+    x = matrix(x, dims)
 endfunction
diff --git a/scilab/modules/overloading/tests/nonreg_tests/bug_13873.dia.ref b/scilab/modules/overloading/tests/nonreg_tests/bug_13873.dia.ref
new file mode 100644 (file)
index 0000000..8c7c364
--- /dev/null
@@ -0,0 +1,16 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2016 - Samuel GOUGEON
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 13873 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13873
+//
+// <-- Short Description -->
+// %hm_stdev(H,idim>2) returned zeros(H)
+h = grand(2,3,2,"unf",-1,1);
+assert_checktrue(and(stdev(h,3)~=zeros(h)));
diff --git a/scilab/modules/overloading/tests/nonreg_tests/bug_13873.tst b/scilab/modules/overloading/tests/nonreg_tests/bug_13873.tst
new file mode 100644 (file)
index 0000000..2be7184
--- /dev/null
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2016 - Samuel GOUGEON
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 13873 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13873
+//
+// <-- Short Description -->
+// %hm_stdev(H,idim>2) returned zeros(H)
+
+h = grand(2,3,2,"unf",-1,1);
+assert_checktrue(and(stdev(h,3)~=zeros(h)));