# HG changeset patch # User Rik # Date 1403196072 25200 # Node ID 161b11e7da2d337fdeb8b287a5c3777def7b9a36 # Parent 77d5e7661b8ed521fefea126a2f3f811a90b673d Return error code from sparse chol factorization (bug #42587). * chol.cc (Fchol): Return info variable, rather than P which is always 0, for sparse chol factorizations with more than 1 output argument. Add %!test for correct behavior. diff -r 77d5e7661b8e -r 161b11e7da2d libinterp/dldfcn/chol.cc --- a/libinterp/dldfcn/chol.cc Wed Jun 18 13:23:52 2014 -0700 +++ b/libinterp/dldfcn/chol.cc Thu Jun 19 09:41:12 2014 -0700 @@ -212,7 +212,7 @@ if (nargout > 1 || info == 0) { - retval(1) = fact.P (); + retval(1) = info; if (LLt) retval(0) = fact.L (); else @@ -240,7 +240,7 @@ if (nargout > 1 || info == 0) { - retval(1) = fact.P (); + retval(1) = info; if (LLt) retval(0) = fact.L (); else @@ -375,6 +375,11 @@ /* %!assert (chol ([2, 1; 1, 1]), [sqrt(2), 1/sqrt(2); 0, 1/sqrt(2)], sqrt (eps)) %!assert (chol (single ([2, 1; 1, 1])), single ([sqrt(2), 1/sqrt(2); 0, 1/sqrt(2)]), sqrt (eps ("single"))) +%!test +%! ## Bug #42587 +%! A = sparse ([1 0 8;0 1 8;8 8 1]); +%! [Q, p] = chol (A); +%! assert (p != 0); %!error chol () %!error chol ([1, 2; 3, 4])