Skip to content

Commit f2c533c

Browse files
kose-ydkarrasch
authored andcommitted
select intermediate destination of CompositionMap/KroneckerMap based on input (#80)
1 parent e67dd8f commit f2c533c

File tree

2 files changed

+5
-7
lines changed

2 files changed

+5
-7
lines changed

src/composition.jl

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,19 +126,18 @@ function A_mul_B!(y::AbstractVector, A::CompositeMap, x::AbstractVector)
126126
if N==1
127127
A_mul_B!(y, A.maps[1], x)
128128
else
129-
T = eltype(y)
130-
dest = Array{T}(undef, size(A.maps[1], 1))
129+
dest = similar(y, size(A.maps[1], 1))
131130
A_mul_B!(dest, A.maps[1], x)
132131
source = dest
133132
if N>2
134-
dest = Array{T}(undef, size(A.maps[2], 1))
133+
dest = similar(y, size(A.maps[2], 1))
135134
end
136135
for n in 2:N-1
137136
try
138137
resize!(dest, size(A.maps[n], 1))
139138
catch err
140139
if err == ErrorException("cannot resize array with shared data")
141-
dest = Array{T}(undef, size(A.maps[n], 1))
140+
dest = similar(y, size(A.maps[n], 1))
142141
else
143142
rethrow(err)
144143
end

src/kronecker.jl

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,8 @@ Base.:(==)(A::KroneckerMap, B::KroneckerMap) = (eltype(A) == eltype(B) && A.maps
105105
na, ma = size(At)
106106
mb, nb = size(B)
107107
v = zeros(T, ma)
108-
Ty = eltype(y)
109-
temp1 = Array{Ty}(undef, na)
110-
temp2 = Array{Ty}(undef, nb)
108+
temp1 = similar(y, na)
109+
temp2 = similar(y, nb)
111110
@views @inbounds for i in 1:ma
112111
v[i] = one(T)
113112
A_mul_B!(temp1, At, v)

0 commit comments

Comments
 (0)