# HG changeset patch # User Marco Caliari # Date 1379336365 -7200 # Node ID 7ad3b9ca66f5f04a786e95bef132773d21e5228f # Parent 577a19afdaf532ed5aa38d201d915371a82049b3 fix behaviour of bicgstab for complex matrices (bug #40017) * scripts/sparse/bicgstab.m: fix computation of complex scalar products. diff -r 577a19afdaf5 -r 7ad3b9ca66f5 scripts/sparse/bicgstab.m --- a/scripts/sparse/bicgstab.m Sat Sep 14 17:07:05 2013 -0700 +++ b/scripts/sparse/bicgstab.m Mon Sep 16 14:59:25 2013 +0200 @@ -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);