@@ -329,12 +329,13 @@ struct LeftOrthAlgorithm{Kind, Alg <: AbstractAlgorithm} <: AbstractAlgorithm
329329end
330330LeftOrthAlgorithm{Kind}(alg:: Alg ) where {Kind, Alg <: AbstractAlgorithm } = LeftOrthAlgorithm{Kind, Alg}(alg)
331331
332+ # Note: specific algorithm selection is handled by `left_orth_alg` in orthnull.jl
332333LeftOrthAlgorithm(alg:: AbstractAlgorithm ) = error(
333334 """
334335 Unkown or invalid `left_orth` algorithm type `$(typeof(alg)) `.
335336 To register the algorithm type for `left_orth`, define
336337
337- MatrixAlgebraKit.LeftOrthAlgorithm (alg) = LeftOrthAlgorithm{kind}(alg)
338+ MatrixAlgebraKit.left_orth_alg (alg::CustomAlgorithm ) = LeftOrthAlgorithm{kind}(alg)
338339
339340 where `kind` selects the factorization type that will be used.
340341 By default, this is either `:qr`, `:polar` or `:svd`, to select [`qr_compact!`](@ref),
@@ -343,14 +344,8 @@ LeftOrthAlgorithm(alg::AbstractAlgorithm) = error(
343344)
344345
345346const LeftOrthViaQR = LeftOrthAlgorithm{:qr}
346- LeftOrthAlgorithm(alg:: QRAlgorithms ) = LeftOrthViaQR{typeof(alg)}(alg)
347-
348347const LeftOrthViaPolar = LeftOrthAlgorithm{:polar}
349- LeftOrthAlgorithm(alg:: PolarAlgorithms ) = LeftOrthViaPolar{typeof(alg)}(alg)
350-
351348const LeftOrthViaSVD = LeftOrthAlgorithm{:svd}
352- LeftOrthAlgorithm(alg:: SVDAlgorithms ) = LeftOrthViaSVD{typeof(alg)}(alg)
353- LeftOrthAlgorithm(alg:: TruncatedAlgorithm{<:SVDAlgorithms} ) = LeftOrthViaSVD{typeof(alg)}(alg)
354349
355350"""
356351 RightOrthAlgorithm{Kind, Alg <: AbstractAlgorithm}(alg)
@@ -363,12 +358,13 @@ struct RightOrthAlgorithm{Kind, Alg <: AbstractAlgorithm} <: AbstractAlgorithm
363358end
364359RightOrthAlgorithm{Kind}(alg:: Alg ) where {Kind, Alg <: AbstractAlgorithm } = RightOrthAlgorithm{Kind, Alg}(alg)
365360
361+ # Note: specific algorithm selection is handled by `right_orth_alg` in orthnull.jl
366362RightOrthAlgorithm(alg:: AbstractAlgorithm ) = error(
367363 """
368364 Unkown or invalid `right_orth` algorithm type `$(typeof(alg)) `.
369365 To register the algorithm type for `right_orth`, define
370366
371- MatrixAlgebraKit.RightOrthAlgorithm (alg) = RightOrthAlgorithm{kind}(alg)
367+ MatrixAlgebraKit.right_orth_alg (alg::CustomAlgorithm ) = RightOrthAlgorithm{kind}(alg)
372368
373369 where `kind` selects the factorization type that will be used.
374370 By default, this is either `:lq`, `:polar` or `:svd`, to select [`lq_compact!`](@ref),
@@ -377,14 +373,8 @@ RightOrthAlgorithm(alg::AbstractAlgorithm) = error(
377373)
378374
379375const RightOrthViaLQ = RightOrthAlgorithm{:lq}
380- RightOrthAlgorithm(alg:: LQAlgorithms ) = RightOrthViaLQ{typeof(alg)}(alg)
381-
382376const RightOrthViaPolar = RightOrthAlgorithm{:polar}
383- RightOrthAlgorithm(alg:: PolarAlgorithms ) = RightOrthViaPolar{typeof(alg)}(alg)
384-
385377const RightOrthViaSVD = RightOrthAlgorithm{:svd}
386- RightOrthAlgorithm(alg:: SVDAlgorithms ) = RightOrthViaSVD{typeof(alg)}(alg)
387- RightOrthAlgorithm(alg:: TruncatedAlgorithm{<:SVDAlgorithms} ) = RightOrthViaSVD{typeof(alg)}(alg)
388378
389379"""
390380 LeftNullAlgorithm{Kind, Alg <: AbstractAlgorithm}(alg)
@@ -397,12 +387,13 @@ struct LeftNullAlgorithm{Kind, Alg <: AbstractAlgorithm} <: AbstractAlgorithm
397387end
398388LeftNullAlgorithm{Kind}(alg:: Alg ) where {Kind, Alg <: AbstractAlgorithm } = LeftNullAlgorithm{Kind, Alg}(alg)
399389
390+ # Note: specific algorithm selection is handled by `left_null_alg` in orthnull.jl
400391LeftNullAlgorithm(alg:: AbstractAlgorithm ) = error(
401392 """
402393 Unkown or invalid `left_null` algorithm type `$(typeof(alg)) `.
403394 To register the algorithm type for `left_null`, define
404395
405- MatrixAlgebraKit.LeftNullAlgorithm (alg) = LeftNullAlgorithm{kind}(alg)
396+ MatrixAlgebraKit.left_null_alg (alg::CustomAlgorithm ) = LeftNullAlgorithm{kind}(alg)
406397
407398 where `kind` selects the factorization type that will be used.
408399 By default, this is either `:qr` or `:svd`, to select [`qr_null!`](@ref),
@@ -411,11 +402,7 @@ LeftNullAlgorithm(alg::AbstractAlgorithm) = error(
411402)
412403
413404const LeftNullViaQR = LeftNullAlgorithm{:qr}
414- LeftNullAlgorithm(alg:: QRAlgorithms ) = LeftNullViaQR{typeof(alg)}(alg)
415-
416405const LeftNullViaSVD = LeftNullAlgorithm{:svd}
417- LeftNullAlgorithm(alg:: SVDAlgorithms ) = LeftNullViaSVD{typeof(alg)}(alg)
418- LeftNullAlgorithm(alg:: TruncatedAlgorithm{<:SVDAlgorithms} ) = LeftNullViaSVD{typeof(alg)}(alg)
419406
420407"""
421408 RightNullAlgorithm{Kind, Alg <: AbstractAlgorithm}(alg)
@@ -428,12 +415,13 @@ struct RightNullAlgorithm{Kind, Alg <: AbstractAlgorithm} <: AbstractAlgorithm
428415end
429416RightNullAlgorithm{Kind}(alg:: Alg ) where {Kind, Alg <: AbstractAlgorithm } = RightNullAlgorithm{Kind, Alg}(alg)
430417
418+ # Note: specific algorithm selection is handled by `right_null_alg` in orthnull.jl
431419RightNullAlgorithm(alg:: AbstractAlgorithm ) = error(
432420 """
433421 Unkown or invalid `right_null` algorithm type `$(typeof(alg)) `.
434422 To register the algorithm type for `right_null`, define
435423
436- MatrixAlgebraKit.RightNullAlgorithm (alg) = RightNullAlgorithm{kind}(alg)
424+ MatrixAlgebraKit.right_null_alg (alg::CustomAlgorithm ) = RightNullAlgorithm{kind}(alg)
437425
438426 where `kind` selects the factorization type that will be used.
439427 By default, this is either `:lq` or `:svd`, to select [`lq_null!`](@ref),
@@ -442,8 +430,4 @@ RightNullAlgorithm(alg::AbstractAlgorithm) = error(
442430)
443431
444432const RightNullViaLQ = RightNullAlgorithm{:lq}
445- RightNullAlgorithm(alg:: LQAlgorithms ) = RightNullViaLQ{typeof(alg)}(alg)
446-
447433const RightNullViaSVD = RightNullAlgorithm{:svd}
448- RightNullAlgorithm(alg:: SVDAlgorithms ) = RightNullViaSVD{typeof(alg)}(alg)
449- RightNullAlgorithm(alg:: TruncatedAlgorithm{<:SVDAlgorithms} ) = RightNullViaSVD{typeof(alg)}(alg)
0 commit comments