@@ -41,6 +41,10 @@ AD.primal_value(x::AbstractArray{<:ForwardDiff.Dual}) = ForwardDiff.value.(x)
41
41
42
42
# these implementations are more efficient than the fallbacks
43
43
44
+ function AD. derivative (:: AD.ForwardDiffBackend , f, x:: Real )
45
+ return (ForwardDiff. derivative (f, x),)
46
+ end
47
+
44
48
function AD. gradient (ba:: AD.ForwardDiffBackend , f, x:: AbstractArray )
45
49
cfg = ForwardDiff. GradientConfig (f, x, chunk (ba, x))
46
50
return (ForwardDiff. gradient (f, x, cfg),)
@@ -50,7 +54,7 @@ function AD.jacobian(ba::AD.ForwardDiffBackend, f, x::AbstractArray)
50
54
cfg = ForwardDiff. JacobianConfig (AD. asarray ∘ f, x, chunk (ba, x))
51
55
return (ForwardDiff. jacobian (AD. asarray ∘ f, x, cfg),)
52
56
end
53
- AD. jacobian (:: AD.ForwardDiffBackend , f, x:: Number ) = (ForwardDiff. derivative (f, x),)
57
+ AD. jacobian (:: AD.ForwardDiffBackend , f, x:: Real ) = (ForwardDiff. derivative (f, x),)
54
58
55
59
function AD. hessian (ba:: AD.ForwardDiffBackend , f, x:: AbstractArray )
56
60
cfg = ForwardDiff. HessianConfig (f, x, chunk (ba, x))
0 commit comments