Skip to content

Commit 6bcf698

Browse files
authored
Support 5-arg mul! (JuliaArrays#174) (JuliaArrays#175)
* Fix JuliaArrays#174 * v0.16.1
1 parent e7c625a commit 6bcf698

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed

Project.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
name = "BlockArrays"
22
uuid = "8e7c35d0-a365-5155-bbbb-fb81a777f24e"
3-
version = "0.16"
3+
version = "0.16.1"
44

55
[deps]
66
ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"
77
FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b"
88
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
99

1010
[compat]
11-
ArrayLayouts = "0.7.1"
11+
ArrayLayouts = "0.7.2"
1212
FillArrays = "0.11.6"
1313
julia = "1.6"
1414

src/blocklinalg.jl

+2-4
Original file line numberDiff line numberDiff line change
@@ -192,18 +192,16 @@ end
192192

193193
function materialize!(M::MatMulMatAdd{<:AbstractBlockLayout,<:AbstractColumnMajor,<:AbstractColumnMajor})
194194
α, A, X_in, β, Y_in = M.α, M.A, M.B, M.β, M.C
195-
_fill_lmul!(β, Y_in)
196195
X = PseudoBlockArray(X_in, (axes(A,2), axes(X_in,2)))
197-
Y = PseudoBlockArray(Y_in, (axes(A,1), axes(Y_in,2)))
196+
Y = PseudoBlockArray(Y_in, (axes(A,1), axes(X_in,2)))
198197
_block_muladd!(α, A, X, β, Y)
199198
Y_in
200199
end
201200

202201
function materialize!(M::MatMulMatAdd{<:AbstractColumnMajor,<:AbstractBlockLayout,<:AbstractColumnMajor})
203202
α, A_in, X, β, Y_in = M.α, M.A, M.B, M.β, M.C
204-
_fill_lmul!(β, Y_in)
205203
A = PseudoBlockArray(A_in, (axes(A_in,1),axes(X,1)))
206-
Y = PseudoBlockArray(Y_in, (axes(Y_in,1),axes(X,2)))
204+
Y = PseudoBlockArray(Y_in, (axes(A,1),axes(X,2)))
207205
_block_muladd!(α, A, X, β, Y)
208206
Y_in
209207
end

test/test_blocklinalg.jl

+12
Original file line numberDiff line numberDiff line change
@@ -222,4 +222,16 @@ import ArrayLayouts: DenseRowMajor, ColumnMajor, StridedLayout
222222
mul!(Z, copy(X), Y)
223223
@test Z X*Y
224224
end
225+
226+
@testset "5-arg mul! (#174)" begin
227+
A = BlockArray(rand(4, 5), [1,3], [2,3])
228+
= PseudoBlockArray(A)
229+
B = BlockArray(rand(5, 3), [2,3], [1,1,1])
230+
= PseudoBlockArray(B)
231+
C = randn(4,3)
232+
@test mul!(view(copy(C),:,1:3), A, B, 1, 2) A*B + 2C
233+
@test mul!(view(copy(C),:,1:3), A, B̃, 1, 2) A*B + 2C
234+
@test mul!(view(copy(C),:,1:3), Ã, B, 1, 2) A*B + 2C
235+
@test mul!(view(copy(C),:,1:3), Ã, B̃, 1, 2) A*B + 2C
236+
end
225237
end

0 commit comments

Comments
 (0)