11#include <guanaqo/trace.hpp>
16template <
class T,
class Abi, micro_kernels::sytrd::KernelConfig Conf, StorageOrder OD>
21 W.rows() == 0 || (W.cols() == 1 && W.rows() == std::max<index_t>(D.cols(), 1) - 1) ||
29 if (M < 3) [[unlikely]] {
30 if (W.rows() > 0 && W.cols() > 0)
44 if (A.data() != D.data())
47 B.bottom_left(k - 1, k - 1), W, transposed,
false);
63template <simdifiable VD, simdifiable VW, simdifiable VY>
70template <simdifiable VA, simdifiable VD, simdifiable VB, simdifiable VW>
73 bool transposed =
false) {
79template <simdifiable VD, simdifiable VB, simdifiable VW>
82 bool transposed =
false) {
90template <simdifiable VD>
98template <simdifiable VD>
constexpr FlopCount sytrd(index_t m)
Symmetric tridiagonalization of an m×m matrix.
auto sytrd_size_Y(VD &&D)
Get the size of the storage for the matrix Y used by sytrd(Structured<VD, MatrixStructure::LowerTrian...
void sytrd_apply(VA &&A, VD &&D, Structured< VB, MatrixStructure::LowerTriangular > B, VW &&W, bool transposed=false)
void copy(VA &&A, VB &&B, Opts... opts)
B = A.
auto sytrd_size_W(VD &&D)
Get the size of the storage for the matrix W returned by sytrd(Structured<VD, MatrixStructure::LowerT...
void sytrd(Structured< VD, MatrixStructure::LowerTriangular > D, VW &&W, VY &&Y)
Tridiagonalization.
#define GUANAQO_TRACE_LINALG(name, gflops)
void geqrf_apply(view< const T, Abi, OA > A, view< T, Abi, OD > D, view< const T, Abi, OB > B, view< const T, Abi > W, bool transposed, bool reversed)
void sytrd(view< T, Abi, OD > D, view< T, Abi > W, view< T, Abi > Y)
void sytrd_apply(view< const T, Abi, OA > A, view< T, Abi, OD > D, view< const T, Abi, OB > B, view< const T, Abi > W, bool transposed)
constexpr std::pair< index_t, index_t > sytrd_W_size(view< T, Abi, OD > D)
void sytrd_register(view< T, Abi, OD > D, view< T, Abi > W, view< T, Abi > Y) noexcept
Symmetric block tridiagonalization.
constexpr std::pair< index_t, index_t > sytrd_Y_size(view< T, Abi, OD > D)
typename detail::simdified_abi< V >::type simdified_abi_t
constexpr bool simdify_compatible
constexpr auto simdify(simdifiable auto &&a) -> simdified_view_t< decltype(a)>
simd_view_types< std::remove_const_t< T >, Abi >::template view< T, Order > view
Light-weight wrapper class used for overload resolution of triangular and symmetric matrices.