8888
8989@adjoint function Base. copy (u:: VectorOfArray )
9090 copy (u),
91- y -> ( copy (y),)
91+ tuple ∘ copy
9292end
9393
9494@adjoint function DiffEqArray (u, t)
@@ -115,26 +115,33 @@ end
115115 adj = let VA = VA
116116 function Array_adjoint (y)
117117 VA = recursivecopy (VA)
118- copyto! (VA, y)
118+ VA . = y
119119 return (VA,)
120120 end
121121 end
122122 Array (VA), adj
123123end
124124
125125@adjoint function Base. view (A:: AbstractVectorOfArray , I:: Colon... )
126- function adjoint (y)
127- (recursivecopy (parent (y)), map (_ -> nothing , I)... )
126+ view_adjoint = let A = A, I = I
127+ function (y)
128+ A = recursivecopy (A)
129+ A .= y
130+ (A, map (_ -> nothing , I)... )
131+ end
128132 end
129- return view (A, I... ), adjoint
133+ return view (A, I... ), view_adjoint
130134end
131135
132136@adjoint function Base. view (A:: AbstractVectorOfArray , I... )
133- function view_adjoint (y)
134- A = recursivecopy (parent (y))
135- recursivefill! (A, zero (eltype (A)))
136- A[I... ] .= y
137- return (A, map (_ -> nothing , I)... )
137+ view_adjoint = let A = A, I = I
138+ function (y)
139+ A = recursivecopy (A)
140+ recursivefill! (A, zero (eltype (A)))
141+ v = view (A, I... )
142+ v .= y
143+ return (A, map (_ -> nothing , I)... )
144+ end
138145 end
139146 view (A, I... ), view_adjoint
140147end
0 commit comments