changeset 17445:7ad3b9ca66f5

fix behaviour of bicgstab for complex matrices (bug #40017) * scripts/sparse/bicgstab.m: fix computation of complex scalar products.
author Marco Caliari <marco.caliari@univr.it>
date Mon, 16 Sep 2013 14:59:25 +0200
parents 577a19afdaf5
children 0b93af1023f6
files scripts/sparse/bicgstab.m
diffstat 1 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/sparse/bicgstab.m
+++ b/scripts/sparse/bicgstab.m
@@ -145,7 +145,7 @@
     flag = 1;
 
     for iter = 1:maxit
-      rho_1 = res' * rr;
+      rho_1 = rr' * res;
 
       if (iter == 1)
         p = res;
@@ -163,7 +163,7 @@
       shat = precon (s);
 
       t = Ax (shat);
-      omega = (t' * s) / (t' * t);
+      omega = (s' * t) / (t' * t);
       x = x + alpha * phat + omega * shat;
       res = s - omega * t;
       rho_2 = rho_1;
@@ -248,3 +248,8 @@
 %! [x, flag, relres, iter, resvec] = bicgstab (A, b, tol, [], diag (diag (A)));
 %! assert (x, ones (size (b)), 1e-7);
 
+%!test
+%! A = [1 + 1i, 1 + 1i; 2 - 1i, 2 + 1i];
+%! b = A * [1; 1];
+%! [x, flag, relres, iter, resvec] = bicgstab (A, b);
+%! assert (x, [1; 1], 1e-6);