bug 4799 fix 68/368/2
Pierre MARECHAL [Mon, 3 May 2010 16:03:05 +0000 (18:03 +0200)]
Change-Id: Ic5ed776031e2b9086952deb49db2b81c80997dbb

scilab/CHANGES_5.3.X
scilab/modules/cacsd/macros/calfrq.sci
scilab/modules/cacsd/tests/nonreg_tests/bug_4799.dia.ref [new file with mode: 0644]
scilab/modules/cacsd/tests/nonreg_tests/bug_4799.tst [new file with mode: 0644]

index 5442f10..ef46977 100644 (file)
@@ -228,6 +228,9 @@ Bug fixes:
 * bug 4783 fixed - comparison between sparse complex matrix and a full one was 
                    wrong when the sparse matrix contains a  zero row.
 
+* bug 4799 fixed - Sometime the bode, nyquist , ... function reported a
+                   "non convergence" error
+
 * bug 4985 fixed - mgetl did not use fgets (C function).
 
 * bug 4996 fixed - mgetl() was not located in the right module. It has been
index b28f616..2d9075a 100644 (file)
@@ -130,7 +130,7 @@ function [frq,bnds,splitf]=calfrq(h,fmin,fmax)
   fmin=c*fmin,fmax=c*fmax;
 
   for i=1:m
-    sing=[sing;%sel(roots(denh(i)),fmin,fmax,tol)];
+    sing=[sing;%sel(roots(denh(i),"e"),fmin,fmax,tol)];
   end
 
   pp=gsort(sing','g','i');npp=size(pp,'*');//'
@@ -166,7 +166,6 @@ function [frq,bnds,splitf]=calfrq(h,fmin,fmax)
 
   // Evaluate bounds of nyquist plot
   //-------------------------------
-
   xt=[];Pas=[]
   for i=1:2:nfrq-1
     w=logspace(log(frqs(i))/log(10),log(frqs(i+1))/log(10),100);
diff --git a/scilab/modules/cacsd/tests/nonreg_tests/bug_4799.dia.ref b/scilab/modules/cacsd/tests/nonreg_tests/bug_4799.dia.ref
new file mode 100644 (file)
index 0000000..403c1c1
--- /dev/null
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - INRIA - Serge Steer
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- JVM NOT MANDATORY -->
+// <-- Non-regression test for bug 4799 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4799
+//
+// <-- Short Description -->
+// Some times the bode, nyquist , ... function report a "non convergence" error
+s = poly(0,'s');
+tau=.011; a=82.794; b=103.089;
+S = a/(s*tau-b);
+n=22; Sn = (1+S)^n-1; Snw = syslin('c',Sn);
+if execstr('[frq,bnds,splitf]=calfrq(Snw,100,20000)','errcatch')<>0 then bugmes();quit;end
+if execstr('[frq,bnds,splitf]=calfrq(Snw,0.01,1000000)','errcatch')<>0 then bugmes();quit;end
+s = poly(0,'s');
+tau=11; a=82.794; b=103.089;
+S = a/(s*tau-b);
+n=20; Sn = (1+S)^n-1; Snw = syslin('c',Sn);
+if execstr('[frq,bnds,splitf]=calfrq(Snw,0.1,20)','errcatch')<>0 then bugmes();quit;end
diff --git a/scilab/modules/cacsd/tests/nonreg_tests/bug_4799.tst b/scilab/modules/cacsd/tests/nonreg_tests/bug_4799.tst
new file mode 100644 (file)
index 0000000..0ff7a37
--- /dev/null
@@ -0,0 +1,31 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - INRIA - Serge Steer
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- JVM NOT MANDATORY -->
+
+// <-- Non-regression test for bug 4799 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4799
+//
+// <-- Short Description -->
+// Some times the bode, nyquist , ... function report a "non convergence" error
+
+
+s = poly(0,'s');
+tau=.011; a=82.794; b=103.089;
+S = a/(s*tau-b);
+n=22; Sn = (1+S)^n-1; Snw = syslin('c',Sn);
+
+if execstr('[frq,bnds,splitf]=calfrq(Snw,100,20000)','errcatch')<>0 then pause,end
+if execstr('[frq,bnds,splitf]=calfrq(Snw,0.01,1000000)','errcatch')<>0 then pause,end
+
+s = poly(0,'s');
+tau=11; a=82.794; b=103.089;
+S = a/(s*tau-b);
+n=20; Sn = (1+S)^n-1; Snw = syslin('c',Sn);
+if execstr('[frq,bnds,splitf]=calfrq(Snw,0.1,20)','errcatch')<>0 then pause,end