Seth Axen
Seth Axen
e.g. something like this: ```julia function rrule(::typeof(det), x::Union{Number, AbstractMatrix}) F = if which(det, Tuple{typeof(x)}) === which(det, Tuple{AbstractMatrix}) lu(x; check = false) else x end Ω = det(F) function det_pullback(ΔΩ) return...
I agree, yes, this should be its own rule. We already did that for Hermitian matrices.
https://github.com/JuliaDiff/ChainRules.jl/blob/ffbaa5fecca8da39f20aeb66cc6e4edf3e0c3f11/src/rulesets/LinearAlgebra/symmetric.jl#L286-L300 There I ended up having a custom rule. I don't remember why. It may have been faster than using `NoTangent()`.
Ah, no, it goes via the rrule for `eigvals`, which uses the pullback for `eigen`. So yeah, just using the pullback for `svd` might be best.
I propose we explicitly test rules with `::Number` types using a non-commutative number. We could use `Quaternions.Quaternion`, but it lacks features like `rand(::Quaternion)` (see https://github.com/JuliaGeometry/Quaternions.jl/pull/42). We could pirate in the...
> Implementing them here (like Base) sounds fine, but is testing with Quaternions going to quadruple the time for tests to run? Would be nice to avoid that if possible....
TBH I don't particularly like the choice of emojis (is that an old woman? Is that a night-time cityscape?). We want some visual way to tell them apart, but isn't...
Before I review, can you comment on how this implementation differs from the existing real one? That is, it looks like the current real implementation would also work on complex...
Since this particular issue in multiple ADs has been noticed by several users over the last few months, it would be good to push a fix soon. While it might...
One of the challenges with this approach is that we can't capture the logic present in this rule: https://github.com/JuliaDiff/ChainRules.jl/blob/6ff4c319f8fd25f27636d28144d78c92f81d8753/src/rulesets/LinearAlgebra/factorization.jl#L531-L543 Because we don't have access to the `Cholesky` object's `uplo` field,...