|
Uni20
Asynchronous tensor and runtime library.
|
Logical host adapters for value-converting dense decompositions. More...
#include "common.hpp"#include "packed_decomposition_capabilities.hpp"#include <algorithm>#include <span>#include <uni20/linalg/backends/packed_matrix.hpp>#include <uni20/linalg/operation_tags.hpp>#include <utility>#include <vector>Go to the source code of this file.
Namespaces | |
| namespace | uni20 |
| namespace | uni20::linalg |
| namespace | uni20::linalg::packed_detail |
Concepts | |
| concept | uni20::linalg::packed_detail::DecompositionMatrix |
| concept | uni20::linalg::packed_detail::DecompositionValues |
| concept | uni20::linalg::packed_detail::SameMatrixScalar |
Functions | |
| template<class V , class A > | |
| auto | uni20::linalg::packed_detail::compute_svd (V &v, A &a, char jobu, char jobvt, Precision p) |
| template<packed_detail::DecompositionMatrix A, class X , class Y , class... P> requires packed_detail::SameMatrixScalar<A, X> && packed_detail::SameMatrixScalar<A, Y> && packed_detail::LqScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> | |
| consteval auto | uni20::linalg::kernel_accepts_types (LapackBackend, lq_op const &, X &, Y &, A &, P... precision) |
| Accept real or complex host matrices for reduced LQ at explicit precision. | |
| template<packed_detail::DecompositionMatrix A, packed_detail::DecompositionMatrix R, class... P> requires std::same_as<typename R::value_type, complex<make_real_t<typename A::value_type>>> && packed_detail::EigenScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> | |
| consteval auto | uni20::linalg::kernel_accepts_types (LapackBackend, nonsymmetric_eigen_op const &, A &, std::span< typename R::value_type >, R &, P... precision) |
| Accept real or complex input and actual complex eigenvalue/vector outputs. | |
| template<packed_detail::DecompositionMatrix A, class X , class Y , class... P> requires packed_detail::SameMatrixScalar<A, X> && packed_detail::SameMatrixScalar<A, Y> && packed_detail::QrScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> | |
| consteval auto | uni20::linalg::kernel_accepts_types (LapackBackend, qr_op const &, X &, Y &, A &, P... precision) |
| Accept real or complex host matrices for reduced QR at explicit precision. | |
| template<class V , packed_detail::DecompositionMatrix A, class... P> requires packed_detail::EighScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> && packed_detail::DecompositionValues<V, A> | |
| consteval auto | uni20::linalg::kernel_accepts_types (LapackBackend, self_adjoint_eigh_op const &, V &, A &, P... precision) |
| Accept matching real eigenvalues and real or complex host matrix storage. | |
| template<class V , packed_detail::DecompositionMatrix A, class... P> requires packed_detail::SvdScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> && packed_detail::DecompositionValues<V, A> | |
| consteval auto | uni20::linalg::kernel_accepts_types (LapackBackend, singular_values_op const &op, V &v, A &a, P... precision) |
| Accept explicit-precision SVD with the requested output structure. | |
| template<class V , packed_detail::DecompositionMatrix A, class... P> requires packed_detail::SvdScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> && packed_detail::DecompositionValues<V, A> | |
| consteval auto | uni20::linalg::kernel_accepts_types (LapackBackend, svd_left_op const &op, V &v, A &a, P... precision) |
| Accept explicit-precision SVD with the requested output structure. | |
| template<class V , packed_detail::DecompositionMatrix A, class L , class... P> requires packed_detail::SameMatrixScalar<A, L> && packed_detail::SvdScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> && packed_detail::DecompositionValues<V, A> | |
| consteval auto | uni20::linalg::kernel_accepts_types (LapackBackend, svd_left_op const &op, V &v, L &l, A &a, P... precision) |
| Accept explicit-precision SVD with the requested output structure. | |
| template<class V , packed_detail::DecompositionMatrix A, class F , class... P> requires packed_detail::SameMatrixScalar<A, F> && packed_detail::SvdScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> && packed_detail::DecompositionValues<V, A> | |
| consteval auto | uni20::linalg::kernel_accepts_types (LapackBackend, svd_op const &op, V &v, F &f, A &a, P... precision) |
| Accept explicit-precision SVD with the requested output structure. | |
| template<class V , packed_detail::DecompositionMatrix A, class L , class R , class... P> requires packed_detail::SameMatrixScalar<A, L> && packed_detail::SameMatrixScalar<A, R> && packed_detail::SvdScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> && packed_detail::DecompositionValues<V, A> | |
| consteval auto | uni20::linalg::kernel_accepts_types (LapackBackend, svd_op const &op, V &v, L &l, R &r, A &a, P... precision) |
| Accept explicit-precision SVD with the requested output structure. | |
| template<class V , packed_detail::DecompositionMatrix A, class... P> requires packed_detail::SvdScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> && packed_detail::DecompositionValues<V, A> | |
| consteval auto | uni20::linalg::kernel_accepts_types (LapackBackend, svd_right_op const &op, V &v, A &a, P... precision) |
| Accept explicit-precision SVD with the requested output structure. | |
| template<class V , packed_detail::DecompositionMatrix A, class R , class... P> requires packed_detail::SameMatrixScalar<A, R> && packed_detail::SvdScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> && packed_detail::DecompositionValues<V, A> | |
| consteval auto | uni20::linalg::kernel_accepts_types (LapackBackend, svd_right_op const &op, V &v, R &r, A &a, P... precision) |
| Accept explicit-precision SVD with the requested output structure. | |
| template<class A > | |
| void | uni20::linalg::packed_detail::require_matrix (A const &a, std::size_t rows, std::size_t cols) |
| template<packed_detail::DecompositionMatrix A, class X , class Y , class... P> requires packed_detail::SameMatrixScalar<A, X> && packed_detail::SameMatrixScalar<A, Y> && packed_detail::LqScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> | |
| KernelAttempt | uni20::linalg::try_kernel (LapackBackend, lq_op const &, X &l, Y &q, A &a, P... precision) |
| Pack logical elements and compute reduced LQ through MPLAPACK. | |
| template<packed_detail::DecompositionMatrix A, packed_detail::DecompositionMatrix R, class... P> requires std::same_as<typename R::value_type, complex<make_real_t<typename A::value_type>>> && packed_detail::EigenScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> | |
| KernelAttempt | uni20::linalg::try_kernel (LapackBackend, nonsymmetric_eigen_op const &op, A &a, std::span< typename R::value_type > v, R &r, P... precision) |
| Unpack real conjugate pairs into complex columns; omit unread vector output when disabled. | |
| template<packed_detail::DecompositionMatrix A, class X , class Y , class... P> requires packed_detail::SameMatrixScalar<A, X> && packed_detail::SameMatrixScalar<A, Y> && packed_detail::QrScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> | |
| KernelAttempt | uni20::linalg::try_kernel (LapackBackend, qr_op const &, X &q, Y &r, A &a, P... precision) |
| Pack logical elements and compute reduced QR through MPLAPACK. | |
| template<class V , packed_detail::DecompositionMatrix A, class... P> requires packed_detail::EighScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> && packed_detail::DecompositionValues<V, A> | |
| KernelAttempt | uni20::linalg::try_kernel (LapackBackend, self_adjoint_eigh_op const &op, V &v, A &a, P... precision) |
| Read only the selected triangle and return values and optional vectors at p. | |
| template<class V , packed_detail::DecompositionMatrix A, class... P> requires packed_detail::SvdScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> && packed_detail::DecompositionValues<V, A> | |
| KernelAttempt | uni20::linalg::try_kernel (LapackBackend, singular_values_op const &op, V &v, A &a, P... precision) |
| Compute the requested SVD factors through logical host packing. | |
| template<class V , packed_detail::DecompositionMatrix A, class... P> requires packed_detail::SvdScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> && packed_detail::DecompositionValues<V, A> | |
| KernelAttempt | uni20::linalg::try_kernel (LapackBackend, svd_left_op const &op, V &v, A &a, P... precision) |
| Compute the requested SVD factors through logical host packing. | |
| template<class V , packed_detail::DecompositionMatrix A, class L , class... P> requires packed_detail::SameMatrixScalar<A, L> && packed_detail::SvdScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> && packed_detail::DecompositionValues<V, A> | |
| KernelAttempt | uni20::linalg::try_kernel (LapackBackend, svd_left_op const &op, V &v, L &l, A &a, P... precision) |
| Compute the requested SVD factors through logical host packing. | |
| template<class V , packed_detail::DecompositionMatrix A, class F , class... P> requires packed_detail::SameMatrixScalar<A, F> && packed_detail::SvdScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> && packed_detail::DecompositionValues<V, A> | |
| KernelAttempt | uni20::linalg::try_kernel (LapackBackend, svd_op const &op, V &v, F &f, A &a, P... precision) |
| Compute the requested SVD factors through logical host packing. | |
| template<class V , packed_detail::DecompositionMatrix A, class L , class R , class... P> requires packed_detail::SameMatrixScalar<A, L> && packed_detail::SameMatrixScalar<A, R> && packed_detail::SvdScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> && packed_detail::DecompositionValues<V, A> | |
| KernelAttempt | uni20::linalg::try_kernel (LapackBackend, svd_op const &op, V &v, L &l, R &r, A &a, P... precision) |
| Compute the requested SVD factors through logical host packing. | |
| template<class V , packed_detail::DecompositionMatrix A, class... P> requires packed_detail::SvdScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> && packed_detail::DecompositionValues<V, A> | |
| KernelAttempt | uni20::linalg::try_kernel (LapackBackend, svd_right_op const &op, V &v, A &a, P... precision) |
| Compute the requested SVD factors through logical host packing. | |
| template<class V , packed_detail::DecompositionMatrix A, class R , class... P> requires packed_detail::SameMatrixScalar<A, R> && packed_detail::SvdScalar<typename A::value_type> && packed_detail::KernelPrecision<typename A::value_type, P...> && packed_detail::DecompositionValues<V, A> | |
| KernelAttempt | uni20::linalg::try_kernel (LapackBackend, svd_right_op const &op, V &v, R &r, A &a, P... precision) |
| Compute the requested SVD factors through logical host packing. | |
| char | uni20::linalg::packed_detail::vector_job (SvdVectorExtent extent) |
Logical host adapters for value-converting dense decompositions.