@@ -19,6 +19,22 @@ function MatrixAlgebraKit.default_algorithm(
19
19
return default_blocksparse_qr_algorithm (A; kwargs... )
20
20
end
21
21
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
+
22
38
function MatrixAlgebraKit. initialize_output (
23
39
:: typeof (qr_compact!), A:: AbstractBlockSparseMatrix , alg:: BlockPermutedDiagonalAlgorithm
24
40
)
@@ -49,8 +65,7 @@ function MatrixAlgebraKit.initialize_output(
49
65
end
50
66
51
67
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)
54
69
55
70
# allocate output
56
71
for bI in eachblockstoredindex (A)
@@ -97,8 +112,7 @@ function MatrixAlgebraKit.initialize_output(
97
112
end
98
113
99
114
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)
102
116
103
117
# allocate output
104
118
for bI in eachblockstoredindex (A)
0 commit comments