Closed
Description
Hi all,
We have a big codebase that uses FieldVector
s from static arrays. It would be extremely powerful for us (and I'm sure many others in the future) to be able to do the following:
using StaticArrays
using ForwardDiff
struct Point{R<:Real} <: FieldVector{2,R}
x::R
y::R
end
StaticArrays.similar_type(p::Type{P}, ::Type{R}, size::Size{(2,)}) where {P<:Point, R<:Real} = Point{R}
f(p) = p.x
ForwardDiff.gradient(f, Point(2.0,3.0))
Currently this fails with ERROR: LoadError: type MArray has no field x
because it's trying to evaluate f
with an MArray of Duals.
This seems pretty easy to fix - maybe just writing a new version of dualize
and adding a little more code where you have specialized things for SArray
to also handle FieldVector
. Do you think it is that simple? Should we take a crack at it, or do you foresee massive difficulties?
Metadata
Metadata
Assignees
Labels
No labels