@@ -74,27 +74,32 @@ julia> A
7474```
7575"""
7676adjoint! (B:: AbstractMatrix , A:: AbstractMatrix ) = transpose_f! (adjoint, B, A)
77+
78+ @noinline function check_transpose_axes (axesA, axesB)
79+ axesB == reverse (axesA) || throw (DimensionMismatch (" axes of the destination are incompatible with that of the source" ))
80+ end
81+
7782function transpose! (B:: AbstractVector , A:: AbstractMatrix )
78- axes (B,1 ) == axes (A ,2 ) && axes (A, 1 ) == 1 : 1 || throw ( DimensionMismatch ( " transpose " ))
83+ check_transpose_axes (( axes (B,1 ), axes (B ,2 )), axes (A))
7984 copyto! (B, A)
8085end
8186function transpose! (B:: AbstractMatrix , A:: AbstractVector )
82- axes (B, 2 ) == axes (A,1 ) && axes (B, 1 ) == 1 : 1 || throw ( DimensionMismatch ( " transpose " ))
87+ check_transpose_axes ( axes (B), ( axes (A,1 ), axes (A, 2 ) ))
8388 copyto! (B, A)
8489end
8590function adjoint! (B:: AbstractVector , A:: AbstractMatrix )
86- axes (B,1 ) == axes (A ,2 ) && axes (A, 1 ) == 1 : 1 || throw ( DimensionMismatch ( " transpose " ))
91+ check_transpose_axes (( axes (B,1 ), axes (B ,2 )), axes (A))
8792 ccopy! (B, A)
8893end
8994function adjoint! (B:: AbstractMatrix , A:: AbstractVector )
90- axes (B, 2 ) == axes (A,1 ) && axes (B, 1 ) == 1 : 1 || throw ( DimensionMismatch ( " transpose " ))
95+ check_transpose_axes ( axes (B), ( axes (A,1 ), axes (A, 2 ) ))
9196 ccopy! (B, A)
9297end
9398
9499const transposebaselength= 64
95100function transpose_f! (f, B:: AbstractMatrix , A:: AbstractMatrix )
96101 inds = axes (A)
97- axes (B, 1 ) == inds[ 2 ] && axes (B, 2 ) == inds[ 1 ] || throw ( DimensionMismatch ( string (f)) )
102+ check_transpose_axes ( axes (B), inds)
98103
99104 m, n = length (inds[1 ]), length (inds[2 ])
100105 if m* n<= 4 * transposebaselength
0 commit comments