Skip to content

Commit eecf116

Browse files
committed
Revert "Use broadcast expressions instead of some loops."
This reverts commit 19003af. See #353 (comment)
1 parent fa83fec commit eecf116

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

src/apiutils.jl

+14-6
Original file line numberDiff line numberDiff line change
@@ -53,28 +53,36 @@ end
5353

5454
function seed!(duals::AbstractArray{Dual{T,V,N}}, x,
5555
seed::Partials{N,V} = zero(Partials{N,V})) where {T,V,N}
56-
duals .= Dual{T,V,N}.(x, Base.RefValue(seed))
56+
for i in eachindex(duals)
57+
duals[i] = Dual{T,V,N}(x[i], seed)
58+
end
5759
return duals
5860
end
5961

6062
function seed!(duals::AbstractArray{Dual{T,V,N}}, x,
6163
seeds::NTuple{N,Partials{N,V}}) where {T,V,N}
62-
duals[1:N] .= Dual{T,V,N}.(x[1:N], seeds[1:N])
64+
for i in 1:N
65+
duals[i] = Dual{T,V,N}(x[i], seeds[i])
66+
end
6367
return duals
6468
end
6569

6670
function seed!(duals::AbstractArray{Dual{T,V,N}}, x, index,
6771
seed::Partials{N,V} = zero(Partials{N,V})) where {T,V,N}
6872
offset = index - 1
69-
chunk = (1:N) .+ offset
70-
duals[chunk] .= Dual{T,V,N}.(x[chunk], Base.RefValue(seed))
73+
for i in 1:N
74+
j = i + offset
75+
duals[j] = Dual{T,V,N}(x[j], seed)
76+
end
7177
return duals
7278
end
7379

7480
function seed!(duals::AbstractArray{Dual{T,V,N}}, x, index,
7581
seeds::NTuple{N,Partials{N,V}}, chunksize = N) where {T,V,N}
7682
offset = index - 1
77-
chunk = (1:chunksize) .+ offset
78-
duals[chunk] .= Dual{T,V,N}.(x[chunk], seeds[1:chunksize])
83+
for i in 1:chunksize
84+
j = i + offset
85+
duals[j] = Dual{T,V,N}(x[j], seeds[i])
86+
end
7987
return duals
8088
end

src/gradient.jl

+3-2
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,9 @@ extract_gradient!(::Type{T}, result::AbstractArray, dual::Dual) where {T}= copyt
7777

7878
function extract_gradient_chunk!(::Type{T}, result, dual, index, chunksize) where {T}
7979
offset = index - 1
80-
chunk = (1:chunksize) .+ offset
81-
result[chunk] .= ForwardDiff.partials(T, dual, 1:chunksize)
80+
for i in 1:chunksize
81+
result[i + offset] = partials(T, dual, i)
82+
end
8283
return result
8384
end
8485

0 commit comments

Comments
 (0)