@@ -179,7 +179,8 @@ function dummy_derivative_graph!(state::TransformationState, jac = nothing;
179179 else
180180 ag = AliasGraph (mm, ndsts (state. structure. graph))
181181 end
182- dummy_derivative_graph! (state. structure, var_eq_matching, jac, state_priority, ag, mm, log)
182+ dummy_derivative_graph! (
183+ state. structure, var_eq_matching, jac, state_priority, ag, mm, log)
183184end
184185
185186struct DummyDerivativeSummary
209210
210211function extended_state_priority (state_priority, var_to_diff, ag:: AliasGraph )
211212 sp = map (state_priority, 1 : length (var_to_diff))
212- diff_to_var = invview (var_to_diff)
213213 prop_graph = SimpleDiGraph {Int} (ag)
214214 for (v, dv) in enumerate (var_to_diff)
215215 dv isa Int && add_edge! (prop_graph, v, dv)
@@ -228,16 +228,17 @@ function prop_state_priority!(sp, graph)
228228 visited = BitSet ()
229229 function visit! (sp, graph, v)
230230 push! (visited, v)
231- for n in inneighbors (graph, v)
232- n in visited && continue
233- visit! (sp, graph, n)
234- end
235231 for n in outneighbors (graph, v)
232+ n in visited && continue
236233 sp[n] = maxabs (sp[n], sp[v])
234+ visit! (sp, graph, n)
237235 end
238236 end
239237 for v in vertices (graph)
240- visit! (sp, graph, v)
238+ if all (x -> iszero (sp[v]), inneighbors (graph, v))
239+ visit! (sp, graph, v)
240+ empty! (visited)
241+ end
241242 end
242243 sp
243244end
0 commit comments