@@ -34,17 +34,17 @@ function insert_symbolic_gradient(axislist, store)
34
34
for (dt, t) in unique (targets)
35
35
drdt = leibnitz (store. right, t)
36
36
deltar = if store. finaliser == :identity
37
- simplitimes (drdt, :(conj ( $ dZ[$ (store. leftraw... )]) ))
37
+ simplitimes (simpliconj ( drdt) , :($ dZ[$ (store. leftraw... )]))
38
38
else
39
39
rhs = :($ ZED[$ (store. leftraw... )])
40
40
dldr = leibfinal (store. finaliser, rhs)
41
- simplitimes (drdt, dldr, :(conj ( $ dZ[$ (store. leftraw... )]) ))
41
+ simplitimes (simpliconj ( drdt), simpliconj ( dldr) , :($ dZ[$ (store. leftraw... )]))
42
42
end
43
43
if store. redfun == :+
44
- push! (inbody, :($ dt = $ dt + conj ( $ deltar) ))
44
+ push! (inbody, :($ dt = $ dt + $ deltar))
45
45
# elseif store.redfun == :*
46
- # push!(inbody, :($dt = conj( $deltar) * $ZED[$(store.leftraw...)] * inv($(store.right))))
47
- # push!(prebody, :($dt = conj( $deltar) * $ACC))
46
+ # push!(inbody, :($dt = $deltar * $ZED[$(store.leftraw...)] * inv($(store.right))))
47
+ # push!(prebody, :($dt = $deltar * $ACC))
48
48
elseif store. redfun in [:min , :max ]
49
49
push! (inbody, :($ dt += $ ifelse ($ maxflag, $ deltar, $ zero ($ TYP))))
50
50
end
@@ -247,6 +247,9 @@ simpliplus(x, y::Number) = y==0 ? x : :($x + $y)
247
247
simpliplus (x, y) = :($ x + $ y)
248
248
simpliplus (x, y, zs... ) = simpliplus (simpliplus (x, y), zs... )
249
249
250
+ simpliconj (x:: Number ) = conj (x)
251
+ simpliconj (x) = :(conj ($ x))
252
+
250
253
mydiffrule (f, xs... ) = begin
251
254
f == :+ && return map (_-> 1 , xs)
252
255
f == :- && return length (xs)== 1 ? - 1 : (1 ,- 1 )
0 commit comments