Skip to content

Commit e4c8ebb

Browse files
committed
Support orthnull for Diagonal
1 parent e1ea618 commit e4c8ebb

File tree

3 files changed

+11
-7
lines changed

3 files changed

+11
-7
lines changed

src/interface/orthnull.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,9 @@ left_orth_alg(alg::LeftOrthAlgorithm) = alg
443443
left_orth_alg(alg::QRAlgorithms) = LeftOrthViaQR(alg)
444444
left_orth_alg(alg::PolarAlgorithms) = LeftOrthViaPolar(alg)
445445
left_orth_alg(alg::SVDAlgorithms) = LeftOrthViaSVD(alg)
446+
left_orth_alg(alg::DiagonalAlgorithm) = LeftOrthViaQR(alg)
446447
left_orth_alg(alg::TruncatedAlgorithm{<:SVDAlgorithms}) = LeftOrthViaSVD(alg)
448+
left_orth_alg(alg::TruncatedAlgorithm{DiagonalAlgorithm}) = LeftOrthViaSVD(alg)
447449

448450
"""
449451
right_orth_alg(alg::AbstractAlgorithm) -> RightOrthAlgorithm
@@ -478,7 +480,9 @@ right_orth_alg(alg::RightOrthAlgorithm) = alg
478480
right_orth_alg(alg::LQAlgorithms) = RightOrthViaLQ(alg)
479481
right_orth_alg(alg::PolarAlgorithms) = RightOrthViaPolar(alg)
480482
right_orth_alg(alg::SVDAlgorithms) = RightOrthViaSVD(alg)
483+
right_orth_alg(alg::DiagonalAlgorithm) = RightOrthViaLQ(alg)
481484
right_orth_alg(alg::TruncatedAlgorithm{<:SVDAlgorithms}) = RightOrthViaSVD(alg)
485+
right_orth_alg(alg::TruncatedAlgorithm{DiagonalAlgorithm}) = RightOrthViaSVD(alg)
482486

483487
"""
484488
left_null_alg(alg::AbstractAlgorithm) -> LeftNullAlgorithm

test/orthnull.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@ for T in (BLASFloats..., GenericFloats...), n in (37, m, 63)
1919
if T BLASFloats
2020
if CUDA.functional()
2121
TestSuite.test_orthnull(CuMatrix{T}, (m, n); test_nullity = false)
22-
n == m && TestSuite.test_orthnull(Diagonal{T, CuVector{T}}, m; test_orthnull = false)
22+
n == m && TestSuite.test_orthnull(Diagonal{T, CuVector{T}}, m)
2323
end
2424
if AMDGPU.functional()
2525
TestSuite.test_orthnull(ROCMatrix{T}, (m, n); test_nullity = false)
26-
n == m && TestSuite.test_orthnull(Diagonal{T, ROCVector{T}}, m; test_orthnull = false)
26+
n == m && TestSuite.test_orthnull(Diagonal{T, ROCVector{T}}, m)
2727
end
2828
end
2929
if !is_buildkite
3030
TestSuite.test_orthnull(T, (m, n))
3131
AT = Diagonal{T, Vector{T}}
32-
TestSuite.test_orthnull(AT, m; test_orthnull = false)
32+
TestSuite.test_orthnull(AT, m)
3333
end
3434
end

test/testsuite/orthnull.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ _right_orth_lq!(x, CVᴴ; kwargs...) = right_orth!(x, CVᴴ; alg = :lq, kwargs..
1717
_right_orth_polar(x; kwargs...) = right_orth(x; alg = :polar, kwargs...)
1818
_right_orth_polar!(x, CVᴴ; kwargs...) = right_orth!(x, CVᴴ; alg = :polar, kwargs...)
1919

20-
function test_orthnull(T::Type, sz; test_nullity = true, test_orthnull = true, kwargs...)
20+
function test_orthnull(T::Type, sz; test_nullity = true, kwargs...)
2121
summary_str = testargs_summary(T, sz)
2222
return @testset "orthnull $summary_str" begin
23-
test_orthnull && test_left_orthnull(T, sz; kwargs...)
23+
test_left_orthnull(T, sz; kwargs...)
2424
test_nullity && test_left_nullity(T, sz; kwargs...)
25-
test_orthnull && test_right_orthnull(T, sz; kwargs...)
25+
test_right_orthnull(T, sz; kwargs...)
2626
test_nullity && test_right_nullity(T, sz; kwargs...)
2727
end
2828
end
@@ -276,9 +276,9 @@ function test_right_orthnull(
276276

277277
# passing an algorithm
278278
C, Vᴴ = @testinferred right_orth(A; alg = MatrixAlgebraKit.default_lq_algorithm(A))
279-
Nᴴ = @testinferred right_null(A; alg = :lq, positive = true)
280279
@test C isa typeof(A) && size(C) == (m, minmn)
281280
@test Vᴴ isa typeof(A) && size(Vᴴ) == (minmn, n)
281+
Nᴴ = @testinferred right_null(A; alg = :lq, positive = true)
282282
@test eltype(Nᴴ) == eltype(A) && size(Nᴴ) == (n - minmn, n)
283283
@test C * Vᴴ A
284284
@test isisometric(Vᴴ; side = :right)

0 commit comments

Comments
 (0)