@@ -74,27 +74,32 @@ julia> A
74
74
```
75
75
"""
76
76
adjoint! (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
+
77
82
function 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))
79
84
copyto! (B, A)
80
85
end
81
86
function 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 ) ))
83
88
copyto! (B, A)
84
89
end
85
90
function 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))
87
92
ccopy! (B, A)
88
93
end
89
94
function 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 ) ))
91
96
ccopy! (B, A)
92
97
end
93
98
94
99
const transposebaselength= 64
95
100
function transpose_f! (f, B:: AbstractMatrix , A:: AbstractMatrix )
96
101
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)
98
103
99
104
m, n = length (inds[1 ]), length (inds[2 ])
100
105
if m* n<= 4 * transposebaselength
0 commit comments