88
88
89
89
@adjoint function Base. copy (u:: VectorOfArray )
90
90
copy (u),
91
- y -> ( copy (y),)
91
+ tuple ∘ copy
92
92
end
93
93
94
94
@adjoint function DiffEqArray (u, t)
@@ -115,26 +115,33 @@ end
115
115
adj = let VA = VA
116
116
function Array_adjoint (y)
117
117
VA = recursivecopy (VA)
118
- copyto! (VA, y)
118
+ VA . = y
119
119
return (VA,)
120
120
end
121
121
end
122
122
Array (VA), adj
123
123
end
124
124
125
125
@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
128
132
end
129
- return view (A, I... ), adjoint
133
+ return view (A, I... ), view_adjoint
130
134
end
131
135
132
136
@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
138
145
end
139
146
view (A, I... ), view_adjoint
140
147
end
0 commit comments