batmat 0.0.23
Batched linear algebra routines
Loading...
Searching...
No Matches
sterf.tpp File Reference
#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_tbatmat::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.