Skip to content

Commit ddd98c7

Browse files
authored
Transpose elements in copy_transpose! (#52116)
1 parent c8ac5b6 commit ddd98c7

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

src/transpose.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ function copy_transpose!(B::AbstractVecOrMat, ir_dest::AbstractRange{Int}, jr_de
194194
for jsrc in jr_src
195195
jdest = first(jr_dest)
196196
for isrc in ir_src
197-
B[idest,jdest] = A[isrc,jsrc]
197+
B[idest,jdest] = transpose(A[isrc,jsrc])
198198
jdest += step(jr_dest)
199199
end
200200
idest += step(ir_dest)

test/adjtrans.jl

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -681,4 +681,19 @@ end
681681
@test sprint(Base.print_matrix, Adjoint(o)) == sprint(Base.print_matrix, OneHotVecOrMat((1,2), (1,4)))
682682
end
683683

684+
@testset "copy_transpose!" begin
685+
# scalar case
686+
A = [randn() for _ in 1:2, _ in 1:3]
687+
At = copy(transpose(A))
688+
B = zero.(At)
689+
LinearAlgebra.copy_transpose!(B, axes(B, 1), axes(B, 2), A, axes(A, 1), axes(A, 2))
690+
@test B == At
691+
# matrix of matrices
692+
A = [randn(2,3) for _ in 1:2, _ in 1:3]
693+
At = copy(transpose(A))
694+
B = zero.(At)
695+
LinearAlgebra.copy_transpose!(B, axes(B, 1), axes(B, 2), A, axes(A, 1), axes(A, 2))
696+
@test B == At
697+
end
698+
684699
end # module TestAdjointTranspose

0 commit comments

Comments
 (0)