comparison liboctave/array/fDiagMatrix.cc @ 20603:f61c67865d9f

Don't return A for inv (A) when A is a singular Diagonal matrix (bug #46103). * dDiagMatrix.cc (inverse), fDiagMatrix.cc (inverse): return octave_Inf for the inverse of a diagonal element whose value is 0. * test/diag-perm.tst: Add tests for new behavior.
author Rik <rik@octave.org>
date Wed, 07 Oct 2015 07:41:44 -0700
parents a9574e3c6e9e
children
comparison
equal deleted inserted replaced
20598:ea6a1c00763a 20603:f61c67865d9f
278 278
279 info = 0; 279 info = 0;
280 for (octave_idx_type i = 0; i < len; i++) 280 for (octave_idx_type i = 0; i < len; i++)
281 { 281 {
282 if (elem (i, i) == 0.0) 282 if (elem (i, i) == 0.0)
283 { 283 retval.elem (i, i) = octave_Inf;
284 info = -1;
285 return *this;
286 }
287 else 284 else
288 retval.elem (i, i) = 1.0 / elem (i, i); 285 retval.elem (i, i) = 1.0 / elem (i, i);
289 } 286 }
290 287
291 return retval; 288 return retval;