samer@4: function y = logdet(A) samer@4: % logdet - logdet(X)=log(det(X)) where A is positive-definite and Hermitian. samer@4: % samer@4: % logdet :: [[N,N]] -> nonneg. samer@4: % samer@4: % This is faster and more stable than using log(det(A)). samer@4: % Samer: Use LOGABSDET for general matrices. samer@4: samer@4: % From Tom Minka's lightspeed toolbox samer@4: samer@4: [U,p] = chol(A); samer@4: if p>0, y=-inf; samer@4: else y = 2*sum(log(full(diag(U)))); samer@4: end