@@ -39,15 +39,34 @@ function fuseaxes(
3939end
4040
4141# Inner version takes a list of sub-permutations, overload this one if needed.
42+ # TODO : Remove _permutedims once support for Julia 1.10 is dropped
43+ # define permutedims with a BlockedPermuation. Default is to flatten it.
44+ # TODO : Deprecate `permuteblockeddims` in favor of `bipermutedims`.
45+ # Keeping it here for backwards compatibility.
46+ function bipermutedims (a:: AbstractArray , perm1, perm2)
47+ return permuteblockeddims (a, perm1, perm2)
48+ end
49+ function bipermutedims! (a_dest:: AbstractArray , a_src:: AbstractArray , perm1, perm2)
50+ return permuteblockeddims! (a_dest, a_src, perm1, perm2)
51+ end
52+ function bipermutedims (a:: AbstractArray , biperm:: AbstractBlockPermutation{2} )
53+ return permuteblockeddims (a, biperm)
54+ end
55+ function bipermutedims! (
56+ a_dest:: AbstractArray , a_src:: AbstractArray , biperm:: AbstractBlockPermutation{2}
57+ )
58+ return permuteblockeddims! (a_dest, a_src, biperm)
59+ end
60+
61+ # Older interface.
62+ # TODO : Deprecate in favor of `bipermutedims` (or decide if we want to keep it
63+ # in case there are applications of more general partitionings).
4264function permuteblockeddims (a:: AbstractArray , perm1, perm2)
4365 return _permutedims (a, (perm1... , perm2... ))
4466end
4567function permuteblockeddims! (a_dest:: AbstractArray , a_src:: AbstractArray , perm1, perm2)
4668 return _permutedims! (a_dest, a_src, (perm1... , perm2... ))
4769end
48-
49- # TODO remove _permutedims once support for Julia 1.10 is dropped
50- # define permutedims with a BlockedPermuation. Default is to flatten it.
5170function permuteblockeddims (a:: AbstractArray , biperm:: AbstractBlockPermutation{2} )
5271 return permuteblockeddims (a, blocks (biperm)... )
5372end
@@ -87,7 +106,7 @@ function matricize(
87106 ) where {N1, N2}
88107 ndims (a) == length (permblock1) + length (permblock2) ||
89108 throw (ArgumentError (" Invalid bipermutation" ))
90- a_perm = permuteblockeddims (a, permblock1, permblock2)
109+ a_perm = bipermutedims (a, permblock1, permblock2)
91110 return matricize (style, a_perm, Val (length (permblock1)), Val (length (permblock2)))
92111end
93112
@@ -179,7 +198,7 @@ function unmatricize(
179198 blocked_axes = axes_dest[invbiperm]
180199 a12 = unmatricize (style, m, blocked_axes)
181200 biperm_dest = biperm (invperm (invbiperm), length_codomain (axes_dest))
182- return permuteblockeddims (a12, biperm_dest)
201+ return bipermutedims (a12, biperm_dest)
183202end
184203
185204function unmatricize (m:: AbstractMatrix , axes_dest, invbiperm:: AbstractBlockPermutation{2} )
@@ -208,7 +227,7 @@ function unmatricize!(
208227 blocked_axes = axes (a_dest)[invbiperm]
209228 a_perm = unmatricize (style, m, blocked_axes)
210229 biperm_dest = biperm (invperm (invbiperm), length_codomain (axes (a_dest)))
211- return permuteblockeddims ! (a_dest, a_perm, biperm_dest)
230+ return bipermutedims ! (a_dest, a_perm, biperm_dest)
212231end
213232
214233function unmatricize! (
0 commit comments