-
Notifications
You must be signed in to change notification settings - Fork 159
Determinant of factorized matrices #1785
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
| match core_op: | ||
| case Cholesky(): | ||
| L = client.outputs[0] | ||
| new_det = matrix_diagonal_product(L) ** 2 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TODO: Add the positive tag here.
Possibly also rewrite for log(x ** 2) -> log(x) * 2, when we know x is positive
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This all seemed out of scope so I didn't address it. Positive tagging isn't used systematically and I'd rather we have a plan for doing that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed
|
Still missing tests and a couple other things. I wanted to first get #1786 in (which I think is still not ready either) |
|
I approved to poke you towards finishing it :) |
a9d058c to
de4e763
Compare
|
I used claude to add tests. I think it did a reasonable job. |
|
I also rebased, so if you want to keep working on it be aware of that. |
ab26c2b to
484ab21
Compare
Co-authored-by: Jesse Grabowski <48652735+jessegrabowski@users.noreply.github.com>
Co-authored-by: Jesse Grabowski <48652735+jessegrabowski@users.noreply.github.com>
484ab21 to
042db9c
Compare
|
Thanks for the help @jessegrabowski |
The old
local_det_cholrewrite is extended to cover more cases of a matrix that is factorized elsewhere, not just with Cholesky, but also LU, LUFactor, or SVD, QR (the latter two only if the sign isn't needed)A new rewrite is added for the determinant of a factorization itself. The logic is slightly different, for instance det(LUFactor) is non-sensical, and the determinant for some outputs of SVD/ QR can always be computed even if the determinant of the whole factorization cannot.
Also extended the rewrite of log(prod(x)) to sum(log(x)), which should increase the stability of many of these when we want the log determinant (or log(abs(determintant))).
Still missing tests
Closes #1679
Related to #573