Thank you both. Saving the matrix as Miles suggested fixes the 'issue' I was having.
On Saturday, October 18, 2014 7:03:41 PM UTC-7, Miles Lubin wrote: > > In > > srand(1);a=rand(2,2);a=a*a';cholfact!(a);logdet(a) > > The issue is that cholfact!(a) destroys the data in a, you're not allowed > to re-use it afterwords. You still need to save the result of cholfact! > and use that object inside of logdet(), e.g., > > srand(1);a=rand(2,2);a=a*a';afact = cholfact!(a);logdet(afact) > > > > > On Saturday, October 18, 2014 7:47:59 PM UTC-4, Adam Check wrote: >> >> Hi, >> >> I am need to compute the cholesky decomposition of a matrix, and then use >> the log determinant of the decomposition. I get different answers depending >> on if I use cholfact vs. cholfact! >> >> The code below produces the same number for the logdet (-4.479) >> >> *srand(1);a=rand(2,2);a=a*a';logdet(cholfact(a))* >> >> *srand(1);a=rand(2,2);a=a*a';logdet(cholfact!(a))* >> >> >> However, the following code results in different values being reported: >> >> *srand(1);a=rand(2,2);a=a*a';a=cholfact(a);logdet(a)* >> >> *srand(1);a=rand(2,2);a=a*a';cholfact!(a);logdet(a)* >> with the second code reporting the (incorrect) value of -2.426, even >> though the Cholfact object "a" appears identical in each case. >> >> This error happens consistently when implementing cholfact!() as in the >> last line of code, and can result in an error when taking the logdet(): >> *ERROR: >> DomainError: determinant is negative*, even when no error results from >> using the cholfact() function. >> >> I am currently using julia version 0.3.1, but I believe the problem has >> been present in older versions as well. >> >> - Adam >> >
