|
Uni20
Asynchronous tensor and runtime library.
|
This directory contains public dense-matrix linalg operation wrappers. Operation values and diagnostic names are defined centrally in ../operation_tags.hpp.
contract.hpp: fixed-output pairwise Tensor contraction dispatch.gemm.hpp: fixed-output Tensor GEMM front end.gemv.hpp: fixed-output Tensor GEMV front end.linear_solve.hpp: destructive-workspace and preserving-value dense general linear solves.lq.hpp: destructive-workspace and preserving-value reduced real or complex LQ factorizations.lu.hpp: reusable owning LU factors and repeated solves.matrix_exponential.hpp: fixed-output matrix exponential dispatch.matrix_norm.hpp: dense maximum-entry, one, infinity, and Frobenius norms.matrix_product.hpp: fixed-update and resizable-overwrite Tensor matrix products over GEMM dispatch.matrix_set.hpp: structured matrix initialization over accessor-respecting CPU kernels.nonsymmetric_eigen.hpp: fixed-output nonsymmetric eigensystem dispatch.qr.hpp: destructive-workspace and preserving-value reduced real or complex QR factorizations.schur.hpp: fixed-output Schur decomposition and block-reordering dispatch.self_adjoint_eigh.hpp: destructive in-place, preserving value, and allocation-reusing consuming forms for dense symmetric/Hermitian eigensystems.slogdet.hpp: signed or complex-phase logarithmic determinants from a matrix or completed LU factors.svd.hpp: destructive, preserving, and storage-consuming exact dense SVD forms for singular values only, either factor separately, or both factors. Left and right singular-vector extents are independently reduced or full.truncated_svd.hpp: preserving and consuming reduced SVD with rank, cutoff, and discarded-weight policy plus stable truncation statistics.tridiagonal_eigen.hpp: symmetric tridiagonal eigensystem dispatch.TensorView const& form from consuming overloads constrained to mutable OwningTensor rvalues. Consuming compatible storage is an optimization permission, not part of the result contract; incompatible owners may still require materialization.eigh reuses directly addressable column-major and row-major host storage. A row-major square matrix is exposed to LAPACK through a column-major {1, LDA} mapping of the same allocation: the selected triangle is exchanged, and complex eigenvectors are conjugated in place after LAPACK. The returned mapping preserves a padded LDA and the storage container's unused tail. Mappings without a unit-stride axis still materialize.gesvd. singular_values, svd_left, svd_right, and svd request only the provider outputs they return. A preserving call materializes column-major work storage. A consuming call uses compatible input storage as destructive work and may adopt it as one reduced factor through ‘JOBU='O’orJOBVT='O'; full factors allocate separately.Reduced real or complex QR and LQ dispatch throughgeqrfwithorgqr/ungqr andgelqfwithorglq/unglq. Preservingqrandlqcalls materialize column-major work; qr_factorizationandlq_factorizationexpose the destructive workspace contract directly.Truncating SVD remains a Tensor policy layer over reduced exact SVD rather than a second provider operation. It returns right-sized factors, permits rank zero, and reports same-precision scaled squared-norm statistics.Bare mdspans calldispatch_kernel(selector, operation, operands...) directly; do not add operation-specific aliases for generic dispatch.Keep backend-specific implementation details in../backends`.