Takafumi Arakaki
Takafumi Arakaki
Friendly ping :) Is there anything I can do to make it easier to merge?
Thanks!
There was a similar discussion with @Wimmerer and @mcabbott in #114 (although focusing more on sparse arrays side). I agree with @MasonProtter that representation like https://github.com/mcabbott/Tullio.jl/issues/129#issuecomment-962525490 would be nice. Kind...
> But I don't think anyone has ever figured out how to sync sparse iterators generally. Could you elaborate on this? Aren't sparse (or dense) computation described by einsum notations...
> Chris Elrod recommended a macro which then creates a generated function. I don't believe there's any other way. It has been noted many times (and it feels rather painful...
@Wimmere I'm happy to join :) Please feel free to ping me on discourse/slack/zulip. > As I understand it you're essentially recommending that Tullio (eventually) accept AbstractArrays that are either...
> The reason Tullio doesn't do that is that it wants to allow e.g. `A[i+1] - A[i-1]`, for which it shifts & intersects these axes, so the iteration space doesn't...
I think you need to special case it dynamically here https://github.com/JuliaDiff/ForwardDiff.jl/blob/c374b69f47095aef60a5486065ddc6fe29c32e9f/src/dual.jl#L452-L453 by adding `elseif y === one(y)` branch and also here https://github.com/JuliaDiff/ForwardDiff.jl/blob/c374b69f47095aef60a5486065ddc6fe29c32e9f/src/dual.jl#L472-L473 for the literal case (`x^1`).
Since (say) `*(x::Diagonal, y::AbstractVector)` in LinearAlgebra is defined in terms of combination of operations whose rules are already defined, would just "nulling" automatically handle the situation? ```julia frule(::typeof(*), ::Diagonal, ::AbstractVector)...
I think there are too many specializations in LinearAlgebra (and likely in many other in the wild). But maybe not so bad at least as a "midterm" solution? Looking at...