@@ -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