@@ -19,6 +19,22 @@ function MatrixAlgebraKit.default_algorithm(
1919 return default_blocksparse_qr_algorithm (A; kwargs... )
2020end
2121
22+ function similar_output (
23+ :: typeof (qr_compact!), A, R_axis, alg:: MatrixAlgebraKit.AbstractAlgorithm
24+ )
25+ Q = similar (A, axes (A, 1 ), R_axis)
26+ R = similar (A, R_axis, axes (A, 2 ))
27+ return Q, R
28+ end
29+
30+ function similar_output (
31+ :: typeof (qr_full!), A, R_axis, alg:: MatrixAlgebraKit.AbstractAlgorithm
32+ )
33+ Q = similar (A, axes (A, 1 ), R_axis)
34+ R = similar (A, R_axis, axes (A, 2 ))
35+ return Q, R
36+ end
37+
2238function MatrixAlgebraKit. initialize_output (
2339 :: typeof (qr_compact!), A:: AbstractBlockSparseMatrix , alg:: BlockPermutedDiagonalAlgorithm
2440)
@@ -49,8 +65,7 @@ function MatrixAlgebraKit.initialize_output(
4965 end
5066
5167 r_axis = mortar_axis (r_axes)
52- Q = similar (A, axes (A, 1 ), r_axis)
53- R = similar (A, r_axis, axes (A, 2 ))
68+ Q, R = similar_output (qr_compact!, A, r_axis, alg)
5469
5570 # allocate output
5671 for bI in eachblockstoredindex (A)
@@ -97,8 +112,7 @@ function MatrixAlgebraKit.initialize_output(
97112 end
98113
99114 r_axis = mortar_axis (r_axes)
100- Q = similar (A, axes (A, 1 ), r_axis)
101- R = similar (A, r_axis, axes (A, 2 ))
115+ Q, R = similar_output (qr_full!, A, r_axis, alg)
102116
103117 # allocate output
104118 for bI in eachblockstoredindex (A)
0 commit comments