![]() |
batmat
develop
Batched linear algebra routines
|
#include <batmat/assume.hpp>#include <batmat/linalg/simdify.hpp>#include <batmat/linalg/sterf.hpp>#include <batmat/linalg/triangular.hpp>#include <batmat/linalg/uview.hpp>#include <batmat/simd.hpp>#include <cmath>#include <expected>#include <limits>Go to the source code of this file.
Namespaces | |
| namespace | batmat |
| namespace | batmat::linalg |
| namespace | batmat::linalg::micro_kernels |
| namespace | batmat::linalg::micro_kernels::sterf |
Functions | |
| constexpr auto | batmat::linalg::micro_kernels::sterf::default_tolerance (auto user_tol) noexcept |
| template<class T, class Abi> | |
| datapar::simd< T, Abi > | batmat::linalg::micro_kernels::sterf::safe_scaling_factor (datapar::simd< T, Abi > anorm) noexcept |
| template<class T, class Abi> | |
| bool | batmat::linalg::micro_kernels::sterf::all_zero (datapar::simd< T, Abi > x) noexcept |
| template<class T, class Abi> | |
| bool | batmat::linalg::micro_kernels::sterf::negligible_squared_e (datapar::simd< T, Abi > e0_sq, datapar::simd< T, Abi > d0, datapar::simd< T, Abi > d1, T ε_sq) noexcept |
| template<class T, class Abi> | |
| std::pair< datapar::simd< T, Abi >, datapar::simd< T, Abi > > | batmat::linalg::micro_kernels::sterf::stable_2x2_eigenvalues (datapar::simd< T, Abi > a, datapar::simd< T, Abi > b, datapar::simd< T, Abi > c) noexcept |
| Eigenvalues of [a b; b c]. | |
| template<class T, class Abi> | |
| void | batmat::linalg::micro_kernels::sterf::solve_2x2_squared_e_inplace (uview< T, Abi, StorageOrder::ColMajor > d, uview< T, Abi, StorageOrder::ColMajor > e, index_t l) noexcept |
| template<class T, class Abi> | |
| void | batmat::linalg::micro_kernels::sterf::scale_diag_only (uview< T, Abi, StorageOrder::ColMajor > d, index_t l, index_t m, datapar::simd< T, Abi > factor) noexcept |
| template<class T, class Abi> | |
| void | batmat::linalg::micro_kernels::sterf::scale_squared_e (uview< T, Abi, StorageOrder::ColMajor > d, uview< T, Abi, StorageOrder::ColMajor > e, index_t l, index_t m, datapar::simd< T, Abi > factor) noexcept |
| template<class T, class Abi> | |
| void | batmat::linalg::micro_kernels::sterf::sterf_ql_sweep_squared_e_inplace (uview< T, Abi, StorageOrder::ColMajor > d, uview< T, Abi, StorageOrder::ColMajor > e, index_t l, index_t m) noexcept |
| template<class T, class Abi> | |
| void | batmat::linalg::micro_kernels::sterf::sterf_qr_sweep_squared_e_inplace (uview< T, Abi, StorageOrder::ColMajor > d, uview< T, Abi, StorageOrder::ColMajor > e, index_t l, index_t m) noexcept |
| template<class T, class Abi> | |
| void | batmat::linalg::micro_kernels::sterf::sterf_dynamic_step_squared_e_inplace (uview< T, Abi, StorageOrder::ColMajor > d, uview< T, Abi, StorageOrder::ColMajor > e, index_t l, index_t m) noexcept |
| template<class T, class Abi> | |
| datapar::simd< T, Abi > | batmat::linalg::micro_kernels::sterf::squared_block_norm_estimate_from_squared_e (uview< T, Abi, StorageOrder::ColMajor > d, uview< T, Abi, StorageOrder::ColMajor > e_sq, index_t l, index_t m) noexcept |
| template<class T, class Abi> | |
| datapar::simd< T, Abi > | batmat::linalg::micro_kernels::sterf::block_norm_estimate_from_squared_e (uview< T, Abi, StorageOrder::ColMajor > d, uview< T, Abi, StorageOrder::ColMajor > e_sq, index_t l, index_t m) noexcept |
| template<class T, class Abi> | |
| std::expected< index_t, index_t > | batmat::linalg::micro_kernels::sterf::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 Pal-Walker-Kahan variant of the implicit QR/QL method with Wilkinson shifts. | |