nk 1.0.0
C++ Numerical Computing Runtime
Loading...
Searching...
No Matches
page_ops.hpp
Go to the documentation of this file.
1
3// toolboxes/linalg/include/nk/linalg/page_ops.hpp
4//
5// Page-wise linalg ops on 3-D arrays. Wrappers that iterate over
6// pages and dispatch to the 2-D variant. The general page operators
7// (pagetranspose, pagectranspose, pagemtimes) stay in toolboxes/builtin —
8// they're basic tensor ops, not strictly linalg.
9
10#pragma once
11
12#include <memory_resource>
13#include <tuple>
14#include <nk/value/value.hpp>
15
16namespace nk::linalg {
17
20
21
25Value pageinv(const Value &A, std::pmr::memory_resource *mr = nullptr);
26
32Value pageeig_values(const Value &A, std::pmr::memory_resource *mr = nullptr);
33
37std::tuple<Value, Value>
38pageeig_VD(const Value &A, std::pmr::memory_resource *mr = nullptr);
39
41Value pagesvd_values(const Value &A, std::pmr::memory_resource *mr = nullptr);
42
44std::tuple<Value, Value, Value>
45pagesvd_decompose(const Value &A, std::pmr::memory_resource *mr = nullptr);
46
48Value pagepinv(const Value &A, double tol = -1.0,
49 std::pmr::memory_resource *mr = nullptr);
50
55Value pagenorm(const Value &A, double p, std::pmr::memory_resource *mr = nullptr);
56
61Value pagemldivide(const Value &A, const Value &B, std::pmr::memory_resource *mr = nullptr);
62
66Value pagemrdivide(const Value &A, const Value &B, std::pmr::memory_resource *mr = nullptr);
67
69Value pagelsqminnorm(const Value &A, const Value &B, bool have_tol, double tol_user,
70 std::pmr::memory_resource *mr = nullptr);
71
72
74} // namespace nk::linalg
Core MATLAB-compatible multidimensional array and scalar value type.
Definition value.hpp:61
Value pagepinv(const Value &A, double tol=-1.0, std::pmr::memory_resource *mr=nullptr)
Page-wise pseudo-inverse (B = pagepinv(A[, tol])).
Value pageeig_values(const Value &A, std::pmr::memory_resource *mr=nullptr)
Page-wise eigenvalues (e = pageeig(A)).
Value pagesvd_values(const Value &A, std::pmr::memory_resource *mr=nullptr)
Page-wise singular values (s = pagesvd(A)).
Value pagemrdivide(const Value &A, const Value &B, std::pmr::memory_resource *mr=nullptr)
Page-wise mrdivide (X = pagemrdivide(A, B)).
Value pageinv(const Value &A, std::pmr::memory_resource *mr=nullptr)
Page-wise inverse of a 3-D array (B = pageinv(A)).
Value pagenorm(const Value &A, double p, std::pmr::memory_resource *mr=nullptr)
Page-wise norm (y = pagenorm(A, p)).
std::tuple< Value, Value > pageeig_VD(const Value &A, std::pmr::memory_resource *mr=nullptr)
Page-wise eigendecomposition ([V, D] = pageeig(A)).
Value pagemldivide(const Value &A, const Value &B, std::pmr::memory_resource *mr=nullptr)
Page-wise mldivide (X = pagemldivide(A, B)).
std::tuple< Value, Value, Value > pagesvd_decompose(const Value &A, std::pmr::memory_resource *mr=nullptr)
Page-wise full SVD ([U, S, V] = pagesvd(A)).
Value pagelsqminnorm(const Value &A, const Value &B, bool have_tol, double tol_user, std::pmr::memory_resource *mr=nullptr)
Page-wise minimum-norm least-squares (X = pagelsqminnorm(A, B[, tol])).