From 99b1398f7acd8c15e42160c047dcaff816643020 Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Fri, 22 Mar 2013 22:30:00 -0400 Subject: [PATCH] Avoid divide-by-zero in step_length_positive_definite.m. --- optimization/step_length_positive_definite.m | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/optimization/step_length_positive_definite.m b/optimization/step_length_positive_definite.m index ad63956..ced5562 100644 --- a/optimization/step_length_positive_definite.m +++ b/optimization/step_length_positive_definite.m @@ -32,5 +32,13 @@ function alpha = step_length_positive_definite(g, Q, p) % % All vectors are assumed to be *column* vectors. % - alpha = -(g' * p)/(p' * Q * p); + denom = (p' * Q * p); + + if (abs(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; + end + + alpha = -(g' * p)/denom; end -- 2.43.2