Inverse subset algorithm?

Reading this paper, I came across a reference to the “inverse subset algorithm,” in the context of efficiently calculating the gradient of the log-determinant of a sparse symmetric matrix (Section 4.1, Equation 8 and immediately below). I’m not familiar with it, and before going down a total rabbit hole, I was wondering if it’s already implemented or otherwise available anywhere in the Julia ecosystem?

Relevant to this issue in ChainRules: Errors for gradient and hessian of logabsdet of sparse matrix · Issue #719 · JuliaDiff/ChainRules.jl · GitHub

It seems you put the wrong link, it links to the Github issue instead of to a paper.

My mistake, pasted the same link twice. Paper is here: TMB: Automatic Differentiation and Laplace Approximation | Journal of Statistical Software

OK, one rabbit hole later, it seems the answer to my question is “no.” There is an implementation buried in SuiteSparse here, but it does not seem to be exposed in Julia’s SparseArrays.LibSuiteSparse. There is also an R package “sparseinv” that appears to wrap that code.

For anyone who finds this later, I put together a small package (registration pending) implementing this algorithm here:

1 Like