Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
backend/mplapack/mpfr.hpp
Go to the documentation of this file.
1#pragma once
2
11#include <cstddef>
12#include <span>
14#include <vector>
15
16namespace uni20::mplapack
17{
21void gemm(std::size_t m, std::size_t n, std::size_t k, mpreal const& alpha, std::span<mpreal const> a,
22 std::span<mpreal const> b, mpreal const& beta, std::span<mpreal> c, Precision p);
24void gemm(std::size_t m, std::size_t n, std::size_t k, mpcomplex const& alpha, std::span<mpcomplex const> a,
25 std::span<mpcomplex const> b, mpcomplex const& beta, std::span<mpcomplex> c, Precision p);
26
30std::size_t getrf(std::size_t n, std::span<mpreal> a, std::vector<std::size_t>& pivots, Precision p);
32std::size_t getrf(std::size_t n, std::span<mpcomplex> a, std::vector<std::size_t>& pivots, Precision p);
34void getrs(std::size_t n, std::size_t nrhs, std::span<mpreal const> a, std::span<std::size_t const> pivots,
35 std::span<mpreal> b, Precision p);
37void getrs(std::size_t n, std::size_t nrhs, std::span<mpcomplex const> a, std::span<std::size_t const> pivots,
38 std::span<mpcomplex> b, Precision p);
40void qr(std::size_t m, std::size_t n, std::span<mpreal> a, std::span<mpreal> q, std::span<mpreal> triangular,
41 Precision p);
42
44void lq(std::size_t m, std::size_t n, std::span<mpreal> a, std::span<mpreal> q, std::span<mpreal> triangular,
45 Precision p);
46
49void eigh(std::size_t n, std::span<mpreal> a, std::span<mpreal> values, bool vectors, char triangle, Precision p);
50
55void svd(std::size_t m, std::size_t n, std::span<mpreal> a, std::span<mpreal> values, std::span<mpreal> u,
56 std::span<mpreal> vh, char jobu, char jobvt, Precision p);
57
61void eigen(std::size_t n, std::span<mpreal> a, std::span<mpcomplex> values, std::span<mpcomplex> vectors,
62 bool compute_vectors, Precision p);
63
65void qr(std::size_t m, std::size_t n, std::span<mpcomplex> a, std::span<mpcomplex> q, std::span<mpcomplex> triangular,
66 Precision p);
67
69void lq(std::size_t m, std::size_t n, std::span<mpcomplex> a, std::span<mpcomplex> q, std::span<mpcomplex> triangular,
70 Precision p);
71
73void eigh(std::size_t n, std::span<mpcomplex> a, std::span<mpreal> values, bool vectors, char triangle, Precision p);
74
76void svd(std::size_t m, std::size_t n, std::span<mpcomplex> a, std::span<mpreal> values, std::span<mpcomplex> u,
77 std::span<mpcomplex> vh, char jobu, char jobvt, Precision p);
78
80void eigen(std::size_t n, std::span<mpcomplex> a, std::span<mpcomplex> values, std::span<mpcomplex> vectors,
81 bool compute_vectors, Precision p);
82
86std::size_t gelss(std::size_t m, std::size_t n, std::size_t nrhs, std::span<mpreal> a, std::span<mpreal> b,
87 std::span<mpreal> values, mpreal const& cutoff, std::size_t& rank, Precision p);
90mpreal gecon(std::size_t n, std::span<mpreal const> a, mpreal const& anorm, char norm, Precision p);
94std::size_t gelss(std::size_t m, std::size_t n, std::size_t nrhs, std::span<mpcomplex> a, std::span<mpcomplex> b,
95 std::span<mpreal> values, mpreal const& cutoff, std::size_t& rank, Precision p);
98mpreal gecon(std::size_t n, std::span<mpcomplex const> a, mpreal const& anorm, char norm, Precision p);
99} // namespace uni20::mplapack
Definition cli.cpp:6
Definition binary80.cpp:16
void eigen(std::size_t n, std::span< float80 > a, std::span< complex160 > values, std::span< complex160 > vectors, bool compute_vectors, Precision p)
Compute unsorted complex eigenvalues and optional right eigenvectors, destroying a.
Definition binary80.cpp:248
void lq(std::size_t m, std::size_t n, std::span< float80 > a, std::span< float80 > q, std::span< float80 > triangular, Precision p)
Overwrite m-by-n input work and return Q (k-by-n) and L (m-by-k), k=min(m,n).
Definition binary80.cpp:231
std::size_t getrf(std::size_t n, std::span< float80 > a, std::vector< std::size_t > &pivots)
Factor a square binary80 matrix, returning zero or a one-based singular pivot.
Definition binary80.cpp:203
void eigh(std::size_t n, std::span< float80 > a, std::span< float80 > values, bool vectors, char triangle, Precision p)
Compute ascending eigenvalues and optionally overwrite a with eigenvector columns.
Definition binary80.cpp:237
std::size_t gelss(std::size_t m, std::size_t n, std::size_t nrhs, std::span< float80 > a, std::span< float80 > b, std::span< float80 > values, float80 const &cutoff, std::size_t &rank, Precision p)
Packed GELSS; B has max(m,n) rows, values has min(m,n) entries.
Definition binary80.cpp:285
void getrs(std::size_t n, std::size_t nrhs, std::span< float80 const > a, std::span< std::size_t const > pivots, std::span< float80 > b)
Solve from read-only binary80 LU factors and zero-based pivots.
Definition binary80.cpp:213
void gemm(std::size_t m, std::size_t n, std::size_t k, float80 const &alpha, std::span< float80 const > a, std::span< float80 const > b, float80 const &beta, std::span< float80 > c)
Packed column-major binary80 GEMM; provider representations stay private.
Definition binary80.cpp:193
void svd(std::size_t m, std::size_t n, std::span< float80 > a, std::span< float80 > values, std::span< float80 > u, std::span< float80 > vh, char jobu, char jobvt, Precision p)
Compute descending singular values and requested U/Vh factors, destroying a.
Definition binary80.cpp:242
float80 gecon(std::size_t n, std::span< float80 const > a, float80 const &anorm, char norm, Precision p)
Estimate reciprocal condition from packed successful LU and the original matrix norm.
Definition binary80.cpp:290
void qr(std::size_t m, std::size_t n, std::span< float80 > a, std::span< float80 > q, std::span< float80 > triangular, Precision p)
Overwrite m-by-n input work and return Q (m-by-k) and R (k-by-n), k=min(m,n).
Definition binary80.cpp:225
Definition data_table.cpp:8
mpreal norm(mpcomplex const &z)
Definition mpcomplex.hpp:494
mpreal beta(mpreal const &a, mpreal const &x)
Real Beta function; positive rational/integer pairs retain exact values.
Definition mpreal_special.hpp:164