|
53 | 53 |
|
54 | 54 | function seed!(duals::AbstractArray{Dual{T,V,N}}, x,
|
55 | 55 | seed::Partials{N,V} = zero(Partials{N,V})) where {T,V,N}
|
56 |
| - for i in eachindex(duals) |
57 |
| - duals[i] = Dual{T,V,N}(x[i], seed) |
58 |
| - end |
| 56 | + duals .= Dual{T,V,N}.(x, Base.RefValue(seed)) |
59 | 57 | return duals
|
60 | 58 | end
|
61 | 59 |
|
62 | 60 | function seed!(duals::AbstractArray{Dual{T,V,N}}, x,
|
63 | 61 | seeds::NTuple{N,Partials{N,V}}) where {T,V,N}
|
64 |
| - for i in 1:N |
65 |
| - duals[i] = Dual{T,V,N}(x[i], seeds[i]) |
66 |
| - end |
| 62 | + duals[1:N] .= Dual{T,V,N}.(x[1:N], seeds[1:N]) |
67 | 63 | return duals
|
68 | 64 | end
|
69 | 65 |
|
70 | 66 | function seed!(duals::AbstractArray{Dual{T,V,N}}, x, index,
|
71 | 67 | seed::Partials{N,V} = zero(Partials{N,V})) where {T,V,N}
|
72 | 68 | offset = index - 1
|
73 |
| - for i in 1:N |
74 |
| - j = i + offset |
75 |
| - duals[j] = Dual{T,V,N}(x[j], seed) |
76 |
| - end |
| 69 | + chunk = (1:N) .+ offset |
| 70 | + duals[chunk] .= Dual{T,V,N}.(x[chunk], Base.RefValue(seed)) |
77 | 71 | return duals
|
78 | 72 | end
|
79 | 73 |
|
80 | 74 | function seed!(duals::AbstractArray{Dual{T,V,N}}, x, index,
|
81 | 75 | seeds::NTuple{N,Partials{N,V}}, chunksize = N) where {T,V,N}
|
82 | 76 | offset = index - 1
|
83 |
| - for i in 1:chunksize |
84 |
| - j = i + offset |
85 |
| - duals[j] = Dual{T,V,N}(x[j], seeds[i]) |
86 |
| - end |
| 77 | + chunk = (1:chunksize) .+ offset |
| 78 | + duals[chunk] .= Dual{T,V,N}.(x[chunk], seeds[1:chunksize]) |
87 | 79 | return duals
|
88 | 80 | end
|
0 commit comments