Skip to content

Commit 19003af

Browse files
maleadtjrevels
authored andcommitted
Use broadcast expressions instead of some loops.
1 parent 579f6a7 commit 19003af

File tree

2 files changed

+8
-17
lines changed

2 files changed

+8
-17
lines changed

src/apiutils.jl

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -53,36 +53,28 @@ 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-
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))
5957
return duals
6058
end
6159

6260
function seed!(duals::AbstractArray{Dual{T,V,N}}, x,
6361
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])
6763
return duals
6864
end
6965

7066
function seed!(duals::AbstractArray{Dual{T,V,N}}, x, index,
7167
seed::Partials{N,V} = zero(Partials{N,V})) where {T,V,N}
7268
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))
7771
return duals
7872
end
7973

8074
function seed!(duals::AbstractArray{Dual{T,V,N}}, x, index,
8175
seeds::NTuple{N,Partials{N,V}}, chunksize = N) where {T,V,N}
8276
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])
8779
return duals
8880
end

src/gradient.jl

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,8 @@ 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-
for i in 1:chunksize
81-
result[i + offset] = partials(T, dual, i)
82-
end
80+
chunk = (1:chunksize) .+ offset
81+
result[chunk] .= ForwardDiff.partials(T, dual, 1:chunksize)
8382
return result
8483
end
8584

0 commit comments

Comments
 (0)