From afinley at stat.umn.edu  Sat Apr 29 00:32:07 2006
From: afinley at stat.umn.edu (Andrew Finley)
Date: Fri, 28 Apr 2006 17:32:07 CDT
Subject: [Rd] random NaN in dpotri result
Message-ID: <200604282232.k3SMW7NW020759@saturn.software.umn.edu>

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



[Rd] random NaN in dpotri result
Andrew Finley