* Bug #12875 fixed - phasemag returned an error for input vector containing zero. 38/12438/2
Charlotte HECQUET [Thu, 5 Sep 2013 14:40:46 +0000 (16:40 +0200)]
Change-Id: I3ca74f86b878d7a2cb081104ec7596dc4a41c387

scilab/CHANGES_5.5.X
scilab/modules/cacsd/macros/phasemag.sci
scilab/modules/cacsd/tests/nonreg_tests/bug_12875.dia.ref [new file with mode: 0644]
scilab/modules/cacsd/tests/nonreg_tests/bug_12875.tst [new file with mode: 0644]

index eb04659..06e898d 100644 (file)
@@ -633,3 +633,5 @@ Bug fixes
 * Bug #12859 fixed - Core doc: fix optional argument of isdef().
 
 * Bug #12863 fixed - size(state-space, "r") returned an error.
+
+* Bug #12875 fixed - phasemag() returned an error for input vector containing zeros.
index ac3b847..349467a 100644 (file)
@@ -22,6 +22,10 @@ function [phi,db]=phasemag(z,mod)
     //compute first phase value in  (-pi, pi]
     phi1=atan(imag(z(:,1)),real(z(:,1)))
     //compute phase increments in (-pi, pi]
+    ind = find(z==0);
+    if ind <> [] then
+        z(ind) = 1; // To avoid division by 0 (0 and 1 have the same phase)
+    end
     z2=z(:,2:$)./z(:,1:$-1)
     dphi=atan(imag(z2),real(z2))
     phi=cumsum([phi1 dphi],2)
diff --git a/scilab/modules/cacsd/tests/nonreg_tests/bug_12875.dia.ref b/scilab/modules/cacsd/tests/nonreg_tests/bug_12875.dia.ref
new file mode 100644 (file)
index 0000000..a7f04b7
--- /dev/null
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- Non-regression test for bug 12875 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12875
+//
+// <-- Short Description -->
+// phasemag returns an error for vector containing zero.
+assert_checkequal(phasemag([0 0]), [0 0]);
+assert_checkequal(phasemag([%i 0]), [90 0]);
+assert_checkequal(phasemag([-%i 0]), [-90 0]);
diff --git a/scilab/modules/cacsd/tests/nonreg_tests/bug_12875.tst b/scilab/modules/cacsd/tests/nonreg_tests/bug_12875.tst
new file mode 100644 (file)
index 0000000..de18705
--- /dev/null
@@ -0,0 +1,18 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- Non-regression test for bug 12875 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12875
+//
+// <-- Short Description -->
+// phasemag returns an error for vector containing zero.
+
+assert_checkequal(phasemag([0 0]), [0 0]);
+assert_checkequal(phasemag([%i 0]), [90 0]);
+assert_checkequal(phasemag([-%i 0]), [-90 0]);