diff --git a/src/apiutils.jl b/src/apiutils.jl index 5a2a1df9..5321ce04 100644 --- a/src/apiutils.jl +++ b/src/apiutils.jl @@ -46,6 +46,14 @@ function seed!(duals::AbstractArray{Dual{T,V,N}}, x, return duals end +function seed!(duals::Array{Dual{T,V,N}}, x, + seed::Partials{N,V} = zero(Partials{N,V})) where {T,V,N} + @inbounds for i in eachindex(duals) + duals[i] = Dual{T,V,N}(x[i], seed) + end + return duals +end + function seed!(duals::AbstractArray{Dual{T,V,N}}, x, seeds::NTuple{N,Partials{N,V}}) where {T,V,N} dual_inds = 1:N @@ -53,6 +61,14 @@ function seed!(duals::AbstractArray{Dual{T,V,N}}, x, return duals end +function seed!(duals::Array{Dual{T,V,N}}, x, + seeds::NTuple{N,Partials{N,V}}) where {T,V,N} + @inbounds for i in 1:N + duals[i] = Dual{T,V,N}(x[i], seeds[i]) + end + return duals +end + function seed!(duals::AbstractArray{Dual{T,V,N}}, x, index, seed::Partials{N,V} = zero(Partials{N,V})) where {T,V,N} offset = index - 1 @@ -61,6 +77,17 @@ function seed!(duals::AbstractArray{Dual{T,V,N}}, x, index, return duals end +function seed!(duals::Array{Dual{T,V,N}}, x, index, + seed::Partials{N,V} = zero(Partials{N,V})) where {T,V,N} + offset = index - 1 + @inbounds for i in 1:N + j = i + offset + duals[j] = Dual{T,V,N}(x[j], seed) + end + return duals +end + + function seed!(duals::AbstractArray{Dual{T,V,N}}, x, index, seeds::NTuple{N,Partials{N,V}}, chunksize = N) where {T,V,N} offset = index - 1 @@ -69,3 +96,14 @@ function seed!(duals::AbstractArray{Dual{T,V,N}}, x, index, duals[dual_inds] .= Dual{T,V,N}.(view(x, dual_inds), getindex.(Ref(seeds), seed_inds)) return duals end + + +function seed!(duals::Array{Dual{T,V,N}}, x, index, + seeds::NTuple{N,Partials{N,V}}, chunksize = N) where {T,V,N} + offset = index - 1 + @inbounds for i in 1:chunksize + j = i + offset + duals[j] = Dual{T,V,N}(x[j], seeds[i]) + end + return duals +end