]> gitweb.michael.orlitzky.com - octave.git/blobdiff - optimization/preconditioned_conjugate_gradient_method.m
Tiny refactoring in the PCGM.
[octave.git] / optimization / preconditioned_conjugate_gradient_method.m
index cd886084a9766e1d785df59185c358ae69d75cc7..e2f841aefea06ec92e8bb1e8dbe85eb5f2b65747 100644 (file)
@@ -66,7 +66,8 @@ function [x, k] = preconditioned_conjugate_gradient_method(Q, ...
   %
 
   % We use this in the inner loop.
-  sqrt_n = floor(sqrt(length(x0)));
+  n = length(x0);
+  sqrt_n = floor(sqrt(n));
 
   % Set k=0 first, that way the references to xk,rk,zk,dk which
   % immediately follow correspond (semantically) to x0,r0,z0,d0.
@@ -90,8 +91,8 @@ function [x, k] = preconditioned_conjugate_gradient_method(Q, ...
 
     % So if it's too close to zero, we replace it with something
     % comparable but non-zero.
-    if (abs(dkQdk) < eps)
-      dkQdk = sign(dkQdk)*eps;
+    if (dkQdk < eps)
+      dkQdk = eps;
     end
 
     alpha_k = rkzk/dkQdk;