|
| template<simdifiable Vx, simdifiable Vz, std::convertible_to< simdified_value_t< Vx > > T> |
| void | scale (T alpha, Vx &&x, Vz &&z) |
| | Multiply a vector by a scalar z = αx.
|
| template<simdifiable Vx, std::convertible_to< simdified_value_t< Vx > > T> |
| void | scale (T alpha, Vx &&x) |
| | Multiply a vector by a scalar x = αx.
|
| template<simdifiable Vx, simdifiable Vy, simdifiable Vz> |
| void | hadamard (Vx &&x, Vy &&y, Vz &&z) |
| | Compute the Hadamard (elementwise) product of two vectors z = x ⊙ y.
|
| template<simdifiable Vx, simdifiable Vy> |
| void | hadamard (Vx &&x, Vy &&y) |
| | Compute the Hadamard (elementwise) product of two vectors x = x ⊙ y.
|
| template<simdifiable Vx, simdifiable Vlo, simdifiable Vhi, simdifiable Vz> |
| void | clamp (Vx &&x, Vlo &&lo, Vhi &&hi, Vz &&z) |
| | Elementwise clamping z = max(lo, min(x, hi)).
|
| template<simdifiable Vx, simdifiable Vlo, simdifiable Vhi, simdifiable Vz> |
| void | clamp_resid (Vx &&x, Vlo &&lo, Vhi &&hi, Vz &&z) |
| | Elementwise clamping residual z = x - max(lo, min(x, hi)).
|
| template<simdifiable Vx, simdifiable Vz> |
| void | clamp (Vx &&x, simdified_value_t< Vx > lo, simdified_value_t< Vx > hi, Vz &&z) |
| | Elementwise clamping z = max(lo, min(x, hi)), with scalar lo and hi.
|
| template<simdifiable Vx, simdifiable Vy, simdifiable Vz, std::convertible_to< simdified_value_t< Vx > > Ta, std::convertible_to< simdified_value_t< Vx > > Tb> |
| void | axpby (Ta alpha, Vx &&x, Tb beta, Vy &&y, Vz &&z) |
| | Add scaled vector z = αx + βy.
|
| template<simdifiable Vx, simdifiable Vy, std::convertible_to< simdified_value_t< Vx > > Ta, std::convertible_to< simdified_value_t< Vx > > Tb> |
| void | axpby (Ta alpha, Vx &&x, Tb beta, Vy &&y) |
| | Add scaled vector y = αx + βy.
|
| template<auto Beta = 1, simdifiable Vy, simdifiable... Vx> |
| void | axpy (Vy &&y, const std::array< simdified_value_t< Vy >, sizeof...(Vx)> &alphas, Vx &&...x) |
| | Add scaled vector y = ∑ᵢ αᵢxᵢ + βy.
|
| template<simdifiable Vx, simdifiable Vy, simdifiable Vz, std::convertible_to< simdified_value_t< Vx > > Ta> |
| void | axpy (Ta alpha, Vx &&x, Vy &&y, Vz &&z) |
| | Add scaled vector z = αx + y.
|
| template<auto Beta = 1, simdifiable Vx, simdifiable Vy, std::convertible_to< simdified_value_t< Vx > > Ta> |
| void | axpy (Ta alpha, Vx &&x, Vy &&y) |
| | Add scaled vector y = αx + βy (where β is a compile-time constant).
|
| template<simdifiable VA, simdifiable VB, int Rotate = 0> |
| void | negate (VA &&A, VB &&B, with_rotate_t< Rotate >={}) |
| | Negate a matrix or vector B = -A.
|
| template<simdifiable VA, int Rotate = 0> |
| void | negate (VA &&A, with_rotate_t< Rotate >={}) |
| | Negate a matrix or vector A = -A.
|
| template<simdifiable VA, simdifiable VB, simdifiable VC, int Rotate = 0> |
| void | sub (VA &&A, VB &&B, VC &&C, with_rotate_t< Rotate >={}) |
| | Subtract two matrices or vectors C = A - B. Rotate affects B.
|
| template<simdifiable VA, simdifiable VB, int Rotate = 0> |
| void | sub (VA &&A, VB &&B, with_rotate_t< Rotate >={}) |
| | Subtract two matrices or vectors A = A - B. Rotate affects B.
|
| template<simdifiable VA, simdifiable VB, simdifiable VC, int Rotate = 0> |
| void | add (VA &&A, VB &&B, VC &&C, with_rotate_t< Rotate >={}) |
| | Add two matrices or vectors C = A + B. Rotate affects B.
|
| template<simdifiable VA, simdifiable VB, int Rotate = 0> |
| void | add (VA &&A, VB &&B, with_rotate_t< Rotate >={}) |
| | Add two matrices or vectors A = A + B. Rotate affects B.
|
| template<class F, simdifiable VA, simdifiable... VAs> |
| void | for_each_elementwise (F &&fun, VA &&A, VAs &&...As) |
| | Apply a function to all elements of the given matrices or vectors.
|
| template<class F, simdifiable VA, simdifiable... VAs> |
| void | transform_elementwise (F &&fun, VA &&A, VAs &&...As) |
| | Apply a function to all elements of the given matrices or vectors, storing the result in the first argument.
|
| template<class F, simdifiable VA, simdifiable VB, simdifiable... VAs> |
| void | transform2_elementwise (F &&fun, VA &&A, VB &&B, VAs &&...As) |
| | Apply a function to all elements of the given matrices or vectors, storing the results in the first two arguments.
|
| template<class F, simdifiable... VAs, simdifiable... VBs> |
| void | transform_n_elementwise (F &&fun, std::tuple< VAs... > As, VBs &&...Bs) |
| | Apply a function to all elements of the given matrices or vectors, storing the results in the tuple of matrices given as the first argument.
|
| template<class F, simdifiable... VAs, simdifiable... VBs> |
| void | transform_n_diag (F &&fun, std::tuple< VAs... > As, VBs &&...Bs) |
| | Apply a function to all elements of the given vectors and the diagonal elements of the given square matrices, storing the results in the tuple of vectors or matrices given as the first argument.
|
| template<class F, simdifiable VA, simdifiable VB> |
| void | copy_diag (VA &&A, VB &&B) |
| | Copy the diagonal elements of a matrix.
|
| template<simdifiable VA, simdifiable VB, simdifiable VC> |
| void | add_diag (VA &&A, VB &&b, VC &&C) |
| | C = A + diag(b).
|
| template<simdifiable VA, simdifiable VB> |
| void | add_diag (VA &&A, VB &&b) |
| | A += diag(b).
|
|
| template<simdifiable_multi Vx, simdifiable_multi Vz, std::convertible_to< simdified_value_t< Vx > > T> |
| void | scale (T alpha, Vx &&x, Vz &&z) |
| | Multiply a vector by a scalar z = αx.
|
| template<simdifiable_multi Vx, std::convertible_to< simdified_value_t< Vx > > T> |
| void | scale (T alpha, Vx &&x) |
| | Multiply a vector by a scalar x = αx.
|
| template<simdifiable_multi Vx, simdifiable_multi Vy, simdifiable_multi Vz> |
| void | hadamard (Vx &&x, Vy &&y, Vz &&z) |
| | Compute the Hadamard (elementwise) product of two vectors z = x ⊙ y.
|
| template<simdifiable_multi Vx, simdifiable_multi Vy> |
| void | hadamard (Vx &&x, Vy &&y) |
| | Compute the Hadamard (elementwise) product of two vectors x = x ⊙ y.
|
| template<simdifiable_multi Vx, simdifiable_multi Vlo, simdifiable_multi Vhi, simdifiable_multi Vz> |
| void | clamp (Vx &&x, Vlo &&lo, Vhi &&hi, Vz &&z) |
| | Elementwise clamping z = max(lo, min(x, hi)).
|
| template<simdifiable_multi Vx, simdifiable_multi Vlo, simdifiable_multi Vhi, simdifiable_multi Vz> |
| void | clamp_resid (Vx &&x, Vlo &&lo, Vhi &&hi, Vz &&z) |
| | Elementwise clamping residual z = x - max(lo, min(x, hi)).
|
| template<simdifiable_multi Vx, simdifiable_multi Vz> |
| void | clamp (Vx &&x, simdified_value_t< Vx > lo, simdified_value_t< Vx > hi, Vz &&z) |
| | Elementwise clamping z = max(lo, min(x, hi)), with scalar lo and hi.
|
| template<simdifiable_multi Vx, simdifiable_multi Vy, simdifiable_multi Vz, std::convertible_to< simdified_value_t< Vx > > Ta, std::convertible_to< simdified_value_t< Vx > > Tb> |
| void | axpby (Ta alpha, Vx &&x, Tb beta, Vy &&y, Vz &&z) |
| | Add scaled vector z = αx + βy.
|
| template<simdifiable_multi Vx, simdifiable_multi Vy, std::convertible_to< simdified_value_t< Vx > > Ta, std::convertible_to< simdified_value_t< Vx > > Tb> |
| void | axpby (Ta alpha, Vx &&x, Tb beta, Vy &&y) |
| | Add scaled vector y = αx + βy.
|
| template<auto Beta = 1, simdifiable_multi Vy, simdifiable_multi... Vx> |
| void | axpy (Vy &&y, const std::array< simdified_value_t< Vy >, sizeof...(Vx)> &alphas, Vx &&...x) |
| | Add scaled vector y = ∑ᵢ αᵢxᵢ + βy.
|
| template<simdifiable_multi Vx, simdifiable_multi Vy, simdifiable_multi Vz, std::convertible_to< simdified_value_t< Vx > > Ta> |
| void | axpy (Ta alpha, Vx &&x, Vy &&y, Vz &&z) |
| | Add scaled vector z = αx + y.
|
| template<auto Beta = 1, simdifiable_multi Vx, simdifiable_multi Vy, std::convertible_to< simdified_value_t< Vx > > Ta> |
| void | axpy (Ta alpha, Vx &&x, Vy &&y) |
| | Add scaled vector y = αx + βy (where β is a compile-time constant).
|
| template<simdifiable_multi VA, simdifiable_multi VB, int Rotate = 0> |
| void | negate (VA &&A, VB &&B, with_rotate_t< Rotate > rot={}) |
| | Negate a matrix or vector B = -A.
|
| template<simdifiable_multi VA, int Rotate = 0> |
| void | negate (VA &&A, with_rotate_t< Rotate > rot={}) |
| | Negate a matrix or vector A = -A.
|
| template<simdifiable_multi VA, simdifiable_multi VB, simdifiable_multi VC, int Rotate = 0> |
| void | sub (VA &&A, VB &&B, VC &&C, with_rotate_t< Rotate > rot={}) |
| | Subtract two matrices or vectors C = A - B. Rotate affects B.
|
| template<simdifiable_multi VA, simdifiable_multi VB, int Rotate = 0> |
| void | sub (VA &&A, VB &&B, with_rotate_t< Rotate > rot={}) |
| | Subtract two matrices or vectors A = A - B. Rotate affects B.
|
| template<simdifiable_multi VA, simdifiable_multi VB, simdifiable_multi VC, int Rotate = 0> |
| void | add (VA &&A, VB &&B, VC &&C, with_rotate_t< Rotate > rot={}) |
| | Add two matrices or vectors C = A + B. Rotate affects B.
|
| template<simdifiable_multi VA, simdifiable_multi VB, int Rotate = 0> |
| void | add (VA &&A, VB &&B, with_rotate_t< Rotate > rot={}) |
| | Add two matrices or vectors A = A + B. Rotate affects B.
|
| template<class F, simdifiable_multi VA, simdifiable_multi... VAs> |
| void | for_each_elementwise (F &&fun, VA &&A, VAs &&...As) |
| | Apply a function to all elements of the given matrices or vectors.
|
| template<class F, simdifiable_multi VA, simdifiable_multi... VAs> |
| void | transform_elementwise (F &&fun, VA &&A, VAs &&...As) |
| | Apply a function to all elements of the given matrices or vectors, storing the result in the first argument.
|
| template<class F, simdifiable_multi VA, simdifiable_multi VB, simdifiable_multi... VAs> |
| void | transform2_elementwise (F &&fun, VA &&A, VB &&B, VAs &&...As) |
| | Apply a function to all elements of the given matrices or vectors, storing the results in the first two arguments.
|
| template<class F, simdifiable_multi... VAs, simdifiable_multi... VBs> |
| void | transform_n_elementwise (F &&fun, std::tuple< VAs... > As, VBs &&...Bs) |
| | Apply a function to all elements of the given matrices or vectors, storing the results in the tuple of matrices given as the first argument.
|
|
| template<simdifiable VA, simdifiable VB, simdifiable VD, simdifiable Vd, detail::gemm_diag::track_zeros_opt... Opts> |
| void | gemm_diag (VA &&A, VB &&B, VD &&D, Vd &&d, Opts... opts) |
| | D = A diag(d) B.
|
| template<simdifiable VA, simdifiable VB, simdifiable VC, simdifiable VD, simdifiable Vd, detail::gemm_diag::track_zeros_opt... Opts> |
| void | gemm_diag_add (VA &&A, VB &&B, VC &&C, VD &&D, Vd &&d, Opts... opts) |
| | D = C + A diag(d) B.
|
| template<simdifiable VA, simdifiable VB, simdifiable VD, simdifiable Vd, detail::gemm_diag::track_zeros_opt... Opts> |
| void | gemm_diag_add (VA &&A, VB &&B, VD &&D, Vd &&d, Opts... opts) |
| | D += A diag(d) B.
|
| template<simdifiable VA, simdifiable VB, simdifiable VC, simdifiable VD, simdifiable Vd, detail::gemm_diag::track_zeros_opt... Opts> |
| void | gemm_diag_sub (VA &&A, VB &&B, VC &&C, VD &&D, Vd &&d, Opts... opts) |
| | D = C - A diag(d) B.
|
| template<simdifiable VA, simdifiable VB, simdifiable VD, simdifiable Vd, detail::gemm_diag::track_zeros_opt... Opts> |
| void | gemm_diag_sub (VA &&A, VB &&B, VD &&D, Vd &&d, Opts... opts) |
| | D -= A diag(d) B.
|
| template<MatrixStructure SC, simdifiable VA, simdifiable VD, simdifiable Vd, detail::gemm_diag::track_zeros_opt... Opts> |
| void | syrk_diag (VA &&A, Structured< VD, SC > D, Vd &&d, Opts... opts) |
| | D = A diag(d) Aᵀ with D symmetric.
|
| template<MatrixStructure SC, simdifiable VA, simdifiable VC, simdifiable VD, simdifiable Vd, detail::gemm_diag::track_zeros_opt... Opts> |
| void | syrk_diag_add (VA &&A, Structured< VC, SC > C, Structured< VD, SC > D, Vd &&d, Opts... opts) |
| | D = C + A diag(d) Aᵀ with C, D symmetric.
|
| template<MatrixStructure SC, simdifiable VA, simdifiable VD, simdifiable Vd, detail::gemm_diag::track_zeros_opt... Opts> |
| void | syrk_diag_add (VA &&A, Structured< VD, SC > D, Vd &&d, Opts... opts) |
| | D += A diag(d) Aᵀ with D symmetric.
|
| template<MatrixStructure SC, simdifiable VA, simdifiable VC, simdifiable VD, simdifiable Vd, detail::gemm_diag::track_zeros_opt... Opts> |
| void | syrk_diag_sub (VA &&A, Structured< VC, SC > C, Structured< VD, SC > D, Vd &&d, Opts... opts) |
| | D = C - A diag(d) Aᵀ with C, D symmetric.
|
| template<MatrixStructure SC, simdifiable VA, simdifiable VD, simdifiable Vd, detail::gemm_diag::track_zeros_opt... Opts> |
| void | syrk_diag_sub (VA &&A, Structured< VD, SC > D, Vd &&d, Opts... opts) |
| | D -= A diag(d) Aᵀ with D symmetric.
|
|
| template<simdifiable VA, simdifiable VB, simdifiable VD, shift_opt... Opts> |
| void | gemm (VA &&A, VB &&B, VD &&D, TilingOptions packing={}, Opts... opts) |
| | D = A B.
|
| template<simdifiable VA, simdifiable VB, simdifiable VD, shift_opt... Opts> |
| void | gemm_neg (VA &&A, VB &&B, VD &&D, TilingOptions packing={}, Opts... opts) |
| | D = -A B.
|
| template<simdifiable VA, simdifiable VB, simdifiable VC, simdifiable VD, shift_opt... Opts> |
| void | gemm_add (VA &&A, VB &&B, VC &&C, VD &&D, TilingOptions packing={}, Opts... opts) |
| | D = C + A B.
|
| template<simdifiable VA, simdifiable VB, simdifiable VD, shift_opt... Opts> |
| void | gemm_add (VA &&A, VB &&B, VD &&D, TilingOptions packing={}, Opts... opts) |
| | D += A B.
|
| template<simdifiable VA, simdifiable VB, simdifiable VC, simdifiable VD, shift_opt... Opts> |
| void | gemm_sub (VA &&A, VB &&B, VC &&C, VD &&D, TilingOptions packing={}, Opts... opts) |
| | D = C - A B.
|
| template<simdifiable VA, simdifiable VB, simdifiable VD, shift_opt... Opts> |
| void | gemm_sub (VA &&A, VB &&B, VD &&D, TilingOptions packing={}, Opts... opts) |
| | D -= A B.
|
|
| template<MatrixStructure SA, MatrixStructure SD, simdifiable VA, simdifiable VD, shift_opt... Opts> |
| void | syrk (Structured< VA, SA > A, Structured< VD, SD > D, Opts... opts) |
| | D = A Aᵀ with D symmetric.
|
| template<MatrixStructure SD, class TA, simdifiable VD, shift_opt... Opts> |
| void | syrk (TA &&A, Structured< VD, SD > D, Opts... opts) |
| | D = A Aᵀ with D symmetric.
|
| template<MatrixStructure SD, simdifiable VD, shift_opt... Opts> |
| void | syrk (Structured< VD, SD > D, Opts... opts) |
| | D = D Dᵀ with D triangular on input and symmetric on output.
|
| template<MatrixStructure SA, MatrixStructure SD, simdifiable VA, simdifiable VD, shift_opt... Opts> |
| void | syrk_neg (Structured< VA, SA > A, Structured< VD, SD > D, Opts... opts) |
| | D = -A Aᵀ with D symmetric.
|
| template<MatrixStructure SD, class TA, simdifiable VD, shift_opt... Opts> |
| void | syrk_neg (TA &&A, Structured< VD, SD > D, Opts... opts) |
| | D = A Aᵀ with D symmetric.
|
| template<MatrixStructure SD, simdifiable VD, shift_opt... Opts> |
| void | syrk_neg (Structured< VD, SD > D, Opts... opts) |
| | D = -D Dᵀ with D triangular on input and symmetric on output.
|
| template<MatrixStructure SD, simdifiable VA, simdifiable VC, simdifiable VD, shift_opt... Opts> |
| void | syrk_add (VA &&A, Structured< VC, SD > C, Structured< VD, SD > D, Opts... opts) |
| | D = C + A Aᵀ with C, D symmetric.
|
| template<MatrixStructure SD, simdifiable VA, simdifiable VD, shift_opt... Opts> |
| void | syrk_add (VA &&A, Structured< VD, SD > D, Opts... opts) |
| | D += A Aᵀ with D symmetric.
|
| template<MatrixStructure SD, simdifiable VA, simdifiable VC, simdifiable VD, shift_opt... Opts> |
| void | syrk_sub (VA &&A, Structured< VC, SD > C, Structured< VD, SD > D, Opts... opts) |
| | D = C - A Aᵀ with C, D symmetric.
|
| template<MatrixStructure SD, simdifiable VA, simdifiable VD, shift_opt... Opts> |
| void | syrk_sub (VA &&A, Structured< VD, SD > D, Opts... opts) |
| | D -= A Aᵀ with D symmetric.
|
|
| template<MatrixStructure SA, MatrixStructure SB, MatrixStructure SD, simdifiable VA, simdifiable VB, simdifiable VD, shift_opt... Opts> |
| void | trmm (Structured< VA, SA > A, Structured< VB, SB > B, Structured< VD, SD > D, Opts... opts) |
| | D = A B with A and/or B triangular.
|
| template<class TA, class TB, class TD, shift_opt... Opts> |
| void | trmm (TA &&A, TB &&B, TD &&D, Opts... opts) |
| | D = A B with A and/or B triangular.
|
| template<MatrixStructure SA, simdifiable VA, simdifiable VD, shift_opt... Opts> |
| void | trmm (Structured< VA, SA > A, VD &&D, Opts... opts) |
| | D = A D with A triangular.
|
| template<MatrixStructure SB, simdifiable VB, simdifiable VD, shift_opt... Opts> |
| void | trmm (VD &&D, Structured< VB, SB > B, Opts... opts) |
| | D = D B with B triangular.
|
| template<MatrixStructure SA, MatrixStructure SB, MatrixStructure SD, simdifiable VA, simdifiable VB, simdifiable VD, shift_opt... Opts> |
| void | trmm_neg (Structured< VA, SA > A, Structured< VB, SB > B, Structured< VD, SD > D, Opts... opts) |
| | D = -A B with A and/or B triangular.
|
| template<class TA, class TB, class TD, shift_opt... Opts> |
| void | trmm_neg (TA &&A, TB &&B, TD &&D, Opts... opts) |
| | D = -A B with A and/or B triangular.
|
| template<MatrixStructure SA, MatrixStructure SB, MatrixStructure SD, simdifiable VA, simdifiable VB, simdifiable VC, simdifiable VD, shift_opt... Opts> |
| void | trmm_add (Structured< VA, SA > A, Structured< VB, SB > B, Structured< VC, SD > C, Structured< VD, SD > D, Opts... opts) |
| | D = C + A B with A and/or B triangular.
|
| template<class TA, class TB, class TC, class TD, shift_opt... Opts> |
| void | trmm_add (TA &&A, TB &&B, TC &&C, TD &&D, Opts... opts) |
| | D = C + A B with A and/or B triangular.
|
| template<MatrixStructure SA, MatrixStructure SB, MatrixStructure SD, simdifiable VA, simdifiable VB, simdifiable VC, simdifiable VD, shift_opt... Opts> |
| void | trmm_sub (Structured< VA, SA > A, Structured< VB, SB > B, Structured< VC, SD > C, Structured< VD, SD > D, Opts... opts) |
| | D = C - A B with A and/or B triangular.
|
| template<class TA, class TB, class TC, class TD, shift_opt... Opts> |
| void | trmm_sub (TA &&A, TB &&B, TC &&C, TD &&D, Opts... opts) |
| | D = C - A B with A and/or B triangular.
|
|
| template<simdifiable VA, simdifiable VB, simdifiable VD, shift_opt... Opts> |
| void | gemv (VA &&A, VB &&B, VD &&D, Opts... opts) |
| | d = A b
|
| template<simdifiable VA, simdifiable VB, simdifiable VD, shift_opt... Opts> |
| void | gemv_neg (VA &&A, VB &&B, VD &&D, Opts... opts) |
| | d = -A b
|
| template<simdifiable VA, simdifiable VB, simdifiable VC, simdifiable VD, shift_opt... Opts> |
| void | gemv_add (VA &&A, VB &&B, VC &&C, VD &&D, Opts... opts) |
| | d = c + A b
|
| template<simdifiable VA, simdifiable VB, simdifiable VD, shift_opt... Opts> |
| void | gemv_add (VA &&A, VB &&B, VD &&D, Opts... opts) |
| | d = d + A b
|
| template<simdifiable VA, simdifiable VB, simdifiable VC, simdifiable VD, shift_opt... Opts> |
| void | gemv_sub (VA &&A, VB &&B, VC &&C, VD &&D, Opts... opts) |
| | d = c - A b
|
| template<simdifiable VA, simdifiable VB, simdifiable VD, shift_opt... Opts> |
| void | gemv_sub (VA &&A, VB &&B, VD &&D, Opts... opts) |
| | d = d - A b
|
|
| template<MatrixStructure SL, simdifiable VL, simdifiable VA, simdifiable Vd> |
| void | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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ᵀ,.
|
|
| template<MatrixStructure SC, simdifiable VA, simdifiable VC, simdifiable VD> |
| void | syrk_add_potrf (VA &&A, Structured< VC, SC > C, Structured< VD, SC > D, simdified_value_t< VA > regularization=0) |
| | D = chol(C + AAᵀ) with C symmetric, D triangular.
|
| template<MatrixStructure SC, simdifiable VA, simdifiable VD> |
| void | syrk_add_potrf (VA &&A, Structured< VD, SC > D) |
| | D = chol(D + AAᵀ) with D symmetric/triangular.
|
| template<MatrixStructure SC, simdifiable VA, simdifiable VC, simdifiable VD> |
| void | syrk_sub_potrf (VA &&A, Structured< VC, SC > C, Structured< VD, SC > D, simdified_value_t< VA > regularization=0) |
| | D = chol(C - AAᵀ) with C symmetric, D triangular.
|
| template<MatrixStructure SC, simdifiable VA, simdifiable VD> |
| void | syrk_sub_potrf (VA &&A, Structured< VD, SC > D, simdified_value_t< VA > regularization=0) |
| | D = chol(D - AAᵀ) with D symmetric/triangular.
|
| template<MatrixStructure SC, simdifiable VA, simdifiable VC, simdifiable VD, simdifiable Vd> |
| void | syrk_diag_add_potrf (VA &&A, Structured< VC, SC > C, Structured< VD, SC > D, Vd &&d, simdified_value_t< VA > regularization=0) |
| | D = chol(C + A diag(d) Aᵀ) with C symmetric, D triangular.
|
| template<MatrixStructure SC, simdifiable VA, simdifiable VD, simdifiable Vd> |
| void | syrk_diag_add_potrf (VA &&A, Structured< VD, SC > D, Vd &&d) |
| | D = chol(D + A diag(d) Aᵀ) with D symmetric/triangular.
|
| template<MatrixStructure SC, simdifiable VC, simdifiable VD> |
| void | potrf (Structured< VC, SC > C, Structured< VD, SC > D, simdified_value_t< VC > regularization=0) |
| | D = chol(C) with C symmetric, D triangular.
|
| template<MatrixStructure SD, simdifiable VD> |
| void | potrf (Structured< VD, SD > D, simdified_value_t< VD > regularization=0) |
| | D = chol(D) with D symmetric/triangular.
|
|
| template<MatrixStructure SA, simdifiable VA, simdifiable VB, simdifiable VD> |
| void | symv (Structured< VA, SA > A, VB &&B, VD &&D) |
| | d = A b where A is symmetric
|
| template<MatrixStructure SA, simdifiable VA, simdifiable VB, simdifiable VD> |
| void | symv_neg (Structured< VA, SA > A, VB &&B, VD &&D) |
| | d = -A b where A is symmetric
|
| template<MatrixStructure SA, simdifiable VA, simdifiable VB, simdifiable VC, simdifiable VD> |
| void | symv_add (Structured< VA, SA > A, VB &&B, VC &&C, VD &&D) |
| | d = c + A b where A is symmetric
|
| template<MatrixStructure SA, simdifiable VA, simdifiable VB, simdifiable VD> |
| void | symv_add (Structured< VA, SA > A, VB &&B, VD &&D) |
| | d = d + A b where A is symmetric
|
| template<MatrixStructure SA, simdifiable VA, simdifiable VB, simdifiable VC, simdifiable VD> |
| void | symv_sub (Structured< VA, SA > A, VB &&B, VC &&C, VD &&D) |
| | d = c - A b where A is symmetric
|
| template<MatrixStructure SA, simdifiable VA, simdifiable VB, simdifiable VD> |
| void | symv_sub (Structured< VA, SA > A, VB &&B, VD &&D) |
| | d = d - A b where A is symmetric
|
|
| constexpr auto | simdify (simdifiable auto &&a) -> simdified_view_t< decltype(a)> |
| constexpr auto | simdify (simdifiable_multi auto &&a) -> simdified_multi_view_t< decltype(a)> |
| constexpr MatrixStructure | transpose (MatrixStructure s) |
| template<class M> |
| | Structured (M &&) -> Structured< M > |
| template<class M, MatrixStructure S> |
| void | simdify (const Structured< M, S > &)=delete |
| template<index_t Rows, index_t Cols, class T, class Abi, StorageOrder Order> |
| cached_uview< Order==StorageOrder::ColMajor ? Cols :Rows, T, Abi, Order > | with_cached_access (const uview< T, Abi, Order > &o) noexcept |
| template<index_t Rows, index_t Cols, class T, class Abi> |
| cached_uview< Cols, T, Abi, StorageOrder::ColMajor > | with_cached_access (const uview< T, Abi, StorageOrder::ColMajor > &o) noexcept |
| template<index_t Rows, index_t Cols, class T, class Abi> |
| uview< T, Abi, StorageOrder::RowMajor > | with_cached_access (const uview< T, Abi, StorageOrder::RowMajor > &o) noexcept |
| template<index_t Rows, index_t Cols, class T, class Abi> |
| cached_uview< Rows, T, Abi, StorageOrder::RowMajor > | with_cached_access (const uview< T, Abi, StorageOrder::RowMajor > &o) noexcept |
| template<index_t Rows, index_t Cols, class T, class Abi> |
| uview< T, Abi, StorageOrder::ColMajor > | with_cached_access (const uview< T, Abi, StorageOrder::ColMajor > &o) noexcept |
|
| template<bool Z = true> |
| constexpr track_zeros_t< Z > | track_zeros |
| template<int I> |
| constexpr with_shift_A_t< I > | with_shift_A |
| template<int I> |
| constexpr with_rotate_B_t< I > | with_rotate_B |
| template<int I> |
| constexpr with_rotate_C_t< I > | with_rotate_C |
| template<int I> |
| constexpr with_rotate_D_t< I > | with_rotate_D |
| template<int I> |
| constexpr with_mask_D_t< I > | with_mask_D |
| template<class...> |
| constexpr std::optional< int > | shift_A = std::nullopt |
| template<class T, class... Ts> |
| constexpr std::optional< int > | shift_A< T, Ts... > = shift_A<Ts...> |
| template<int I, class... Ts> |
| constexpr std::optional< int > | shift_A< with_shift_A_t< I >, Ts... > = I |
| template<class...> |
| constexpr std::optional< int > | rotate_B = std::nullopt |
| template<class T, class... Ts> |
| constexpr std::optional< int > | rotate_B< T, Ts... > = rotate_B<Ts...> |
| template<int I, class... Ts> |
| constexpr std::optional< int > | rotate_B< with_rotate_B_t< I >, Ts... > = I |
| template<class...> |
| constexpr std::optional< int > | rotate_C = std::nullopt |
| template<class T, class... Ts> |
| constexpr std::optional< int > | rotate_C< T, Ts... > = rotate_C<Ts...> |
| template<int I, class... Ts> |
| constexpr std::optional< int > | rotate_C< with_rotate_C_t< I >, Ts... > = I |
| template<class...> |
| constexpr std::optional< int > | rotate_D = std::nullopt |
| template<class T, class... Ts> |
| constexpr std::optional< int > | rotate_D< T, Ts... > = rotate_D<Ts...> |
| template<int I, class... Ts> |
| constexpr std::optional< int > | rotate_D< with_rotate_D_t< I >, Ts... > = I |
| template<class...> |
| constexpr std::optional< int > | mask_D = std::nullopt |
| template<class T, class... Ts> |
| constexpr std::optional< int > | mask_D< T, Ts... > = mask_D<Ts...> |
| template<int I, class... Ts> |
| constexpr std::optional< int > | mask_D< with_mask_D_t< I >, Ts... > = I |
| template<class> |
| constexpr bool | is_shift_opt = false |
| template<int I> |
| constexpr bool | is_shift_opt< with_shift_A_t< I > > = true |
| template<int I> |
| constexpr bool | is_shift_opt< with_rotate_B_t< I > > = true |
| template<int I> |
| constexpr bool | is_shift_opt< with_rotate_C_t< I > > = true |
| template<int I> |
| constexpr bool | is_shift_opt< with_rotate_D_t< I > > = true |
| template<int I> |
| constexpr bool | is_shift_opt< with_mask_D_t< I > > = true |
| template<int I> |
| constexpr with_rotate_t< I > | with_rotate |
| template<int I> |
| constexpr with_mask_t< I > | with_mask |
| template<class...> |
| constexpr std::optional< int > | get_rotate = std::nullopt |
| template<class T, class... Ts> |
| constexpr std::optional< int > | get_rotate< T, Ts... > = get_rotate<Ts...> |
| template<int I, class... Ts> |
| constexpr std::optional< int > | get_rotate< with_rotate_t< I >, Ts... > = I |
| template<class...> |
| constexpr std::optional< int > | get_mask = std::nullopt |
| template<class T, class... Ts> |
| constexpr std::optional< int > | get_mask< T, Ts... > = get_mask<Ts...> |
| template<int I, class... Ts> |
| constexpr std::optional< int > | get_mask< with_mask_t< I >, Ts... > = I |
| template<class> |
| constexpr bool | is_rotate_opt = false |
| template<int I> |
| constexpr bool | is_rotate_opt< with_rotate_t< I > > = true |
| template<int I> |
| constexpr bool | is_rotate_opt< with_mask_t< I > > = true |
| template<class...> |
| constexpr bool | simdify_compatible = false |
| template<simdifiable V, simdifiable... Vs> |
| constexpr bool | simdify_compatible< V, Vs... > |
| template<int I> |
| constexpr with_rotate_A_t< I > | with_rotate_A |