|
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