changeset 13077:1bf456b4e51c

maint: style fixes for cgs * cgs.m: Style fixes.
author John W. Eaton <jwe@octave.org>
date Sat, 03 Sep 2011 16:32:44 -0400
parents 59def8890992
children 1dfd4c1d62a3
files scripts/sparse/cgs.m
diffstat 1 files changed, 61 insertions(+), 59 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/sparse/cgs.m	Sat Sep 03 16:25:48 2011 -0400
+++ b/scripts/sparse/cgs.m	Sat Sep 03 16:32:44 2011 -0400
@@ -22,92 +22,96 @@
 ## @deftypefn {Function File} {@var{x} =} cgs (@var{A}, @var{b}, @var{rtol}, @var{maxit}, @var{M1}, @var{M2}, @var{x0})
 ## @deftypefnx {Function File} {@var{x} =} cgs (@var{A}, @var{b}, @var{rtol}, @var{maxit}, @var{P})
 ## @deftypefnx {Function File} {[@var{x}, @var{flag}, @var{relres}, @var{iter}, @var{resvec}] =} cgs (@var{A}, @var{b}, ...)
-##
-##   Solve @code{A x = b}, where @var{A} is a square matrix, using the Conjugate Gradients Squared method.
+## Solve @code{A x = b}, where @var{A} is a square matrix, using the
+## Conjugate Gradients Squared method.
 ##
-##   @itemize @minus
-##   @item @var{rtol} is the relative tolerance, if not given or set to [] the default value 1e-6 is used.
-##   @item @var{maxit} the maximum number of outer iterations, if not given or set to [] the default value @code{min (20, numel (b))} is used.
-##   @item @var{x0} the initial guess, if not given or set to [] the default value @code{zeros (size (b))} is used. 
-##   @end itemize
+## @itemize @minus
+## @item @var{rtol} is the relative tolerance, if not given or set to []
+## the default value 1e-6 is used.
+## @item @var{maxit} the maximum number of outer iterations, if not
+## given or set to [] the default value @code{min (20, numel (b))} is
+## used.
+## @item @var{x0} the initial guess, if not given or set to [] the
+## default value @code{zeros (size (b))} is used.
+## @end itemize
 ##
-##   @var{A} can be passed as a matrix or as a function handle or 
-##   inline function @code{f} such that @code{f(x) = A*x}.
-##
-##   The preconditioner @var{P} is given as @code{P = M1 * M2}. 
-##   Both @var{M1} and @var{M2} can be passed as a matrix or as a function handle or 
-##   inline function @code{g} such that @code{g(x) = M1 \ x} or @code{g(x) = M2 \ x}.
+## @var{A} can be passed as a matrix or as a function handle or 
+## inline function @code{f} such that @code{f(x) = A*x}.
 ##
-##   If called with more than one output parameter
+## The preconditioner @var{P} is given as @code{P = M1 * M2}. 
+## Both @var{M1} and @var{M2} can be passed as a matrix or as a function
+## handle or inline function @code{g} such that @code{g(x) = M1 \ x} or
+## @code{g(x) = M2 \ x}.
+##
+## If called with more than one output parameter
 ##
-##   @itemize @minus
-##   @item @var{flag} indicates the exit status:
-##   @itemize @minus
-##     @item 0: iteration converged to the within the chosen tolerance
-##     @item 1: the maximum number of iterations was reached before convergence
-##     @item 3: the algorithm reached stagnation
-##   @end itemize
-##   (the value 2 is unused but skipped for compatibility).
-##   @item @var{relres} is the final value of the relative residual.
-##   @item @var{iter} is the number of iterations performed. 
-##   @item @var{resvec} is a vector containing the relative residual at each iteration.
-##   @end itemize
+## @itemize @minus
+## @item @var{flag} indicates the exit status:
+## @itemize @minus
+## @item 0: iteration converged to the within the chosen tolerance
+## @item 1: the maximum number of iterations was reached before convergence
+## @item 3: the algorithm reached stagnation
+## @end itemize
+## (the value 2 is unused but skipped for compatibility).
+## @item @var{relres} is the final value of the relative residual.
+## @item @var{iter} is the number of iterations performed. 
+## @item @var{resvec} is a vector containing the relative residual at
+## each iteration.
+## @end itemize
 ##
-##   @seealso{pcg,bicgstab,bicg,gmres}
-##
+## @seealso{pcg,bicgstab,bicg,gmres}
 ## @end deftypefn
 
 function [x, flag, relres, iter, resvec] = cgs (A, b, tol, maxit, M1, M2, x0)
 
-  if ((nargin >= 2) && (nargin <= 7) && isvector (full (b)))
+  if (nargin >= 2 && nargin <= 7 && isvector (full (b)))
     
     if (ischar (A))
       A = str2func (A);
     elseif (ismatrix (A))
-      Ax  = @(x) A  * x;
+      Ax = @(x) A * x;
     elseif (isa (A, "function_handle"))
-      Ax  = @(x) feval (A, x);
+      Ax = @(x) feval (A, x);
     else
       error (["cgs: first argument is expected to "... 
               "be a function or a square matrix"]);
     endif
     
-    if ((nargin < 3) || (isempty (tol)))
+    if (nargin < 3 || isempty (tol))
       tol = 1e-6;
     endif
     
-    if ((nargin < 4) || (isempty (maxit)))
+    if (nargin < 4 || isempty (maxit))
       maxit = min (rows (b), 20);
     endif
     
-    if ((nargin < 5) || isempty (M1))
+    if (nargin < 5 || isempty (M1))
       M1m1x = @(x) x;
     elseif (ischar (M1))
       M1m1x = str2func (M1);
     elseif (ismatrix (M1))
-      M1m1x  = @(x) M1  \ x;
+      M1m1x = @(x) M1 \ x;
     elseif (isa (M1, "function_handle"))
-      M1m1x  = @(x) feval (M1, x);
+      M1m1x = @(x) feval (M1, x);
     else
-      error (["cgs: preconditioner is expected "...
-              "to be a function or matrix"]);
+      error ("cgs: preconditioner is expected to be a function or matrix");
     endif
     
-    if ((nargin < 6) || isempty (M2))
+    if (nargin < 6 || isempty (M2))
       M2m1x = @(x) x;
     elseif (ischar (M2))
       M2m1x = str2func (M2);
     elseif (ismatrix (M2))
-      M2m1x  = @(x) M2  \ x;
+      M2m1x = @(x) M2 \ x;
     elseif (isa (M2, "function_handle"))
-      M2m1x  = @(x) feval (M2, x);
+      M2m1x = @(x) feval (M2, x);
     else
       error ("cgs: preconditioner is expected to be a function or matrix");
     endif
 
-    precon  = @(x) M2m1x  (M1m1x (x));
+    precon = @(x) M2m1x (M1m1x (x));
 
-    if ((nargin < 7) || (isempty (x0)))
+    if (nargin < 7 || isempty (x0))
       x0 = zeros (size (b));
     endif
 
@@ -117,11 +121,11 @@
     res = b - Ax (x);
     norm_b = norm (b);
     ## Vector of the residual norms for each iteration.
-    resvec = [ norm(res)/norm_b ];
+    resvec = norm (res) / norm_b;
     ro = 0;
     ## Default behavior we don't reach tolerance tol within maxit iterations.
     flag = 1;
-    for iter = 1 : maxit
+    for iter = 1:maxit
 
       z = precon (res);
 
@@ -140,36 +144,34 @@
       x = x + alpha * p;
 
       res = res - alpha * q;
-      relres = norm(res) / norm_b;
-      resvec = [resvec;relres];
+      relres = norm (res) / norm_b;
+      resvec = [resvec; relres];
 
       if (relres <= tol)
         ## We reach tolerance tol within maxit iterations.
         flag = 0;
-        break;
+        break
       elseif (resvec (end) == resvec (end - 1))
         ## The method stagnates.
         flag = 3;
-        break;
+        break
       endif
-    endfor;
+    endfor
 
     if (nargout < 1)
-      if ( flag == 0 )
-        printf (["cgs converged at iteration %i ",
-                 "to a solution with relative residual %e\n"],iter,relres);
+      if (flag == 0)
+        printf ("cgs converged at iteration %i to a solution with relative residual %e\n",
+                iter, relres);
       elseif (flag == 3)
-        printf (["cgs stopped at iteration %i ",
-                 "without converging to the desired tolerance %e\n",
+        printf (["cgs stopped at iteration %i without converging to the desired tolerance %e\n",
                  "because the method stagnated.\n",
                  "The iterate returned (number %i) has relative residual %e\n"],
-                iter,tol,iter,relres);
+                iter, tol, iter, relres);
       else
-        printf (["cgs stopped at iteration %i ",
-                 "without converging to the desired tolerance %e\n",
+        printf (["cgs stopped at iteration %i without converging to the desired tolerance %e\n",
                  "because the maximum number of iterations was reached.\n",
                  "The iterate returned (number %i) has relative residual %e\n"],
-                iter,tol,iter,relres);
+                iter, tol, iter, relres);
       endif
     endif