* Bug #13050 fixed - The result of mvvacov function was not symmetric. 56/13156/2
Adeline CARNIS [Thu, 14 Nov 2013 11:04:37 +0000 (12:04 +0100)]
Change-Id: I59e70dd3ddefb52563b03293f38884218a3a8393

scilab/CHANGES_5.5.X
scilab/modules/statistics/macros/cov.sci
scilab/modules/statistics/macros/mvvacov.sci
scilab/modules/statistics/tests/nonreg_tests/bug_13050.dia.ref [new file with mode: 0644]
scilab/modules/statistics/tests/nonreg_tests/bug_13050.tst [new file with mode: 0644]
scilab/modules/statistics/tests/unit_tests/cov.dia.ref
scilab/modules/statistics/tests/unit_tests/cov.tst

index e068f71..060e8e2 100644 (file)
@@ -157,6 +157,8 @@ Scilab Bug Fixes
 
 * Bug #13049 fixed - New handled protocols added in links in SciNotes.
 
+* Bug #13050 fixed - The result of mvvacov was not symmetric.
+
 * Bug #13053 fixed - datatipCreate did not return datatip handle.
 
 * Bug #13055 fixed - Array indexing did not follow Scilab convention in JIMS.
index e8fb75f..34ecc5c 100644 (file)
@@ -151,10 +151,10 @@ function C = cov(varargin)
         if (typeof(x) <> "constant")
             error(msprintf(gettext("%s: Wrong type for input argument #%d: a real matrix expected.\n"),"cov", 1));
         end
-        if (typeof(x) <> "constant")
+        if (typeof(y) <> "constant")
             error(msprintf(gettext("%s: Wrong type for input argument #%d: a real matrix expected.\n"),"cov", 2));
         end
-        if (typeof(x) <> "constant")
+        if (typeof(nrmlztn) <> "constant")
             error(msprintf(gettext("%s: Wrong type for input argument #%d: an integer expected.\n"),"cov", 3));
         end
         //
index 4a3b974..75dfbe1 100644 (file)
@@ -32,6 +32,6 @@ function [v]=mvvacov(x)
     if rhs<>1 then error(msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"),"mvvacov",1)), end
     [n p]=size(x);
     fact=1/n
-    v=fact*((x'*x)-(fact*(x'*ones(n,1)*ones(1,n))*x))
+    v = fact * ((x'*x) - fact * ( (ones(1,n)*x)' * (ones(1,n)*x)))
 endfunction
 
diff --git a/scilab/modules/statistics/tests/nonreg_tests/bug_13050.dia.ref b/scilab/modules/statistics/tests/nonreg_tests/bug_13050.dia.ref
new file mode 100644 (file)
index 0000000..0ca9d95
--- /dev/null
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 13050 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13050
+//
+// <-- Short Description -->
+//    The result of mvvacov was not symmetric.
+// =============================================================================
+x = 1.e8 *  rand(100, 3);
+M = mvvacov(x);
+WARNING: Feature mvvacov is obsolete.
+WARNING: Please use cov instead.
+WARNING: This feature will be permanently removed in Scilab 6.0.0
+
+[m, n] = size(M);
+assert_checkequal(M-M', zeros(m, n));
diff --git a/scilab/modules/statistics/tests/nonreg_tests/bug_13050.tst b/scilab/modules/statistics/tests/nonreg_tests/bug_13050.tst
new file mode 100644 (file)
index 0000000..c692902
--- /dev/null
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 13050 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13050
+//
+// <-- Short Description -->
+//    The result of mvvacov was not symmetric.
+// =============================================================================
+
+x = 1.e8 *  rand(100, 3);
+M = mvvacov(x);
+[m, n] = size(M);
+assert_checkequal(M-M', zeros(m, n));
index 98bc336..cc69200 100644 (file)
@@ -6,6 +6,28 @@
 // Run with test_run('statistics', 'cov', ['no_check_error_output']);
 // <-- JVM NOT MANDATORY -->
 // <-- ENGLISH IMPOSED -->
+// Check error
+assert_checkfalse(execstr("cov()"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong number of input argument(s): %d, %d or %d expected.\n"),"cov", 1, 2, 3);
+assert_checkerror("cov()", refMsg);
+assert_checkfalse(execstr("cov(""r"")"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: a real matrix expected.\n"),"cov", 1);
+assert_checkerror("cov(""r"")", refMsg);
+assert_checkfalse(execstr("cov([1;2], ""r"")"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: an integer or a real matrix expected.\n"),"cov", 2);
+assert_checkerror("cov([1;2], ""r"")", refMsg);
+assert_checkfalse(execstr("cov(""r"", [1;2])"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: a real matrix expected.\n"),"cov", 1);
+assert_checkerror("cov(""r"", [1;2])", refMsg);
+assert_checkfalse(execstr("cov(""r"", [1;2], 1)"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: a real matrix expected.\n"),"cov", 1);
+assert_checkerror("cov(""r"", [1;2], 1)", refMsg);
+assert_checkfalse(execstr("cov([1;2], ""r"", 1)"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: a real matrix expected.\n"),"cov", 2);
+assert_checkerror("cov([1;2], ""r"", 1)", refMsg);
+assert_checkfalse(execstr("cov([1;2], [3;4], ""r"")"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: an integer expected.\n"),"cov", 3);
+assert_checkerror("cov([1;2], [3;4], ""r"")", refMsg);
 x = [1;2];
 y = [3;4];
 computed = cov (x,y);
index 27f3629..c7da012 100644 (file)
@@ -9,6 +9,34 @@
 // <-- JVM NOT MANDATORY -->
 // <-- ENGLISH IMPOSED -->
 
+// Check error
+assert_checkfalse(execstr("cov()"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong number of input argument(s): %d, %d or %d expected.\n"),"cov", 1, 2, 3);
+assert_checkerror("cov()", refMsg);
+
+assert_checkfalse(execstr("cov(""r"")"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: a real matrix expected.\n"),"cov", 1);
+assert_checkerror("cov(""r"")", refMsg);
+
+assert_checkfalse(execstr("cov([1;2], ""r"")"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: an integer or a real matrix expected.\n"),"cov", 2);
+assert_checkerror("cov([1;2], ""r"")", refMsg);
+
+assert_checkfalse(execstr("cov(""r"", [1;2])"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: a real matrix expected.\n"),"cov", 1);
+assert_checkerror("cov(""r"", [1;2])", refMsg);
+
+assert_checkfalse(execstr("cov(""r"", [1;2], 1)"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: a real matrix expected.\n"),"cov", 1);
+assert_checkerror("cov(""r"", [1;2], 1)", refMsg);
+
+assert_checkfalse(execstr("cov([1;2], ""r"", 1)"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: a real matrix expected.\n"),"cov", 2);
+assert_checkerror("cov([1;2], ""r"", 1)", refMsg);
+
+assert_checkfalse(execstr("cov([1;2], [3;4], ""r"")"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: an integer expected.\n"),"cov", 3);
+assert_checkerror("cov([1;2], [3;4], ""r"")", refMsg);
 
 x = [1;2];
 y = [3;4];