X-Git-Url: http://gitweb.michael.orlitzky.com/?p=octave.git;a=blobdiff_plain;f=optimization%2Fstep_length_positive_definite.m;h=255efbac78fd2df4fbc4704fc379e87f624ad77e;hp=ced556234359ab5bbc3b94d81830176f5551cff4;hb=c3e7feb9a20fe34085814a2d32a9878e0b069ec6;hpb=99b1398f7acd8c15e42160c047dcaff816643020 diff --git a/optimization/step_length_positive_definite.m b/optimization/step_length_positive_definite.m index ced5562..255efba 100644 --- a/optimization/step_length_positive_definite.m +++ b/optimization/step_length_positive_definite.m @@ -34,10 +34,11 @@ 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;