Skip to content

Commit d3a6519

Browse files
committed
introduce derivative_idx which is non-Val. This avoids ambiguities.
1 parent f998a02 commit d3a6519

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

src/differentials.jl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,10 @@ function expand_derivatives(O::Term, simplify=true; occurances=nothing)
101101
x = if _iszero(t2)
102102
t2
103103
elseif _isone(t2)
104-
d = derivative(o, i)
104+
d = derivative_idx(o, i)
105105
d isa NoDeriv ? D(o) : d
106106
else
107-
t1 = derivative(o, i)
107+
t1 = derivative_idx(o, i)
108108
t1 = t1 isa NoDeriv ? D(o) : t1
109109
make_operation(*, [t1, t2])
110110
end
@@ -159,7 +159,7 @@ julia> using ModelingToolkit
159159
160160
julia> @variables x y;
161161
162-
julia> ModelingToolkit.derivative(sin(x), 1)
162+
julia> ModelingToolkit.derivative_idx(sin(x), 1)
163163
cos(x())
164164
```
165165
@@ -173,20 +173,20 @@ sin(x()) * y() ^ 2
173173
julia> typeof(myop.op) # Op is multiplication function
174174
typeof(*)
175175
176-
julia> ModelingToolkit.derivative(myop, 1) # wrt. sin(x)
176+
julia> ModelingToolkit.derivative_idx(myop, 1) # wrt. sin(x)
177177
y() ^ 2
178178
179-
julia> ModelingToolkit.derivative(myop, 2) # wrt. y^2
179+
julia> ModelingToolkit.derivative_idx(myop, 2) # wrt. y^2
180180
sin(x())
181181
```
182182
"""
183-
derivative(O::Term, idx) = derivative(O.op, (O.args...,), Val(idx))
184-
derivative(O::Any, ::Any) = 0
183+
derivative_idx(O::Any, ::Any) = 0
184+
derivative_idx(O::Term, idx) = derivative(O.op, (O.args...,), Val(idx))
185185

186186
# Indicate that no derivative is defined.
187187
struct NoDeriv
188188
end
189-
derivative(f, args::Tuple, v::Val) = NoDeriv()
189+
derivative(f, args, v) = NoDeriv()
190190

191191
# Pre-defined derivatives
192192
import DiffRules

0 commit comments

Comments
 (0)