Mercurial > octave
view test/bug-46330.tst @ 22085:bf5fbf347aaf
Avoid segfault with complex matrices using LAPACK (bug #46330).
* liboctave/array/CMatrix.cc: code refactoring.
* liboctave/array/fCMatrix.cc(FloatComplexMatrix::determinant,
FloatComplexMatrix::rcond): compare Matrix norm with Nan.
* liboctave/array/fCMatrix.cc(FloatComplexMatrix::finverse,
FloatComplexMatrix::fsolve): compare Matrix norm with Inf and Nan.
* test/module.mk: Add new test file.
* test/bug-46330.tst: Add regression test case from bug report. For Windows
this test will be omitted (see bug #39000, Can't override BLAS XERBLA handler).
author | Kai T. Ohlhus <k.ohlhus@gmail.com> |
---|---|
date | Mon, 11 Jul 2016 09:27:10 +0200 |
parents | |
children | 5aa8f199e328 |
line wrap: on
line source
## bug #46330: segfault with matrices containing Inf & NaN %!warning %! a = [-0.46E-01, 0.10681415316, 0.0, -0.17121680433; %! -0.1675901504661613, -0.515, 1.0, 0.6420630320636088E-02; %! 0.1543104215347786, -0.547945, -0.906, -0.1521689385990753E-02; %! 0.0, 0.0, 1.0, 0.0]; %! %! b = [0.1602300107479095, 0.2111848453E-02; %! 0.8196877780963616E-02, -0.3025E-01; %! 0.9173594317692437E-01, -0.75283075; %! 0.0, 0.0]; %! %! c = [1.0, 0.0, 0.0, 0.0; %! 0.0, 0.0, 0.0, 1.0]; %! %! ## This statement caused an error in LAPACK and eventually caused %! ## a segmentation fault. %! ## Triggers "warning: matrix singular to machine precision" %! ## FIXME: LAPACK errors become fatal crashes on Windows, don't test this %! if (ispc ()) %! warning ("unable to test for bug #46330 on Windows"); %! else %! assert (c / (i * Inf * eye (4) - a) * b, zeros (2, 2)) %! endif