Closed
Description
Description
rcond for matrix of NaN values returns 0 while it should (and used to in previous version) return NaN
Checklist
- I've included a minimal example to reproduce the issue
This came up as a bug in octave: https://savannah.gnu.org/bugs/?63384
With the fortran test file (attached):
$ gfortran bug-63384.f -llapack -lblas
$ ./a.out
x =
NaN NaN
NaN NaN
anorm = NaN
dgetrf info: 0
ipiv =
1 2
dgecon info: 0
rcond = 0.0000000000000000
dgetri info: 0
xinv =
NaN NaN
NaN NaN
$ LD_PRELOAD=/usr/lib64/libopenblaso.so.0 ./a.out
x =
NaN NaN
NaN NaN
anorm = NaN
dgetrf info: 0
ipiv =
1 2
dgecon info: 0
rcond = NaN
dgetri info: 0
xinv =
NaN NaN
NaN NaN
Openblas is 0.3.21 and is linked with lapack 3.10.1
$ cat bug-63384.f
program main
implicit none
double precision zero, nan, x(2,2)
integer i, j, ipiv(2), iwork(2), info
double precision work(8), anorm, rcond
rcond = -1.234567
zero = 0.0
nan = zero / zero
anorm = nan
do j = 1, 2
ipiv(j) = -j
do i = 1, 2
x(i,j) = nan
enddo
enddo
print *, 'x = '
do i = 1, 2
print *, x(i,1), x(i,2)
enddo
print *, 'anorm = ', anorm
call dgetrf (2, 2, x, 2, ipiv, info);
print *, 'dgetrf info: ', info
print *, 'ipiv = '
print *, ipiv(1), ipiv(2)
call dgecon ('1', 2, x, 2, anorm, rcond, work, iwork, info)
print *, 'dgecon info: ', info
print *, 'rcond = ', rcond
call dgetri (2, x, 2, ipiv, work, 8, info)
print *, 'dgetri info: ', info
print *, 'xinv = '
do i = 1, 2
print *, x(i,1), x(i,2)
enddo
end
Dmitri.
p.s. tagging @mmuetzel
bug-63384.f.gz