Developer Interface
MatrixAlgebraKit.jl provides a developer interface for specifying custom algorithm backends and selecting default algorithms.
MatrixAlgebraKit.default_algorithm — FunctionMatrixAlgebraKit.default_algorithm(f, A; kwargs...)
MatrixAlgebraKit.default_algorithm(f, ::Type{TA}; kwargs...) where {TA}Select the default algorithm for a given factorization function f and input A. In general, this is called by select_algorithm if no algorithm is specified explicitly. New types should prefer to register their default algorithms in the type domain.
MatrixAlgebraKit.select_algorithm — FunctionMatrixAlgebraKit.select_algorithm(f, A, alg::AbstractAlgorithm)
MatrixAlgebraKit.select_algorithm(f, A, alg::Symbol; kwargs...)
MatrixAlgebraKit.select_algorithm(f, A, alg::Type; kwargs...)
MatrixAlgebraKit.select_algorithm(f, A; kwargs...)
MatrixAlgebraKit.select_algorithm(f, A, (; kwargs...))Decide on an algorithm to use for implementing the function f on inputs of type A. This can be obtained both for values A or types A.
If alg is an AbstractAlgorithm instance, it will be returned as-is.
If alg is a Symbol or a Type of algorithm, the return value is obtained by calling the corresponding algorithm constructor; keyword arguments in kwargs are passed along  to this constructor.
If alg is not specified (or nothing), an algorithm will be selected  automatically with MatrixAlgebraKit.default_algorithm and  the keyword arguments in kwargs will be passed to the algorithm constructor. Finally, the same behavior is obtained when the keyword arguments are passed as the third positional argument in the form of a NamedTuple. 
MatrixAlgebraKit.findtruncated — FunctionMatrixAlgebraKit.findtruncated(values::AbstractVector, strategy::TruncationStrategy)Generic interface for finding truncated values of the spectrum of a decomposition based on the strategy. The output should be a collection of indices specifying which values to keep. MatrixAlgebraKit.findtruncated is used inside of the default implementation of truncate to perform the truncation. It does not assume that the values are sorted. For a version that assumes the values are reverse sorted (which is the standard case for SVD) see MatrixAlgebraKit.findtruncated_svd.
MatrixAlgebraKit.findtruncated_svd — FunctionMatrixAlgebraKit.findtruncated_svd(values::AbstractVector, strategy::TruncationStrategy)Like MatrixAlgebraKit.findtruncated but assumes that the values are real and sorted in descending order, as typically obtained by the SVD. This assumption is not checked, and this is used in the default implementation of svd_trunc!.