Introduction

This is a library of numerically stable linear algebra routines for performing inversions as they appear in the calculation of Green's functions in determinant Quantum Monte Carlo.

For more details, check out the accompanyig paper, in which we describe and benchmark a few specific algorithms. The plots in this paper have been generated with the notebooks in the notebook directory of this repository.

Feel free to give feedback, open issues, or contribute useful algorithms yourself! ๐Ÿ™‚

Installation

] add StableDQMC

The package has only one dependency, Requires.jl.

Getting started

julia> using LinearAlgebra, StableDQMC

julia> B = rand(ComplexF64, 100,100);

julia> Bfact = udt(B);

julia> G = inv_one_plus_loh(Bfact);

Since the matrix B is well-conditioned in this case, we have

julia> G โ‰ˆ inv(I + B)
true

Why should I care?

Left: Slice matrix product. Right: Equal-times Green's function.

Note that "SVD (D&C)" is the algorithm used by Julia's svd function.