@@ -46,6 +46,15 @@ function get_tmp(dc::FixedSizeDiffCache, u::T) where {T <: ForwardDiff.Dual}
4646 end
4747end
4848
49+ function get_tmp (dc:: FixedSizeDiffCache , u:: Type{T} ) where {T <: ForwardDiff.Dual }
50+ x = reinterpret (T, dc. dual_du)
51+ if chunksize (T) === chunksize (eltype (dc. dual_du))
52+ x
53+ else
54+ @view x[axes (dc. du)... ]
55+ end
56+ end
57+
4958function get_tmp (dc:: FixedSizeDiffCache , u:: AbstractArray{T} ) where {T <: ForwardDiff.Dual }
5059 x = reinterpret (T, dc. dual_du)
5160 if chunksize (T) === chunksize (eltype (dc. dual_du))
@@ -116,6 +125,14 @@ function get_tmp(dc::DiffCache, u::T) where {T <: ForwardDiff.Dual}
116125 _restructure (dc. du, reinterpret (T, view (dc. dual_du, 1 : nelem)))
117126end
118127
128+ function get_tmp (dc:: DiffCache , u:: Type{T} ) where {T <: ForwardDiff.Dual }
129+ nelem = div (sizeof (T), sizeof (eltype (dc. dual_du))) * length (dc. du)
130+ if nelem > length (dc. dual_du)
131+ enlargediffcache! (dc, nelem)
132+ end
133+ _restructure (dc. du, reinterpret (T, view (dc. dual_du, 1 : nelem)))
134+ end
135+
119136function get_tmp (dc:: DiffCache , u:: AbstractArray{T} ) where {T <: ForwardDiff.Dual }
120137 nelem = div (sizeof (T), sizeof (eltype (dc. dual_du))) * length (dc. du)
121138 if nelem > length (dc. dual_du)
0 commit comments