*Bug #13681 fixed - Calling cdfnor to get the X vector sometimes produced a vector... 31/15831/2
Adeline CARNIS [Fri, 16 Jan 2015 08:52:16 +0000 (09:52 +0100)]
Change-Id: Ie5594f13e34ea13dba2d4351cbeb6744699eec44

scilab/CHANGES_5.5.X
scilab/modules/statistics/src/dcdflib/cdfnor.f
scilab/modules/statistics/tests/nonreg_tests/bug_13681.dia.ref [new file with mode: 0644]
scilab/modules/statistics/tests/nonreg_tests/bug_13681.tst [new file with mode: 0644]

index ba59f1c..7113062 100644 (file)
@@ -70,6 +70,8 @@ Scilab Bug Fixes
 
 * Bug #13677 fixed - Indentation of examples in assert_checkerror help page was wrong.
 
+* Bug #13681 fixed - Calling cdfnor to get the X vector sometimes produced a vector with some NaN values.
+
 * Bug #13690 fixed - tight_limits property can now manage X, Y and Z axis separately.
 
 * Bug #13692 fixed - group returned an error for a discrete dynamical system with a specified sample time.
index 086eab6..67f5b0c 100644 (file)
@@ -186,7 +186,7 @@ C
       RETURN
 
   140 CONTINUE
-  150 IF (which.EQ.4) GO TO 170
+  150 IF (which.EQ.2) GO TO 160
 C
 C     X
 C
@@ -212,6 +212,8 @@ C
             x = SIGN(inf,x)
          ENDIF
       ENDIF
+      
+  160 IF (which.EQ.3) GO TO 170  
 C
 C     MEAN
 C
@@ -223,6 +225,8 @@ C
          RETURN
       ENDIF
       IF (vfinite(1,mean).EQ.0) mean = SIGN(inf,mean)
+      
+  170 IF (which.EQ.4) GO TO 190
 C
 C     SD
 C
@@ -234,16 +238,16 @@ C
          RETURN
       ENDIF
       IF (vfinite(1,sd).EQ.0) sd = SIGN(inf,sd)
-      IF (.NOT. (sd.LE.0.0D0)) GO TO 160
+      IF (.NOT. (sd.LE.0.0D0)) GO TO 180
       bound = 0.0D0
       status = -6
       RETURN
 
-  160 CONTINUE
+  180 CONTINUE
 C
 C     Calculate ANSWERS
 C
-  170 IF ((1).EQ. (which)) THEN
+  190 IF ((1).EQ. (which)) THEN
 C
 C     Computing P
 C
diff --git a/scilab/modules/statistics/tests/nonreg_tests/bug_13681.dia.ref b/scilab/modules/statistics/tests/nonreg_tests/bug_13681.dia.ref
new file mode 100644 (file)
index 0000000..d4a0b63
--- /dev/null
@@ -0,0 +1,23 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// ============================================================================
+// <-- Non-regression test for bug 13681 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13681
+//
+// <-- Short Description -->
+// Calling cdfnor to get the "X" vector sometimes produced a vector with some NaN 
+// values.
+Mean = 0;
+Std = 1;
+val = [9, 15, 30, 60, 100, 1000];
+for i = 1:6
+    p = linspace(1e-10,1-1e-10, val(i));
+    q = 1-p;
+    x = cdfnor("X", Mean*ones(p), Std*ones(p), p, q);
+    assert_checkequal(find(isnan(x)), []);
+end
diff --git a/scilab/modules/statistics/tests/nonreg_tests/bug_13681.tst b/scilab/modules/statistics/tests/nonreg_tests/bug_13681.tst
new file mode 100644 (file)
index 0000000..4ce2fcd
--- /dev/null
@@ -0,0 +1,25 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// ============================================================================
+
+// <-- Non-regression test for bug 13681 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13681
+//
+// <-- Short Description -->
+// Calling cdfnor to get the "X" vector sometimes produced a vector with some NaN
+// values.
+
+Mean = 0;
+Std = 1;
+val = [9, 15, 30, 60, 100, 1000];
+for i = 1:6
+    p = linspace(1e-10,1-1e-10, val(i));
+    q = 1-p;
+    x = cdfnor("X", Mean*ones(p), Std*ones(p), p, q);
+    assert_checkequal(find(isnan(x)), []);
+end