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