nk 1.0.0
C++ Numerical Computing Runtime
Loading...
Searching...
No Matches
matrix_functions.hpp
Go to the documentation of this file.
1
3// toolboxes/linalg/include/nk/linalg/matrix_functions.hpp
4//
5// Matrix functions: expm, logm, sqrtm. Migrated from
6// toolboxes/builtin/src/language/arrays/matrix.cpp.
7
8#pragma once
9
10#include <complex>
11#include <functional>
12#include <memory_resource>
13#include <string>
14#include <nk/value/value.hpp>
15
16namespace nk::linalg {
17
20
21
25Value expm(const Value &A, std::pmr::memory_resource *mr = nullptr);
26
28Value logm_sym(const Value &A, std::pmr::memory_resource *mr = nullptr);
29
31Value sqrtm_sym(const Value &A, std::pmr::memory_resource *mr = nullptr);
32
35Value sqrtm(const Value &A, std::pmr::memory_resource *mr = nullptr);
36
39Value logm(const Value &A, std::pmr::memory_resource *mr = nullptr);
40
43Value sylvester(const Value &A, const Value &B, const Value &C,
44 std::pmr::memory_resource *mr = nullptr);
45
55Value expmv(double t, const Value &A, const Value &v,
56 std::pmr::memory_resource *mr = nullptr);
57
60Value funm(const Value &A, std::function<std::complex<double>(std::complex<double>)> f,
61 std::pmr::memory_resource *mr = nullptr);
62
64Value funm(const Value &A, const std::string &fnName,
65 std::pmr::memory_resource *mr = nullptr);
66
67
69} // namespace nk::linalg
Core MATLAB-compatible multidimensional array and scalar value type.
Definition value.hpp:61
Value sqrtm(const Value &A, std::pmr::memory_resource *mr=nullptr)
Matrix square root for general square matrix A (R = sqrtm(A)).
Value logm(const Value &A, std::pmr::memory_resource *mr=nullptr)
Matrix logarithm for general square matrix A (L = logm(A)).
Value logm_sym(const Value &A, std::pmr::memory_resource *mr=nullptr)
Matrix logarithm for symmetric positive-definite A.
Value funm(const Value &A, std::function< std::complex< double >(std::complex< double >)> f, std::pmr::memory_resource *mr=nullptr)
General matrix function evaluator funm(A, fun).
Value expmv(double t, const Value &A, const Value &v, std::pmr::memory_resource *mr=nullptr)
Action of matrix exponential on a vector (w = expmv(t, A, v)).
Value sylvester(const Value &A, const Value &B, const Value &C, std::pmr::memory_resource *mr=nullptr)
Solve Sylvester equation A · X + X · B = C (X = sylvester(A, B, C)).
Value expm(const Value &A, std::pmr::memory_resource *mr=nullptr)
Matrix exponential (B = expm(A)).
Value sqrtm_sym(const Value &A, std::pmr::memory_resource *mr=nullptr)
Matrix square root for symmetric PSD A.