Skip to content

Commit 0d40872

Browse files
Merge pull request #320 from AayushSabharwal/as/vecvecapply
fix: vecvecapply
2 parents 5830231 + b3cdb27 commit 0d40872

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

src/utils.jl

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -174,16 +174,18 @@ vecvecapply(f::Base.Callable, v)
174174
175175
Calls `f` on each element of a vecvec `v`.
176176
"""
177-
function vecvecapply(f, v)
177+
function vecvecapply(f, v::AbstractArray{<:AbstractArray})
178178
sol = Vector{eltype(eltype(v))}()
179179
for i in eachindex(v)
180-
for j in eachindex(v[:, i])
181-
push!(sol, v[:, i][j])
180+
for j in eachindex(v[i])
181+
push!(sol, v[i][j])
182182
end
183183
end
184184
f(sol)
185185
end
186186

187+
vecvecapply(f, v::AbstractVectorOfArray) = vecvecapply(f, v.u)
188+
187189
function vecvecapply(f, v::Array{T}) where {T <: Number}
188190
f(v)
189191
end

test/utils_test.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,13 @@ A = [[1 2; 3 4], [1 3; 4 6], [5 6; 7 8]]
1414
A = zeros(5, 5)
1515
@test recursive_unitless_eltype(A) == Float64
1616

17+
@test vecvecapply(x -> abs.(x), -1) == 1
18+
@test vecvecapply(x -> abs.(x), [-1, -2, 3, -4]) == [1, 2, 3, 4]
19+
v = [[-1 2; 3 -4], [5 -6; -7 -8]]
20+
vv = [1, 3, 2, 4, 5, 7, 6, 8]
21+
@test vecvecapply(x -> abs.(x), v) == vv
22+
@test vecvecapply(x -> abs.(x), VectorOfArray(v)) == vv
23+
1724
using Unitful
1825
A = zeros(5, 5) * 1u"kg"
1926
@test recursive_unitless_eltype(A) == Float64

0 commit comments

Comments
 (0)