Closed oxinabox closed 3 years ago
Ref https://arxiv.org/pdf/1710.08717.pdf Wrong sense of adjoint
I mean adjoint on the QR object (i.e. turn it sidewise), not the abuse of terminology that is the adjoint of the function (i.e. find a linear operator that has the same rate of change, then find the linear operator that has as it's matrix form the adjoint of the first's matrix form)
related: #35421
Fixed by #40899
Encountered during https://github.com/JuliaDiff/ChainRules.jl/pull/302 the simpler form is:
I am calling for example:
Which I thought should be a faster way to do
but it errors depending on the value of
A
. .e.g works ifA
is square sinceLU
hasAdjoint
I am not sure if it works if positive definite since then it getsCholesky
which may or may not haveAdjoint
defined on it.But neither
QRPivoted
norQRCompactWY
supportadjoint
I believe fixing this would also require adding a method forldiv!
on that adjoint.Current status:
BunchKaufman
adjoint
\
Cholesky
adjoint
\
CholeskyPivoted
adjoint
\
Hessenberg
adjoint
\
LDLt
adjoint
\
LQ
adjoint
\
LU
adjoint
\
LinearAlgebra.QRCompactWY
adjoint
\
QR
adjoint
\
QRPivoted
adjoint
\
SVD
adjoint
\
Some factorizations don't support
\
at allEigen
GeneralizedEigen
Schur
GeneralizedSchur
GeneralizedSVD
For sparse matrices,
cholesky
andlu
already works and the sparse QR is tracked in https://github.com/JuliaLang/SuiteSparse.jl/issues/22