@@ -129,27 +129,39 @@ const dualcache = DiffCache
129
129
Returns the `Dual` or normal cache array stored in `dc` based on the type of `u`.
130
130
"""
131
131
function get_tmp (dc:: DiffCache , u:: T ) where {T <: ForwardDiff.Dual }
132
- nelem = div (sizeof (T), sizeof (eltype (dc. dual_du))) * length (dc. du)
133
- if nelem > length (dc. dual_du)
134
- enlargediffcache! (dc, nelem)
132
+ if isbitstype (T)
133
+ nelem = div (sizeof (T), sizeof (eltype (dc. dual_du))) * length (dc. du)
134
+ if nelem > length (dc. dual_du)
135
+ enlargediffcache! (dc, nelem)
136
+ end
137
+ _restructure (dc. du, reinterpret (T, view (dc. dual_du, 1 : nelem)))
138
+ else
139
+ _restructure (dc. du, zeros (T, size (dc. du)))
135
140
end
136
- _restructure (dc. du, reinterpret (T, view (dc. dual_du, 1 : nelem)))
137
141
end
138
142
139
143
function get_tmp (dc:: DiffCache , :: Type{T} ) where {T <: ForwardDiff.Dual }
140
- nelem = div (sizeof (T), sizeof (eltype (dc. dual_du))) * length (dc. du)
141
- if nelem > length (dc. dual_du)
142
- enlargediffcache! (dc, nelem)
144
+ if isbitstype (T)
145
+ nelem = div (sizeof (T), sizeof (eltype (dc. dual_du))) * length (dc. du)
146
+ if nelem > length (dc. dual_du)
147
+ enlargediffcache! (dc, nelem)
148
+ end
149
+ _restructure (dc. du, reinterpret (T, view (dc. dual_du, 1 : nelem)))
150
+ else
151
+ _restructure (dc. du, zeros (T, size (dc. du)))
143
152
end
144
- _restructure (dc. du, reinterpret (T, view (dc. dual_du, 1 : nelem)))
145
153
end
146
154
147
155
function get_tmp (dc:: DiffCache , u:: AbstractArray{T} ) where {T <: ForwardDiff.Dual }
148
- nelem = div (sizeof (T), sizeof (eltype (dc. dual_du))) * length (dc. du)
149
- if nelem > length (dc. dual_du)
150
- enlargediffcache! (dc, nelem)
156
+ if isbitstype (T)
157
+ nelem = div (sizeof (T), sizeof (eltype (dc. dual_du))) * length (dc. du)
158
+ if nelem > length (dc. dual_du)
159
+ enlargediffcache! (dc, nelem)
160
+ end
161
+ _restructure (dc. du, reinterpret (T, view (dc. dual_du, 1 : nelem)))
162
+ else
163
+ _restructure (dc. du, zeros (T, size (dc. du)))
151
164
end
152
- _restructure (dc. du, reinterpret (T, view (dc. dual_du, 1 : nelem)))
153
165
end
154
166
155
167
function get_tmp (dc:: DiffCache , u:: Union{Number, AbstractArray} )
0 commit comments