* Bug #7378 fixed - quart used with only NaNs returns NaN 36/12536/7
Paul BIGNIER [Fri, 13 Sep 2013 15:05:56 +0000 (17:05 +0200)]
 * quart() failed when input argument only contained NaNs.

Change-Id: I16ac1547571be45aa489dcfd2923951d9e7497e5

scilab/CHANGES
scilab/modules/statistics/macros/quart.sci
scilab/modules/statistics/tests/nonreg_tests/bug_7378.dia.ref [new file with mode: 0644]
scilab/modules/statistics/tests/nonreg_tests/bug_7378.tst [new file with mode: 0644]

index bdbb948..74e6c66 100644 (file)
@@ -327,7 +327,9 @@ In 6.0.0:
 
 * Bug #2517 fixed  - "position" property format was not accepted by figure() despite what was said in help
 
-* Bug #6314 fixed  - The identical code of %p_m_r() and  %r_m_p() was not factorized
+* Bug #6314 fixed  - The identical code of %p_m_r() and %r_m_p() was not factorized
+
+* Bug #7378 fixed  - quart used with only NaNs did not return NaN
 
 * Bug #7646 fixed  - Extractions A'(1,2) and A.'(1,2) from a transposed matrix were not possible
 
index 2d139de..012a703 100644 (file)
@@ -33,7 +33,7 @@ function q=quart(x,orien)
 
     function y = vperctl(x,p)
         //inline function wich computes percentiles of a vector
-        k=isnan(x)
+        k=isnan(x);
         x(k)=[];
         n=size(x,"*")
         x=gsort(x,"g","i")
@@ -42,7 +42,10 @@ function q=quart(x,orien)
         y=interpln(data,p);
     endfunction
 
-    if x==[] then q=%nan, return, end
+    if x==[] | and(isnan(x)) then
+        q = %nan;
+        return;
+    end
     if rhs==1 then
         q=vperctl(x(:),[25 50 75])
         q=q(:)
diff --git a/scilab/modules/statistics/tests/nonreg_tests/bug_7378.dia.ref b/scilab/modules/statistics/tests/nonreg_tests/bug_7378.dia.ref
new file mode 100644 (file)
index 0000000..d2ad59a
--- /dev/null
@@ -0,0 +1,27 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2016 - Scilab Enterprises - Paul Bignier
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 7378 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7378
+//
+// <-- Short Description -->
+// quart() failed when input argument only contained NaNs.
+// =============================================================================
+q1 = quart(%nan);
+q2 = quart([%nan %nan]);
+q3 = quart([%nan; %nan]);
+q4 = quart(%nan, "r");
+q5 = quart([%nan; %nan], "r");
+assert_checkequal(q1, %nan);
+assert_checkequal(q2, %nan);
+assert_checkequal(q3, %nan);
+assert_checkequal(q4, %nan);
+assert_checkequal(q5, %nan);
diff --git a/scilab/modules/statistics/tests/nonreg_tests/bug_7378.tst b/scilab/modules/statistics/tests/nonreg_tests/bug_7378.tst
new file mode 100644 (file)
index 0000000..075d6ef
--- /dev/null
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2016 - Scilab Enterprises - Paul Bignier
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 7378 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7378
+//
+// <-- Short Description -->
+// quart() failed when input argument only contained NaNs.
+// =============================================================================
+
+q1 = quart(%nan);
+q2 = quart([%nan %nan]);
+q3 = quart([%nan; %nan]);
+q4 = quart(%nan, "r");
+q5 = quart([%nan; %nan], "r");
+
+assert_checkequal(q1, %nan);
+assert_checkequal(q2, %nan);
+assert_checkequal(q3, %nan);
+assert_checkequal(q4, %nan);
+assert_checkequal(q5, %nan);