* Bug #9780 fixed - gmres solver did not run with complex systems. 98/11398/2
Charlotte HECQUET [Thu, 25 Apr 2013 11:58:38 +0000 (13:58 +0200)]
Change-Id: Ia71b9dde1a353c85c1723240f452386bbc8b58d7

scilab/CHANGES_5.5.X
scilab/modules/sparse/macros/gmres.sci
scilab/modules/sparse/tests/nonreg_tests/bug_9780.dia.ref [new file with mode: 0644]
scilab/modules/sparse/tests/nonreg_tests/bug_9780.tst [new file with mode: 0644]

index 1201449..aa6c48e 100644 (file)
@@ -117,6 +117,8 @@ Bug fixes
 
 * Bug #9691 fixed - "imp" option of optim was poorly documented.
 
+* Bug #9780 fixed - gmres solver did not run with complex systems.
+
 * Bug #10254 fixed - Slight improvements in help page of ones.
 
 * Bug #10862 fixed - Add a without internet connection installation
index 103ec81..f776707 100644 (file)
@@ -242,7 +242,7 @@ end
        s(i)   = temp;
        H(i,i) = cs(i)*H(i,i) + sn(i)*H(i+1,i);
        H(i+1,i) = 0.0;
-       resNorm  = abs(s(i+1)) / bnrm2;
+       resNorm  = real(abs(s(i+1))) / bnrm2;
        resVec = [resVec;resNorm];
        if ( resNorm <= tol ),
          y = H(1:i,1:i) \ s(1:i);
@@ -269,7 +269,7 @@ end
        r = M(r);
      end
      s(j+1) = norm(r);
-     resNorm = s(j+1) / bnrm2;
+     resNorm = real(s(j+1)) / bnrm2;
      resVec = [resVec; resNorm];
 
      if ( resNorm <= tol ),
diff --git a/scilab/modules/sparse/tests/nonreg_tests/bug_9780.dia.ref b/scilab/modules/sparse/tests/nonreg_tests/bug_9780.dia.ref
new file mode 100644 (file)
index 0000000..dfcc479
--- /dev/null
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - Scilab Enterprises - Charlotte HECQUET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 9780 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9780
+//
+// <-- Short Description -->
+// gmres does not run with complex systems
+n_eqns=3;
+tol=1.e-6;
+rstr=n_eqns;
+maxi=5000;
+M=eye(n_eqns,n_eqns)+%i*eye(n_eqns,n_eqns);
+x0=zeros(n_eqns,1);
+A=rand(n_eqns,n_eqns)+%i*rand(n_eqns,n_eqns);
+b=rand(n_eqns,1);
+assert_checktrue(execstr("gmres(A,b,rstr,tol,maxi,M,x0)-[0.4336542-0.8855630*%i;-0.9532019+0.9207990*%i;0.5351043-0.3759549*%i]","errcatch") == 0);
diff --git a/scilab/modules/sparse/tests/nonreg_tests/bug_9780.tst b/scilab/modules/sparse/tests/nonreg_tests/bug_9780.tst
new file mode 100644 (file)
index 0000000..c5fc649
--- /dev/null
@@ -0,0 +1,26 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - Scilab Enterprises - Charlotte HECQUET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 9780 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9780
+//
+// <-- Short Description -->
+// gmres does not run with complex systems
+
+n_eqns=3;
+tol=1.e-6;
+rstr=n_eqns;
+maxi=5000;
+M=eye(n_eqns,n_eqns)+%i*eye(n_eqns,n_eqns);
+x0=zeros(n_eqns,1);
+A=rand(n_eqns,n_eqns)+%i*rand(n_eqns,n_eqns);
+b=rand(n_eqns,1);
+assert_checktrue(execstr("gmres(A,b,rstr,tol,maxi,M,x0)-[0.4336542-0.8855630*%i;-0.9532019+0.9207990*%i;0.5351043-0.3759549*%i]","errcatch") == 0);