@@ -7,22 +7,30 @@ for f in (
77 @eval begin
88 function $f (
99 A:: AbstractArray ,
10- codomain_perm :: Tuple{Vararg{Int}} , domain_perm :: Tuple{Vararg{Int}} ;
10+ codomain_length :: Val , domain_length :: Val ;
1111 kwargs... ,
1212 )
1313 # tensor to matrix
14- A_mat = matricize (A, codomain_perm, domain_perm )
14+ A_mat = matricize (A, codomain_length, domain_length )
1515
1616 # factorization
1717 X, Y = MatrixAlgebra.$ f (A_mat; kwargs... )
1818
1919 # matrix to tensor
20- biperm = permmortar ((codomain_perm, domain_perm ))
20+ biperm = blockedtrivialperm ((codomain_length, domain_length ))
2121 axes_codomain, axes_domain = blocks (axes (A)[biperm])
2222 axes_X = tuplemortar ((axes_codomain, (axes (X, 2 ),)))
2323 axes_Y = tuplemortar (((axes (Y, 1 ),), axes_domain))
2424 return unmatricize (X, axes_X), unmatricize (Y, axes_Y)
2525 end
26+ function $f (
27+ A:: AbstractArray ,
28+ codomain_perm:: Tuple{Vararg{Int}} , domain_perm:: Tuple{Vararg{Int}} ;
29+ kwargs... ,
30+ )
31+ A_perm = permuteblockeddims (A, codomain_perm, domain_perm)
32+ return $ f (A_perm, Val (length (codomain_perm)), Val (length (domain_perm)); kwargs... )
33+ end
2634 function $f (A:: AbstractArray , labels_A, labels_codomain, labels_domain; kwargs... )
2735 biperm = blockedperm_indexin (Tuple .((labels_A, labels_codomain, labels_domain))... )
2836 return $ f (A, blocks (biperm)... ; kwargs... )
0 commit comments