batmat 0.0.17
Batched linear algebra routines
Loading...
Searching...
No Matches
hyhound.hpp File Reference

Go to the source code of this file.

Cholesky factorization updates

template<MatrixStructure SL, simdifiable VL, simdifiable VA, simdifiable Vd>
void batmat::linalg::hyhound_diag (Structured< VL, SL > L, VA &&A, Vd &&d)
 Update Cholesky factor L using low-rank term A diag(d) Aᵀ.
template<MatrixStructure SL, simdifiable VL, simdifiable VA, simdifiable Vd, simdifiable VW>
void batmat::linalg::hyhound_diag (Structured< VL, SL > L, VA &&A, Vd &&d, VW &&W)
 Update Cholesky factor L using low-rank term A diag(d) Aᵀ, with full Householder representation.
template<MatrixStructure SL, simdifiable VL>
auto batmat::linalg::hyhound_size_W (Structured< VL, SL > L)
 Get the size of the storage for the matrix W returned by hyhound_diag(Structured<VL,SL>, VA&&, Vd&&, VW&&).
template<simdifiable VL, simdifiable VA, simdifiable VD, simdifiable VB, simdifiable Vd, simdifiable VW>
void batmat::linalg::hyhound_diag_apply (VL &&L, VA &&A, VD &&D, VB &&B, Vd &&d, VW &&W, index_t kA_in_offset=0)
 Apply Householder transformation generated by hyhound_diag, computing (L̃, D) = (L, A) Q̆.
template<simdifiable VL, simdifiable VA, simdifiable VB, simdifiable Vd, simdifiable VW>
void batmat::linalg::hyhound_diag_apply (VL &&L, VA &&A, VB &&B, Vd &&d, VW &&W)
 Apply Householder transformation generated by hyhound_diag, computing (L̃, Ã) = (L, A) Q̆.
template<MatrixStructure SL, simdifiable VL, simdifiable VA, simdifiable Vd>
void batmat::linalg::hyhound_sign (Structured< VL, SL > L, VA &&A, Vd &&d)
 Update Cholesky factor L using low-rank term A diag(copysign(1, d)) Aᵀ, where d contains only ±0 values.
template<MatrixStructure SL, simdifiable VL1, simdifiable VA1, simdifiable VL2, simdifiable VA2, simdifiable Vd>
void batmat::linalg::hyhound_diag_2 (Structured< VL1, SL > L1, VA1 &&A1, VL2 &&L2, VA2 &&A2, Vd &&d)
 Update Cholesky factor L using low-rank term A diag(d) Aᵀ, where L and A are stored as two separate block rows.
template<MatrixStructure SL, simdifiable VL11, simdifiable VA1, simdifiable VL21, simdifiable VA2, simdifiable VA2o, simdifiable VU, simdifiable VA3, simdifiable VA3o, simdifiable Vd>
void batmat::linalg::hyhound_diag_cyclic (Structured< VL11, SL > L11, VA1 &&A1, VL21 &&L21, VA2 &&A22, VA2o &&A2_out, VU &&L31, VA3 &&A31, VA3o &&A3_out, Vd &&d)
 Update structured Cholesky factor L using structured low-rank term A diag(d) Aᵀ,.
template<MatrixStructure SL, simdifiable VL11, simdifiable VA1, simdifiable VL21, simdifiable VA2, simdifiable VA2o, simdifiable VLu1, simdifiable VAuo, simdifiable Vd>
void batmat::linalg::hyhound_diag_riccati (Structured< VL11, SL > L11, VA1 &&A1, VL21 &&L21, VA2 &&A2, VA2o &&A2_out, VLu1 &&Lu1, VAuo &&Au_out, Vd &&d, bool shift_A_out=false)
 Update structured Cholesky factor L using structured low-rank term A diag(d) Aᵀ,.

Namespaces

namespace  batmat
namespace  batmat::linalg
namespace  batmat::linalg::detail

Functions

template<class T, class Abi, micro_kernels::hyhound::KernelConfig Conf, StorageOrder OL, StorageOrder OA>
void batmat::linalg::detail::hyhound_diag (view< T, Abi, OL > L, view< T, Abi, OA > A, view< const T, Abi > D)
template<class T, class Abi, micro_kernels::hyhound::KernelConfig Conf, StorageOrder OL, StorageOrder OA>
void batmat::linalg::detail::hyhound_diag (view< T, Abi, OL > L, view< T, Abi, OA > A, view< const T, Abi > D, view< T, Abi > W)
template<class T, class Abi, micro_kernels::hyhound::KernelConfig Conf, StorageOrder OL, StorageOrder OA>
void batmat::linalg::detail::hyhound_diag_apply (view< T, Abi, OL > L, view< const T, Abi, OA > Ain, view< T, Abi, OA > Aout, view< const T, Abi, OA > B, view< const T, Abi > D, view< const T, Abi > W, index_t kA_in_offset=0)
template<class T, class Abi, micro_kernels::hyhound::KernelConfig Conf, StorageOrder OL1, StorageOrder OA1, StorageOrder OL2, StorageOrder OA2>
void batmat::linalg::detail::hyhound_diag_2 (view< T, Abi, OL1 > L11, view< T, Abi, OA1 > A1, view< T, Abi, OL2 > L21, view< T, Abi, OA2 > A2, view< const T, Abi > D)
template<class T, class Abi, micro_kernels::hyhound::KernelConfig Conf, StorageOrder OL, StorageOrder OW, StorageOrder OY, StorageOrder OU>
void batmat::linalg::detail::hyhound_diag_cyclic (view< T, Abi, OL > L11, view< T, Abi, OW > A1, view< T, Abi, OY > L21, view< const T, Abi, OW > A22, view< T, Abi, OW > A2_out, view< T, Abi, OU > L31, view< const T, Abi, OW > A31, view< T, Abi, OW > A3_out, view< const T, Abi > D)
template<class T, class Abi, micro_kernels::hyhound::KernelConfig Conf, StorageOrder OL, StorageOrder OA, StorageOrder OLu, StorageOrder OAu>
void batmat::linalg::detail::hyhound_diag_riccati (view< T, Abi, OL > L11, view< T, Abi, OA > A1, view< T, Abi, OL > L21, view< const T, Abi, OA > A2, view< T, Abi, OA > A2_out, view< T, Abi, OLu > Lu1, view< T, Abi, OAu > Au_out, view< const T, Abi > D, bool shift_A_out)