Refix the non-negativity of denom in step_length_positive_definite().
authorMichael Orlitzky <michael@orlitzky.com>
Tue, 26 Mar 2013 00:43:55 +0000 (20:43 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Tue, 26 Mar 2013 00:43:55 +0000 (20:43 -0400)
optimization/step_length_positive_definite.m

index 7e15a46513e7333a63f060385f353720745dbc29..b9fe48efa52144ab6c6fdb05f06cf3c5e8b6a9dd 100644 (file)
@@ -34,11 +34,12 @@ function alpha = step_length_positive_definite(g, Q, p)
   %
   denom = (p' * Q * p);
 
-  if (abs(denom) < eps)
+  % denom is non-negative, since it's a Q-norm. No need to abs() it.
+  if (denom < eps)
     % Catch divide-by-zeros. If denom is effectively zero, set it to
     % something tiny instead. This trick is also used in the PCGM.
-    denom = sign(denom)*eps;
+    denom = eps;
   end
 
-  alpha = -(g' * p)/denom;
+  alpha = (g' * g)/denom;
 end