@@ -46,6 +46,15 @@ function get_tmp(dc::FixedSizeDiffCache, u::T) where {T <: ForwardDiff.Dual}
46
46
end
47
47
end
48
48
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
+
49
58
function get_tmp (dc:: FixedSizeDiffCache , u:: AbstractArray{T} ) where {T <: ForwardDiff.Dual }
50
59
x = reinterpret (T, dc. dual_du)
51
60
if chunksize (T) === chunksize (eltype (dc. dual_du))
@@ -116,6 +125,14 @@ function get_tmp(dc::DiffCache, u::T) where {T <: ForwardDiff.Dual}
116
125
_restructure (dc. du, reinterpret (T, view (dc. dual_du, 1 : nelem)))
117
126
end
118
127
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
+
119
136
function get_tmp (dc:: DiffCache , u:: AbstractArray{T} ) where {T <: ForwardDiff.Dual }
120
137
nelem = div (sizeof (T), sizeof (eltype (dc. dual_du))) * length (dc. du)
121
138
if nelem > length (dc. dual_du)
0 commit comments