14using batmat::linalg::micro_kernels::sterf::SterfOptions;
18template <
class T,
class Abi>
22 static_assert(!std::is_const_v<T>);
41template <simdifiable Vd, simdifiable Vs>
44 static_assert(
decltype(
simdify(diag))::storage_order == StorageOrder::ColMajor);
45 static_assert(
decltype(
simdify(subdiag))::storage_order == StorageOrder::ColMajor);
52template <simdifiable VA, simdifiable Vd, simdifiable Vs, MatrixStructure SA>
void copy_diag(VA &&A, VB &&B)
Copy the diagonal elements of a matrix.
std::expected< index_t, index_t > sterf(view< T, Abi, StorageOrder::ColMajor > diag, view< T, Abi, StorageOrder::ColMajor > subdiag, SterfOptions options)
std::expected< index_t, index_t > sterf(view< T, Abi, StorageOrder::ColMajor > diag, view< T, Abi, StorageOrder::ColMajor > subdiag, SterfOptions options) noexcept
Eigenvalues of a symmetric tridiagonal matrix given by diag and subdiag, computed in-place using the ...
typename detail::simdified_abi< V >::type simdified_abi_t
constexpr bool simdify_compatible
constexpr auto simdify(simdifiable auto &&a) -> simdified_view_t< decltype(a)>
std::expected< index_t, index_t > sterf(Vd &&diag, Vs &&subdiag, SterfOptions options={})
Eigenvalues of a symmetric tridiagonal matrix given by diag and subdiag, computed in-place using the ...
simd_view_types< std::remove_const_t< T >, Abi >::template view< T, Order > view
void extract_bidiag(Structured< VA, SA > A, Vd &&diag, Vs &&offdiag)
Extracts the diagonal and one off-diagonal from a matrix.
Light-weight wrapper class used for overload resolution of triangular and symmetric matrices.