Skip to content

Commit 534decb

Browse files
committed
More customizability
1 parent d4e2a4d commit 534decb

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

src/factorizations/qr.jl

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,22 @@ function MatrixAlgebraKit.default_algorithm(
1919
return default_blocksparse_qr_algorithm(A; kwargs...)
2020
end
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+
2238
function 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

Comments
 (0)