You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When building a `Woodbury` or `SymWoodbury` matrix, we precompute
(C⁻¹ + V * (A\U))⁻¹
However, if the final `W` is rank-deficient, this inverse does not
exist. To handle this case, we now support an optional keyword argument
`use_pinv::Bool=false` to use the pseudo-inverse instead.
Also updates cache actions and adds dependabot support.
Copy file name to clipboardExpand all lines: README.md
+6Lines changed: 6 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -41,3 +41,9 @@ If passed the keyword argument `allocatetmp=true`, (Sym)Woodbury allocates inter
41
41
This eliminates memory allocation for these common operations.
42
42
43
43
However, using the same `W` across multiple threads can lead to race conditions. Hence, this optimization is opt-in and should only be used if you know it is safe.
44
+
45
+
## Rank-deficiency
46
+
47
+
While `A` is required to be invertible, rank-deficient `W` are supported if you supply the `use_pinv=true` keyword argument to the constructor,
48
+
so that we compute `pinv(inv(C) + V*(A\U))` instead of the standard inverse.
49
+
Then `x = W \ b` will effectively use the pseudo-inverse of `W`.
0 commit comments