Mercurial > octave-nkf
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; |