nk 1.0.0
C++ Numerical Computing Runtime
Loading...
Searching...
No Matches
svd_sketch.hpp
Go to the documentation of this file.
1
3// toolboxes/linalg/include/nk/linalg/svd_sketch.hpp
4//
5// svdsketch & svdappend: Randomized and Incremental SVD.
6
7#pragma once
8
9#include <memory_resource>
10#include <tuple>
11#include <nk/value/value.hpp>
12
13namespace nk::linalg {
14
17
18
21std::tuple<Value, Value, Value> svdsketch(const Value &A, double tol = 1e-6,
22 std::pmr::memory_resource *mr = nullptr);
23
26std::tuple<Value, Value, Value> svdappend(const Value &U, const Value &S, const Value &V,
27 const Value &A_new,
28 std::pmr::memory_resource *mr = nullptr);
29
30
32} // namespace nk::linalg
Core MATLAB-compatible multidimensional array and scalar value type.
Definition value.hpp:61
std::tuple< Value, Value, Value > svdsketch(const Value &A, double tol=1e-6, std::pmr::memory_resource *mr=nullptr)
Randomized low-rank SVD approximation ([U, S, V] = svdsketch(A, tol)).
std::tuple< Value, Value, Value > svdappend(const Value &U, const Value &S, const Value &V, const Value &A_new, std::pmr::memory_resource *mr=nullptr)
Incremental SVD update ([U, S, V] = svdappend(U, S, V, A_new)).