[Rd] random NaN in dpotri result

Andrew Finley afinley at stat.umn.edu
Sat Apr 29 00:32:07 CEST 2006


Hello all, 
In a piece of c++ code (part of a future R package), I'm inverting a
relatively large covariance matrix many times using:

F77_CALL(dpotrf)(&upper, &xnrow, R, &xnrow, &info);
F77_CALL(dpotri)(&upper, &xnrow, R, &xnrow, &info);

I am sure that the input matrix is PD and inverts just fine.  However, I
have found that dpotri gives one or more NaNs from time-to-time in the
upper (or lower depending on the specification) triangle.   When I say,
from time-to-time, I mean without warning in perhaps 1 in ~25 runs (but is
highly variable).  Also, when the NaNs occur, dpotri does not return an
error in info.  I have spent many many hours trying to get this error to
reproduce predictably, but cannot.  Even with the same input matrix,
sometimes I get a NaN but most of the time I do not, and their occurrence
seems to be random and random in the matrix.  When dpotri, does not produce
the NaN, the solution is correct.

To assure myself that I was not totally nuts, I tried both Linpack's dpodi
and a chol2inv routine from Numerical Recipes in place of dpotri.  Both of
these routines never produce the nan and provide the correct result.

I hesitate to post this problem, as I cannot get it to reproduce on a
regular basis.  Valgrind didn't report any memory access problems on my
code.

Has anybody seen this before, or might point out some stupid mistakes I
could be making?

Thanks for your time,

Andrew

R Version 2.3.0 (2006-04-24)
Debian Linux  2.6.15-1-686

 
Research Fellow
Department of Forest Resources
University of Minnesota
Office: 305 Green Hall
Phone: (612) 624-1714
Fax: (612) 625-5212
web: http://blue.fr.umn.edu



More information about the R-devel mailing list